Ombor operatori. Aqliy operator. Yechishning tuzilishi. Smart operator Navishto vikoristuvati aqlli operator

Dasturlarni yozish uchun faqat dasturlash tilini bilish yetarli emas. Har bir narsa oxirida to'g'ri ishlashi uchun yozilgan har bir narsaning tuzilishini tushunish va to'liq tushunish kerak. Bugun biz dasturda aqliy operator tushunchasini ko'rib chiqamiz. Bundan tashqari, operator ishlaydigan kodni hal qilish haqida foydali ma'lumotlar bo'ladi.

Viznachennya.

Shuningdek, aqliy operator barcha dasturlash dizaynining asosidir. Uning o'zi tayinlangan buyruqlarga kirish imkoniyatini beradi. To'g'ri, kimning aqli uchun haqiqat zarur yoki to'g'ridan-to'g'ri buyruq koristuvachga o'xshaydi.

Galuz zastosuvannya.

Danya Vikonanny jamoalari yoki jamoalari uchun qo'shiqchi onglari uchun zastosovuêtsya. Bezovtalik tufayli turg'unlik epizodlari mavjud. Bu to'g'ridan-to'g'ri dasturni belgilaydigan uchta asosiy tuzilmaga bo'linadi.

Ruhiy o'tish.

Ruhiy o'tish operatori tanlov tamoyiliga amal qiladi va aqlning haqiqati bilan bevosita bog'liqdir. Shunday qilib, dasturda bir qator yechim variantlari ko'rsatilganligi sababli, operatorning o'zi tanlashi mumkin, shundan so'ng to'g'ridan-to'g'ri harakat. Orqaga burilish teskari emas. Mantiqiy ifodaning haqiqati aqllar kodining mavjudligi, if so'zidan keyingi ma'nolar bilan tasdiqlanadi. Uning o'zi ko'pincha turli tillarda qo'llaniladi, bu tanlovning to'g'riligini ko'rsatadi. Agar birinchi element ongda ko'rsatilgan bo'lsa, jodugarlik uchun mos emas, keyin biz barcha kelgusi yozuvlarni ketma-ket, kaskadda tekshiramiz. Bu jarayon oson emas, shuning uchun hisobotingizni xabardor qiling.

Aqlli operatorlar shakllari.

Bunday rejaning faqat uchta shakli mavjud. Keling, teri robotini, keyin esa bir qo'li bilan eng oddiy operatorni ko'rib chiqaylik. Bu kodning oxirini ko'rsatadigan if buyrug'i, so'ngra tugatilishi kerak bo'lgan buyruqlar yoziladi va kodning oxirini ko'rsatadigan end. Jamoa boshidan oxirigacha butun marshrutni bosib o'tishi uchun mashina birinchi navbatda kodga tayinlangan aqllar turini va qayerga borishi kerakligini tekshiradi va mashina oxirigacha buyruqlarning keyingi qismini bajarishni boshlaydi.Intsya , belgilangan oxiri. Shunday assemblerlar borki, ular oxirgi so'zni ko'rsatmaydilar, ular so'zga xos bo'lgan barcha buyruqlarni diqqat bilan yozadilar. Ushbu yozuv shakli ham mavjud bo'lishi mumkin.

Kattaroq katlama varianti, ikkita dasturlash opsiyasi. Bu kod keyingi bosqichga o'xshaydi: agar so'zi, keyin keyingi so'z, keyin so'zidan keyin va keyingi buyruq buyrug'i, endi else buyrug'i yoziladi, shuning uchun birinchisi ketmaydi va hamma narsa tugaydi. Qaror dasturning oxirigacha turg'unlikdir. Agar birinchi miya muvaffaqiyatsiz bo'lsa va birinchi jamoa muvaffaqiyatsiz bo'lsa, dastur avtomatik ravishda ikkinchisini mag'lub qiladi. Bu harakat birinchisiga qaraganda samaraliroq.

Uchinchi variant - rivojlanish bo'lib, u bir qator aqllarni o'z ichiga oladi. Vín - bu yozuv bo'lsa, tanlangan aqllardan, keyin va zaruriy buyruq, undan keyin boshqa aql bo'lsa, birinchisi bormasa va keyin boshqa aqlga ergashish buyrug'i, bo'lmasa va boshqa aql boshqasidan ko'rsatiladi. Agar so'zlar keyin , siz yozishingiz mumkin va agar barcha kerakli miyalar tugasa, muxbir shunchaki miya bilan boshqa buyruq beradi, agar ortiqcha variantlardan chiqish yo'li bo'lmasa va buyruq tugaydi, shundan so'ng u bilan yopiladi. so'z oxiri.

Operator yalang'och tuzilmani supuradi va ularning barchasi ketma-ket tuziladi. Birinchi jamoa bilan yana boshlash.

Orqa tomonda "Paskal" filmi bor.

Eng aqlli operatordan foydalanish uchun eng mashhur dasturlarga amal qiling. Biz har kimni kechira olamiz va mehribon bo'lamiz. Kechirasiz, ular = kabi belgilar bilan ko'rsatilgan.<, >Va hokazo, agar a>=y bo'lsa, katlama yoziladi, keyin op:=Sqr(a-u) boshqa yoziladi, bu erda qabul qilinishi mumkin bo'lmagan ko'rsatkichlar kiritiladi.

Peremikach tushunchasi.

Peremikach - bu parametrlarning ko'rsatmalariga amal qiladigan zanjirli buyruq. Bu faqat bittasini tanlash o'rniga kamida ikkita pinni talab qiladi. Sharobning belgilangan parametrlarida aqllar va qo'shiqning vikonni mustaqil ravishda aralashtiriladi. Bunday parametrlardan foydalangan holda til aktlari matnlarga o'xshatishlari mumkin. Ushbu buyruq butun qiymatning turini aylantirish yoki qilmaslik uchun yuqoridagi tavsiflarda paydo bo'ladi.

Operatorni rivojlantirish.

Dastlab, aqliy operator buyruq sifatida harakat qildi, bu esa kerakli belgiga keyingi o'tishni anglatardi. Buyruq to'g'ri edi, u selektor sifatida paydo bo'ldi va o'tishning butun qiymati va ongini aylantirdi. Bu amalga oshirilgandan so'ng, ro'yxatdagi tegning raqami hisoblab chiqildi va mashina to'g'ridan-to'g'ri tayinlangan raqamni hisoblay boshladi. Ushbu dizayn shunga o'xshash tarzda ishlatilishi mumkin, masalan, BASIC va Fortranda. Hisoblash uchun boshqa qurilishni ishlatadiganlardan qat'i nazar, u hali ham samarali.

Aqliy operatorni yozishning hozirgi modeli oldindan buklangan va, shubhasiz, hisoblash soatida bir oz ahamiyatsiz. Kerakli manzillarga ega buyruqlar qatorini ketma-ket kiritish mavjud. Biridan ikkinchisiga g'azablangan o'tish belgi qiymatlari sonini hisoblash soatining mustaqilligini ta'minlaydi.

Hozirgi tillardagi Peremikach o'tish jadvali sifatida ham ishlatilishi mumkin. Mashinani belgilangan bo'laklarga o'tkazish uchun buyruqlar jadvali tuziladi. Buyruq registr yoki swithc bilan yoziladi va ba'zi hollarda ikkalasi bir vaqtning o'zida bo'ladi.

Ruhiy ifodalarni hisoblash mantig'i.

Mantiqiy tushunchalar oqimi mantiq tomonidan beriladi, simptomlar bilan teri tomonidan qabul qilinadi. Siz ikkitasini to'g'ridan-to'g'ri ko'rishingiz mumkin - tashqarida va tashqarida. Birinchidan, keyin barcha sozlamalar va parametrlarni ko'rib chiqing. Aks holda, barcha parametrlar hisobga olinadi va "haqiqiy" belgi keyingi buyruqni bildiradi. ABO bilan ishlaydi.

"vilka".
Men xafa bo'lyapman Bu hisoblash jarayoni uchun ko'plab mumkin bo'lgan variantlardan biri tanlangan algoritm deb ataladi. Teriga o'xshash yo'l deyiladi aqlli algoritm.

Algoritm nima sodir bo'layotganini miyani qaytarish operatsiyasining mavjudligini biladi. Aqlni sinashning eng keng tarqalgan usuli - agar aqliy operatordan foydalanish.

agar siz to'liq yoki notekis vilkalar shaklini tanlashingiz mumkin bo'lsa.

Teng bo'lmagan vilkalar paytlarida Umova rost, unda Bloklash operatsiyasi 1 vykonuetsya, yakscho Umova hibno, unda Bloklash operatsiyasi 1 ikkilanmang.

Yana bir bor vilkalar bor Umova to'g'ri, keyin kelishilgan bo'ladi Bloklash operatsiyasi 1 , aks holda u tugaydi Blok operatsiyalari 2 .

Bloklash operatsiyasi bir operatsiyada birlashtirilishi mumkin. Bunday holda, blokni chegaralaydigan shaklli kamarlarning mavjudligi majburiy emas.

C ustidagi dumba:

1
2
3
4
5
6
7
8
9
10
11
12
13
14


#o'z ichiga oladi
int main()
{
int k; // Men buni har doim aytaman k
printf("k="); // Bildirishnomani ko'rsatadi
scanf("%d", &k); // k qiymatini kiriting
agar (k >= 5) // agar k>5
printf("%d >= 5", k); // "VALUES > = 5" ni ko'rsatish
boshqa // boshqacha
printf("%d< 5" , k); // "VALUE" ni ko'rsatish< 5"
getchar(); getchar();
qaytish 0;
}


Vikonanny natijasi

if iborasi ichki joylashtirilishi mumkin.

C ustidagi dumba:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

#CRT_XAVFSIZ_OGOHLANTIRISHLARNI #aniqlang // mumkin foydalanish uchun scanf
#o'z ichiga oladi
#o'z ichiga oladi
int main() (
int kaliti;
tizim ("chcp 1251");
tizim ("cls"); // Konsol oynasini tozalang
printf();
scanf("%d", &key);
agar (kalit == 1) // bu erda kalit = 1
printf( "\nVibrano birinchi elementi"); // Bildirishnomani ko'rsatadi
Aks holda agar (kalit == 2) // aks holda kalit = 2
printf( "\nBoshqa element tanlandi"); // Bildirishnomani ko'rsatadi
boshqa // boshqacha
printf(); // Bildirishnomani ko'rsatadi
getchar(); getchar();
qaytish 0;
}

Vikonanny natijasi





If iborasining ichki shakli o'chirilsa, else varianti qolgan if operatoriga havola qiladi. Boshqa variantni yetakchi if iborasi bilan bog‘lash kerak bo‘lganda, ichki aqliy bayonot jingalak qo‘llarda paydo bo‘ladi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

#CRT_XAVFSIZ_OGOHLANTIRISHLARNI #aniqlang // mumkin foydalanish uchun scanf
#o'z ichiga oladi
#o'z ichiga oladi // Vikoristan funksiya tizimi uchun
int main() (
int kaliti; // butun kalitni ovoz
tizim ("chcp 1251"); // Rus konsoliga o'ting
tizim ("cls"); // Konsol oynasini tozalang
printf( "1 yoki 2-band raqamini kiriting:");
scanf("%d", &key); // O'zgartirish kalitining qiymatini kiriting
agar (kalit != 1) ( // agar kalit 1 ga teng bo'lmasa
agar (kalit == 2) // chunki kalit 2 dan katta
printf( "\nBoshqa element tanlandi"); // Ma'lumotlarning qisqacha mazmuni
} // agar kalit 1 emas va 2 bo'lmasa, hech narsa ko'rsatilmaydi
boshqa // aks holda, chunki kalit 1 dan katta
printf( "\nVibrano birinchi elementi"); // Ma'lumotlarning qisqacha mazmuni
getchar(); getchar();
qaytish 0;
}


Vikonanny natijasi





Uchlik operatsiyalar

Uchlik aqliy operatsiya U 3 ta argumentni oladi va birinchi operand tomonidan ko'rsatilgan mantiqiy ifoda qiymatiga qarab o'zining boshqa va uchinchi operandini aylantiradi. Tildagi uchlik amal sintaksisi

Umova? Viraz1: Viraz2;


Bu nima degani? Umova, keyin uchlik operatsiya aylanadi Viraz1, boshqa holatda - Viraz2 .

Aqliy operatsiyalar kabi uchlik operatsiyalar ham joylashishi mumkin. Qo'shish operatsiyalari uchun dumaloq qo'llar ishlatiladi.

Uchlik operatsiyalarning yaxshiroq namunasi bir qarashda sizga taqdim etilishi mumkin

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

#CRT_XAVFSIZ_OGOHLANTIRISHLARNI #aniqlang // mumkin foydalanish uchun scanf
#o'z ichiga oladi
#o'z ichiga oladi // Vikoristan funksiya tizimi uchun
int main() (
int kaliti; // butun kalitni ovoz
tizim ("chcp 1251"); // Rus konsoliga o'ting
tizim ("cls"); // Konsol oynasini tozalang
printf( "1 yoki 2-band raqamini kiriting:");
scanf("%d", &key); // O'zgartirish kalitining qiymatini kiriting
kalit == 1? printf( "\nVibrano birinchi elementi") :
(kalit == 2 ? printf( "\nBoshqa element tanlandi") :
printf( "\nBirinchi va boshqa elementlar tanlanmagan"));
getchar(); getchar();
qaytish 0;
}

Switch operatori (bir nechta tanlash operatori)

If iborasi ikkita variantdan birini tanlash imkonini beradi. Bir nechta variantlardan birini tanlash uchun if iborasidan foydalanish kerak. Ushbu usul yordamida siz switch operatoridan foydalanishingiz mumkin.

Ro'yxatdan o'tish shakli

kalit (Tsiliy Viraz)
{
Case Constant1: Blok operatsiyasi1;
sindirish;
Case Constant2: Blok operatsiyasi2;
sindirish;
. . .
case Constant: Blok bilan ishlash;
sindirish;
sukut bo'yicha: ishlov berish uchun operatsiyalar bloki;
sindirish;
}

Kommutator operatori quyidagicha yoziladi:

  • hisoblansin TsiliyViraz switch bayonotining qo'llarida;
  • O'chirilganda, qiymatlar belgilarga to'g'ri keladi ( Konstantalar ) holat variantlarida tekislash butun virusning hisoblangan qiymatiga mos keladigan belgi topilgunga qadar amalga oshiriladi;
  • rozilik bildiradi Bloklash operatsiyasi hol;
  • Agar tegishli belgi topilmasa, u ko'rsatiladi Yuvish uchun operatsiyalar bloki standart variantdagi tavsiflar.

Standart muqobil kunlik bo'lishi mumkin, shuning uchun siz kundalik faoliyatingizni behuda sarflashingiz shart emas.
Variantlarni buzish; Ishlaydigan narsa bu switch bayonotidan chiqish va undan keyingi operatorga o'tish. Tanaffus opsiyasi ushbu yorliq bilan belgilanganidan boshlab va standart variant bayonoti bilan tugaydigan barcha bayonotlarni o'z ichiga oladi.

Variantlar butun son turi bo'lishi mumkin bo'lgan konstantalar (ular belgilar bo'lishi mumkin).

Aqlli operatorlar O'zingizning fikringizga qarab dasturning ushbu va boshqa qismlarini tahrirlashni tanlashga ruxsat bering. Agar, masalan, dasturda x va z nutq o‘zgaruvchilari ishlatilsa va topshiriqning har bir bosqichida z=max(x, y) ni hisoblash zarur bo‘lsa, u holda natija yoki tayinlash operatori z:= natijasi bo‘ladi. x yoki tayinlash operatori z :=y. X va y o'zgaruvchilarining qolgan qiymatlari ilgari noma'lum, ammo hisoblash jarayonida aniqlanadi, keyin dastur huquqbuzarlikni tayinlash operatoriga o'tkazishi kerak. Biroq, ulardan biri aslida tugashi mumkin. Shuning uchun, dasturda siz tayinlash uchun boshqa operatorni tanlashingiz kerak bo'lganlar haqida eslatma bo'ladi.

Bu ifodani tabiiy ravishda x>y yovuz munosabat bilan shakllantirish mumkin. Bu munosabat x va y ning aniq qiymatlari uchun amal qilganligi sababli (u true qiymatini oladi), hisoblash uchun z:=x operatorini tanlash kerak. Boshqa holatda z:=y operatori tanlanishi kerak (x=y uchun bir xil operator, shuning uchun bu holda z:=y operatorini tanlash to'g'ri natija beradi).

Muhokama qilinadigan shunga o'xshash hisoblash jarayonlarini yaratish uchun tilda dasturlash mavjud aqlli operatorlar. Keling, yana bir bor ko'rib chiqaylik miya operatori Paskal:

agar B keyin S1 boshqa S2

Bu yerga agar(yakscho), keyin(bular) men boshqa(aks holda) xizmat so'zlarida, U- Ko'proq mantiqiy ifoda, lekin S1і S2- Operatorlar.

Bunday aqliy operatorning Paskaldagi formulasi keyingisidan oldin kiritilgan S1 yoki S2 operatorlaridan birining belgisiga keltiriladi: agar u aql operatorida ko'rsatilgan bo'lsa, u birlashtiriladi (mantiqiy ifoda B). true qiymatini qabul qiladi), keyin S1 operatori, boshqa holatda esa S2 operatori birlashtiriladi.

z = max(x, y) ni hisoblashning asosiy vazifasini yechish algoritmi shaklda ko'rsatilishi mumkin. Paskalning aqliy operatori

agar x>y keyin z:= x boshqa z:=y

Algoritmlarni shakllantirishda hatto odatiy holdirki, agar hisoblash jarayonining birinchi bosqichida faqat fikrni o'zgartirish zarurati tug'ilsa va bu fikr o'zgarmasa, bu bosqichda har bir narsadan voz kechish shart emas. kun. Bunday vaziyatning eng oddiy misoli o'zgaruvchining oqim qiymatini ushbu qiymatning mutlaq qiymati bilan almashtirishdir: x<0, то необходимо выполнить оператор присваивания x:= - x; если же x>=0 bo'lsa, u holda x ning aynan qiymati o'zgarishsiz yo'qolishi mumkin. Ushbu bosqichda hech qanday harakatni tugatishning hojati yo'q.

Bunday holatlarda Paskalda aqliy operatorni yozish shakli qo'lda qisqartiriladi:

agar B keyin S

Qisqartirilgan Vikonanny qoidasi Paskalning aqliy operatori aniq: yakscho mantiqiy ifodaning qiymati rost, Bu S operatori birlashtiriladi; V aks holda Boshqa harakatlar yo'q.

Siz o'rtasida aqliy operator Paskal dasturlash bor keyinі boshqa, va keyin ham boshqa Sintaksisning orqasida kamida bitta operator bo'lishi mumkin. Agar sizda ko'rsatilgan (yoki tuzilmagan) aqlingiz bo'lsa, siz harakatlar ketma-ketligini aniqlashingiz kerak va ular bitta ombor operatoriga birlashtirilishi kerak, keyin. operatorning kamonida ushbu harakatlar ketma-ketligini tartibga soling boshla... tugaydi (bu muhim!). Masalan, x da< y надо поменять местами значения этих переменных, то miya operatori Paskalining yaqinlashib kelayotgan marosimida yoziladi:

agar x keyin boshlash r:=x; x:=y; y:=r oxiri

Qisqartirilgan shaklning mavjudligi Paskalning aqliy operatori Favqulodda vaziyat vaqtida juda ehtiyotkorlik talab qiladi. Masalan, aqlli operator

agar B1 keyin agar B2 keyin S1 boshqa S2

aftidan, ikki xil talqin qilish imkonini beradi:

  • yak Paskalning yangi aqliy operatori aql

agar B1 keyin boshlang
agar B2 keyin S1 oxiri
boshqa S2

  • yak Paskal stenografiya operatori aql

agar B1 keyin boshlang
agar B2 keyin S1 boshqa S2 oxiri

Paskal qoidalari ortida yana bir talqin bor. teri so'zini hurmat qiling boshqa birinchi so'zga o'xshaydi keyin. Mumkin bo'lgan kesishlar va tushunmovchiliklarning o'ziga xosligi uchun barcha bunday hollarda banan shaklini aniq ko'rish tavsiya etiladi. Paskalning aqliy operatori operator xonasida kamonlarni olish yo'li.

Paskal tanlash operatori

Paskal tanlash operatori Ko'p mumkin bo'lgan davomiy dasturlardan birini tanlash imkonini beradi. Tanlovga ta'sir qiluvchi parametr tanlovning kalitidir - har qanday tartibli turdagi.

Paskalining tanlash operatorining tuzilishi quyidagicha:

Case<ключ_выбора>ning
<список_выбора>
oxiri

Bu yerga case, of, else, end– ajratilgan so‘zlar (vypadok, aks holda, end);

  • <ключ_выбора>- tartibli turdagi viraz;
  • <список_выбора>- bir yoki bir nechta dizayn turlari:
    • <константа_выбора>: <оператор>;
  • <константа_выбора>- viraz bilan bir xil turdagi konstanta
    • <ключ_выбора>;

<операторы>- Ko'proq Paskal operatorlari.

Paskalni tanlash operatori shu tarzda ishlaydi. Virusning qiymati boshidan boshlab hisoblanadi<ключ_выбора>, keyin esa ketma-ketlikda<список_выбора>Hisoblangan qiymatga teng bo'lgan doimiyni toping. Topilgan konstantadan keyingi operator tanlanadi, shundan so'ng tanlangan operator ishni yakunlaydi. Agar tanlash ro'yxatida tanlash kalitining hisoblangan qiymatiga mos keladigan konstanta bo'lmasa, qiymat else so'zidan keyingi operatorlarga uzatiladi. Boshqa qism<оператор_иначе>o'tkazib yuborilishi mumkin, keyin ro'yxatda kerakli konstantani tanlash uchun hech narsa yo'qligi sababli, kerakli harakatlarni tanlash bilan hech qanday aloqasi yo'q va tanlash operatori shunchaki o'z ishini yakunlaydi.

Masalan, ekranda yil kunining sonini ko'rsatish uchun dastur tuzamiz:

Wikoristanny Case of dan Butt dasturi

dni_nedeli dasturi;
Var n: bayt;
Boshlanishi
Readln(n);
Case n dan
1: writeln("Dushanba");
2: writeln("Seshanba");
3: writeln("o'rta");
4: writeln("to'rt");
5: writeln("Juma");
6: writeln("Shanba");
7: writeln("hafta");
boshqa writeln("tug'ilgan kun raqami", n, "ni");
  oxiri;
oxiri.

Tanlov ro'yxatidagi barcha konstantalar boshqacha bo'lishi mumkinligini yodda tuting.

Tanlash ro'yxatidagi istalgan operatorga bitta emas, balki koma bilan ajratilgan ko'plab tanlash konstantalari tayinlanishi mumkin. Masalan, “y” yoki “Y” belgilaridan biri kiritilganda dastur boshlanadi, ekranda “So” ko‘rsatiladi, “n” yoki “N” kiritilganda esa “Ni” so‘zi ko‘rsatiladi.

Vikoristanny dasturlari misoli Ko'p o'zgarishlar bilan

Var ch: char;
Boshlanishi
Readln(ch);
Case ch of
N, n: writeln("Shunday");
Y, y: writeln("Ni");
Oxiri;
Oxiri.

Shubhasiz, ko'rib chiqilayotgan dasturlarning aksariyati qo'shimcha kirishlar yoki ketma-ket kengaytirilgan aqliy operatorlar bilan yozilishi mumkin, ammo shunga o'xshash vazifalarda operatorni tanlash osonroq. Aqliy operatorning tanlash operatoriga nisbatan asosiy ahamiyati shundan iboratki, aqliy operatorda aqllar birma-bir tekshiriladi va kalitning qiymatini tanlash operatorida tanlash to'g'ridan-to'g'ri imkoniyatlardan birini anglatadi.

Laboratoriya roboti

Mavzu bo'yicha: " Aql operatori agar - boshqa "


1. Ko‘zda tutilgan sintaksis

Aqlning operatori if-else to'g'ridan-to'g'ri dasturlarning robotlarini hozirgi vaqtda dasturlarda shu nuqtada shakllangan onglarga asoslangan holda tanlashga xizmat qiladi.

Aqliy operatorni ro'yxatga olish uchun odatiy shakl

agar ( <условие>)

<блок операторов 1>;

<блок операторов 2>;

Yakshcho Vikonanniy davrida<условие>To'g'ri, dastur boshqaruvni o'tkazadi<блоку операторов 1>va birinchi operatorga chegaralar orasidagi if-else konstruktsiyasini berdi. Bu bilan<блок операторов 2>ikkilanmang. Aks holda, baribir<условие>hybno, vikonivatsya<блок операторов 2>, A<блок операторов 1>o'tkazib yubordi. Yuqori darajadagi blok diagrammasi


If-else operatori sintaksisidagi qo'llarning shakllari matnda 1 va 2-bloklarni ko'rinadigan qilish uchun ishlatiladi.Dastur kodini o'qishni osonlashtirish uchun yopiladigan va ochiladigan qo'lni kengaytirishga harakat qiling. Matnni jingalak qo'llarning o'rtasida belgilash uchun o'ng qo'lni to'piq holatiga o'tkazish kerak.

Darhaqiqat, if-else iboralarida "to'g'ri" yoki "noto'g'ri" (to'g'ri - noto'g'ri) qiymatlarni keltirib chiqaradigan ba'zi mantiqiy iboralar bo'lishi mumkin. Quyida butun va faol sonlarni tekislashning eng oddiy operatsiyalari ma'nosi bo'lgan jadval mavjud

dumba 1. Tselsiy shkalasi bo'yicha TC (°C) haroratni Kelvin shkalasi bo'yicha T K (K) haroratga aylantirish dasturini yozish kerak. TC qiymatlari foydalanuvchi tomonidan klaviaturadan kiritiladi.

Qaror. Transformatsiya uchun Vikorist formulasi T K = T C - T 0 de T 0 = -273 ° C - mutlaq nol harorat. Kiritilgan T C noto'g'ri, chunki u T 0 dan kam.

// – Kelvinv Selsiy –

#o'z ichiga oladi // oqimli kiritish-chiqarish uchun

#o'z ichiga oladi // konsol kiritish/chiqarish uchun (olish)

#pragma argused

floatT0 = -273; // Ovozli va ishga tushirilgan T0

floatTc, Tk; // baland ovozli nutq Tc va Tk

cout<<» VvediteTc=»; // выводим приглашение

cin>>Tc; // Tc tomonidan quvvatlanadi

agar ( Tc < T 0) // ongni tekshiring Tc

cout<<» Tc < T0!»; // условие истинно, выводим на

} // ogohlantirish haqida bildirishnoma ekrani

Tk = Tc-T0; // Umova hibna, rozrahovuyemo

cout<< «Tk =» << Tk; // Tk и выводим на экран

getch(); // Tugma bosilmaguncha qirqish

qaytish 0; // Dasturni tugating

Quyidagi kodni kiriting, uni kompilyatsiya qiling va dasturni hisobingizda ishga tushiring. T C ning turli qiymatlari bilan ish natijalariga rioya qiling.

2. Qisqaroq yozib olish imkoniyatlari

Dasturlashtirilganda, har kuni shakllangan onglarda harakat talab qilinadigan vaziyat mavjud (masalan, bank buxgalteridan noto'g'ri ma'lumotlarni olib tashlashda, dasturlarni o'zgartirish va chiqish haqida bildirishnomalarni ko'rasiz). Ba'zan C++ dasturlarida zehn operatori uchun else blokli yorliq bo'lishi mumkin. Bunday yozuvning rasmiy shakli

agar ( <условие>)

<блок операторов>;

Bu erda, aqlning haqiqatiga erishilgandan so'ng, davolash jingalak qo'llardagi operatorlar blokiga o'tkaziladi. Aql yumshoq bo'lsa, blok o'tkazib yuboriladi. Ushbu blok diagramma bitta "qo'l" ning old qismiga bo'lingan


Agar if yoki else bloklaridan biri faqat bitta bayonotdan iborat bo'lsa, boshqa variant tezda qotib qoladi. Ushbu turdagi blokni chegaralash uchun shakllangan qo'llarning yo'qligiga imkon beradi.

agar ( <условие>)

operator 1;

operator 2;

Bu erda 1 va 2 operatorlar nafaqat oddiy bir qatorli arifmetik amallar, balki kiritish-chiqarish operatorlari, balki murakkab ko'p qatorli konstruktsiyalar, masalan, boshqa (ichiga joylashtirilgan) operatorlar yoki tsikl operatorlari bo'lishi mumkin, ular quyida muhokama qilinadi. nima?

3. Ichki o‘rnatilgan operatorlar

Aql operatorlari ular amalga oshiradigan dasturiy ta'minot algoritmiga qarab birma-bir sarmoya kiritilishi mumkin. Ularning "investitsiyalari" ning etarli darajasiga ruxsat beriladi.

Agar bitta if-else ifodasi boshqasiga joylashtirilgan bo'lsa, birinchi ifoda boshqasiga kiritiladi Men tushuntiraman, va faqat agar yoki boshqa emas. Qo'shni bloklarning tez-tez bir-birining ustiga chiqishi qabul qilinishi mumkin emas.

Yuqoridagi ilova operatorlardan biriga (qalin shrift bilan ko'rsatilgan) ikkinchisiga hissa qo'shishga ega. B yozuvi) ichki operatorning else bloki tashqi operatorning if va else bloklari bilan tez-tez bir-biriga mos keladiganlarni kechiraylik.

dumba 2. Koristuvach klaviaturadan uchta butun a, b, c sonlarni kiriting. Ekranda iloji boricha ko'proq raqamlarni ko'rsatish kerak.

Qaror. Keyingi blok diagrammada o'qishni eng yuqori sozlash uchun mumkin bo'lgan algoritmlardan biri.


Sxema qo'shimcha if-else iboralari yordamida dasturli tarzda amalga oshirilishi mumkin

// - 3 ta raqamdan eng kattasini tanlang -

#o'z ichiga oladi

#o'z ichiga oladi

#pragma argused

int main (int argc, char* argv)

float a, b, c; // Biz uchta o'zgarishlarni e'lon qilamiz

cout<< «Vvedite a –»; // вводимзначения a, b, c

cout<< «Vvedite b –»;

cout<< «Vvedite c –»;

agar (a>b) // agar a > b

agar (a> c) // agar a> c

cout<<» max = «<

boshqacha // aks holda, keyin. yakscho a<= с

cout<<» max = «<

boshqacha // aks holda, keyin. yakscho a<= b

agar (b>c) // agar b > c

cout<<» max = «<

boshqacha // aks holda, keyin. yakscho b<= а

cout<<» max = «<

getch(); // Har qanday tugma bosilmaguncha quriting

Uning algoritmi va dasturiy ta'minotini amalga oshirishning blok-sxemasini chizing. Uchta sondan eng kichigini topish uchun algoritm va dastur kodini o'zgartiring.

4. Ombor mantiqi

If-else iborasining mentaliteti ikkita raqamli qiymatni oddiy tenglashtirish sifatida ifodalanishi mumkin. Masalan, hatto matematikada "a" shaklida yozilgan kengaygan aqllar ham.< b < c». Запись означает, что значение b лежит в диапазоне между значениями a и c. В программе такие условия должны быть переформулированы с использованием простых операций сравнения и логических операций «И», «ИЛИ», «НЕ»

Zokrema, viraz "a< b < c» сформулируем как «a меньше b, и b меньше c». На С++ это будет записано как (a

agar ((a

dumba 3. Bo'sh shaxmat taxtasida oq piyon (n, m) va qora episkop (k, l) holatidadir. Bu erda birinchi koordinata - o'yin bosqichining raqami, ikkinchisi - qatorning raqami (u 1 dan 8 gacha o'zgaradi). Mavjud vaziyatni uchta variantdan foydalanib baholang

Pishak hujum ostida,

Fil hujum ostida,

Fil va pike muammoga duch kelishdi.

Qaror. Esda tutaylikki, piyon o'ziga eng yaqin ikkita pozitsiyaga diagonal oldinga hujum qilishi mumkin, episkop esa qarama-qarshi yo'nalishda diagonallarini buzgan holda hujum qiladi. Yulduzlar o'z fikrlarini shakllantirishlari mumkin

· “(k = n+1) ABO (k = n-1)) I (l = m+1)” - pishning episkopga hujumi,

· “(k+l = n+m) ABO (k-l = n-m)” - episkopning piyonga hujumi,

· uysizlar uchun turli raqamlar.

// - Shohning kompozitsiyasi -

#o'z ichiga oladi

#o'z ichiga oladi

int main (int argc, char* argv)

cout<<«Koordinaty beloi peshki:«<

cout<<» vvedite n –»;

cout<<» vvedite m –»;

cout<<«Koordinaty chernogo slona:«<

cout<<» vvedite k –»;

cout<<» vvedite l –»;

if((k==n+1)||(k==n‑1))&&(l==m+1)) // episkopga hujum qilsa

cout<

if((k+l==n+m)||(k-l==n-m)) // piyonga hujum qilinadi

cout<

boshqa // hujum yo'q

cout<

Biz Paskal dasturlash tilidan foydalanishda davom etamiz. Keling, algoritmik dizaynni ko'rib chiqaylik, u qanday ishlaydi umova (rozgaluzhennya). Maqola boshlang'ich dasturchilar uchun, shuningdek, kompyuter fanlari o'quvchilari uchun mo'ljallangan. Quyidagi statistika bilimlaringizni mustahkamlashga va o'zingizni tekshirishga yordam beradi.

UMOV ning algoritmik dizayni biz tanlovga duch kelganimizda qo'llaniladi: buni u yoki bu tarzda bajaring.

Umova gurkirab:

  1. Nepovne
  2. Povne

Nepovna Umova

Tabiiy bo'lmagan aqlning blok diagrammasi quyidagicha ko'rinadi:

Nepovna Umova

YAKSCHO BUNI TO'G'RI, deb o'ylang VIKONAYA DIYA, aks holda HECH NARSA KO'RILMAYDI

Paskal tilida algoritmik dizayn quyidagicha ko'rinadi:

Aqlingiz bo'lsa, harakat qiling;

Sizningcha, nimadan keyin bunga arziydi? AGAR haqiqatan ham KEYIN.

Buning nimasi yomon?

Umova - bu haqiqat yoki yolg'on bo'lishi mumkin bo'lgan viraza. Umova mantiqiy operatorlardan foydalanishi shart <, >, =, <=, >=, <>(bog'liq emas).

Masalan:

a=7 bo'lsa writeln("Salom!"); oxiri.

O'zgartirish qiymati kiritilgandan so'ng a bitta 7 , keyin biz ekranda so'zni ko'ramiz Vitannya! Agar bunday bo'lmasa, u holda ekranda hech narsa ko'rsatilmaydi.

Keling, yana bir misolni ko'rib chiqaylik:

var a:integer; o'qishni boshlash (a); a=7 bo'lsa writeln("Salom!"); writeln("Oxirigacha"); oxiri.

7 raqamini kiritganimizda ekranda nimani ko'rishimiz mumkin? Pobachimo:

Vitannya!
Zustrichagacha

10 raqamini kiritganingizda ekranda nimani ko'rishingiz mumkin?

Zustrichagacha

Nega shunday? Chomu Zustrichagacha har qanday yigitning ekranida ko'rsatiladimi? Jamoa

writeln("Oxirigacha");

bezovta qilmang If-Then konstruktsiyasiga

var a:integer; o'qishni boshlash (a); a=7 bo'lsa writeln("Salom!"); writeln("Oxirigacha"); / / ong ko'k rang bilan yoritilgan oxiri.

Buni qanday qilish kerak, shunda haqoratli harakatlar If-Then tuzilishi oldida bo'ladi?

Buni shunday nom bilan tartibga solish kerak operator qo'llari: boshlash ... tugash;

var a:integer; o'qishni boshlash (a);

a=7 bo'lsa boshlanishi writeln("Salom!");

Writeln("Nuqtaga");
oxiri;

oxiri.
Endi, agar biz 10 raqamini kiritsak, ekranda boshqa hech narsa yo'q.

Katlanadigan (katlanadigan) aql

Ba'zida shunday bo'ladiki, mening aqlim yaxshi. Ushbu katlama uchun mantiqiy havolalar qo'llaniladi: va yoki yana yoki.

  • Yakshcho mi vikoristovuyemo va, unda aqlning ombori haqiqat bo'ladi, agar hamma oddiy aqllar rost bo'lsa.
  • Yakshcho mi vikoristovuyemo yoki, u holda aqlning ombori haqiqat bo'ladi, agar oddiy aql haqiqat bo'lishni xohlasa.

Masalan:

a>7і a<15 Paskal tili uchun ro'yxatdan o'ting

(a>7) va (a<15)

tobto. aybdor aqllarni xafa qilish bir zumda hal qilinadi, shunda aqllar ombori haqiqatdir.

(a=7) yoki (a>15)

Aqlning ombori haqiqat bo'ladi, chunki: yoki a=7, yoki a>17.

Zavdannya:

If-Then konstruktsiyasidan foydalanib, kiritilgan uchta sonning maksimal o'rtacha qiymatini toping.

Qaror

var a, b, c:integer; o'qishni boshlash (a); readln(b); readln(c); agar (a>b) va (a>c) unda writeln("raqam", a, "maksimal"); agar (b>a) va (b>c) then writeln("raqam", b, "maksimal"); agar (c>a) va (c>b) then writeln("raqam", c, "maksimal"); oxiri.

Povna Umova

Butun oqim sxemasi quyidagicha ko'rinadi:

AGAR umova KEYIN diu_1 BOSHQA diu_2;

  • Yakshcho aql haqiqatdir, keyin so'zdan keyin turgan harakat tugaydi Keyin.
  • Yakshcho umova hibna, keyin so'zdan keyin turgan harakat tugaydi Boshqa.

Siz qanday harakat qilasiz, qanday qaror qilasiz, bu haqda qanday fikrdasiz, bu qanday? — Operatorning qo'llari zabt etilmoqda.

agar Umova keyin boshlanishi diya; diya;............... oxiri boshqa boshlanishi diya; diya; ................ oxiri;

(boshqasidan oldin nuqta qo'ymang)

Mustaqil g'olib uchun zal:

  1. Xarid miqdori qo'shiladi A karbovansiv. Yakshcho A 1000 rubldan ortiq, keyin 15% ga pasayish kutilmoqda. Ekranda chegirmali xaridlar miqdorini yoki chegirmaga ega bo'lmaganlar haqida ma'lumotni ko'rsating.
  2. Ko'rinish kvadrat va kvadrat. Ahamiyati:
    • Kvadratga qancha sig'ishi mumkin?
    • Qancha kvadrat sig'ishi mumkin?
  3. Muhimi, chi - bu raqam A raqamning sanasi b
  4. Klaviaturadan kiritilgan raqam (-5;3) oralig'ida yoki yo'qligini tekshiring.
  5. Ikki xonali raqam berilgan. Ahamiyati:
    • chi yangi 3 raqamigacha kiriting
    • chi yangi raqamga qadar kiriting A
  6. Bu a, b, c tomonlari teng yon tomonli trikupu ekanligini bildiradi
  7. Uch xil raqam berilgan. Ahamiyati, ular orasida yake (birinchi, ikkinchi va uchinchi)
    • eng
    • kamida
    • ê o'rta

(ro'yxat tez orada yangilanadi)

Ishlamayapti