Си тилида дастурлаш



Download 4,3 Mb.
bet4/9
Sana21.03.2022
Hajmi4,3 Mb.
#505065
1   2   3   4   5   6   7   8   9
Bog'liq
Cи тилида дастурлаш (Назиров Ш.А)

Си тилида дастурлаш

  • 6-Мавзу. Цикллар
  • © Ш.А. Назиров, 2011
  • Цикллар
  • Цикл – бу бир хил кетма-кетликда бажариладиган кўпқиррали харакат.
    • Маълум қадамлар сонидаги цикл
    • Номаълум қадамлар сонидаги цикл (шартли цикл)
  • Масала. Бутун сонларнинг квадратларини ва кубларини экранга чиқаринг 1 дан 8 гача (a дан b гача).
  • Хосса: бир хил харакатлар 8 марта бажарилади.
  • Маълум усуллар билан ечиш мумкинми?
  • ?
  • Алгоритм
  • боши
  • i, i2, i3
  • тамом
  • йўқ
  • ха
  • i <= 8?
  • i = 1;
  • i = i + 1;
  • i2 = i * i;
  • i3 = i2 * i;
  • Ўзгаривчи циклнинг бошланғич қийматини бериш
  • Хаммаси бажарилдими,текшириш
  • квадрат ва кубни хисоблаймиз
  • Натижани чиқариш
  • кейинги iга ўтиш
  • Алгоритм ("цикл " блоки )
  • боши
  • i, i2, i3
  • тамом
  • i2 = i * i;
  • i3 = i2 * i;
  • i = 1,8
  • "цикл" блоки
  • Цикл танаси
  • Дастур
  • void main()
  • {
  • int i, i2, i3;
  • for (i=1; i<=8; i++)
  • {
  • i2 = i*i;
  • i3 = i2*i;
  • printf("%4d %4d %4d\n", i, i2, i3);
  • }
  • }
  • for (i=1; i<=8; i++)
  • {
  • i2 = i*i;
  • i3 = i2*i;
  • printf("%4d %4d %4d\n", i, i2, i3);
  • }
  • ўзгарувчи цикл
  • Бошланғич қиймат
  • Охирги қиймат
  • Хар бир i қадамдаги ўзгариш:
  • i=i+1
  • цикл работает, пока это условие верно
  • цикл
  • Цикл боши
  • Цикл охири
  • Цикл сарлавхаси
  • for (i=1; i<=8; i++)
  • i2 = i*i;
  • i3 = i2*i;
  • printf("%4d %4d %4d\n", i, i2, i3);
  • Цикл танаси
  • Ўзгарувчиларни камайиш цикли
  • Масала. Бутун сонларни кубларини ва квадратларини экранга чиқаринг 8 дан 1гача (камайиш тартибда).
  • Хосса: ўзгарувчи цикл камайиши керак.
  • Ечим:
  • for ( )
  • {
  • i2 = i*i;
  • i3 = i2*i;
  • printf("%4d %4d %4d\n", i, i2, i3);
  • }
  • i = 8; i >= 1; i --
  • Ўзгарувчан цикл
  • for (бошланғич қиймат;
  • циклни давом эттириш шарти;
  • хар бир қадамдаги ўзгариш)
  • {
  • // цикл танаси
  • }
  • Мисоллар:
  • for (a = 2; a < b; a+=2) { ... }
  • for (a = 2, b = 4; a < b; a+=2) { ... }
  • for (a = 1; c < d; x++) { ... }
  • for (; c < d; x++) { ... }
  • for (; c < d; ) { ... }
  • Ўзгарувчан цикл
  • Хосса:
    • Шарт циклнинг кейинги қадами бошланишидан олдин текширилади,агар у ёлғон бўлса цикл бажарилмайди;
    • ўзгартириш (сарлавханинг учинчи қисми) циклнинг навбатдаги қадамининг охирида бажарилади;
    • Агар шарт ёлғон бўлмаса цикл тшхтовсиз ишлаши мумкин (цикл ичига тушиб қолади)
    • Агар цикл танасида битта оператор бўлса, қавсни {} қўймаса ҳам бўлади:
  • for(i=1; i<8; i++) { i--; }
  • for (i = 1; i < 8; i++) a += b;
  • Цикл танасида цикл ўзгарувчиларини ўзгартириш тавсия этилмайди!
  • !
  • for (i=8; i>=1; i--) printf("Привет");
  • printf("i=%d", i);
  • Ўзгарувчан цикл:
  • Хоссалари:
    • Кўп схемаларда цикл бажарилишидан сўнг ўзгарувчан циклнинг шарти бузилган ҳолдаги биринчи ифодаси киритилади:
  • for (i=1; i<=8; i++) printf("Привет");
  • printf("i=%d", i);
  • i=9
  • i=0
  • Цикл неча маротаба такрорланмоқда?
  • a = 1;
  • for(i=1; i<4; i++) a++;
  • a = 4
  • a = 1; b=2;
  • for(i=3; i >= 1; i--)a += b;
  • a = 7
  • a = 1;
  • for(i=1; i >= 3; i--)a = a+1;
  • a = 1
  • a = 1;
  • for(i=1; i<= 4; i--)a ++;
  • Цикл ичида қолиш
  • a = 1;
  • for(i=1; i<4; i++) a = a+i;
  • a = 7
  • Вазифа
  • "4": а ва b ни киритинг, ҳамда квадратлари ва кубларини а дан b гача чиқаринг
  • Мисол:
  • Интервал чегараларини кўрсатинг:
  • 4 6
  • 4 16 64
  • 5 25 125
  • 6 36 216
  • "5": 10 нинг квадратлари ва кубларини қуйидаги кетма-кетликда чиқариш: 1, 2, 4, 7, 11, 16, …
  • Мисол:
  • 1 1 1
  • 2 4 8
  • 4 16 64
  • ...
  • 46 2116 97336

Си тилида дастурлаш

  • Мавзу 7. Шартли цикллар
  • © Ш.А. Назиров, 2011
  • Номаълум қадамлар сонидаги цикл
  • Мисол: Ғўладан тахтани арралаб олиш керак. Бунинг учун неча марта арра билан ҳаракат қилиш (арралаш) керак?
  • Масала: бутун сонни олинг (<2000000) ва ундаги рақамлар сонини аниқланг.
  • Ечим ғояси: кетма-кет охирги рақамни, ҳисоблагични оширамиз.
  • Муаммо: нечта қадам ташлаш кераклиги ноаниқ
  • Ечим: n=0 бўлганда тўхташ керак ва х.к., “хайр n!=0 ” қилиш керак.
  • n
  • count
  • 123
  • 0
  • 12
  • 1
  • 1
  • 2
  • 0
  • 3
  • Алгоритми
  • боши
  • count
  • тамом
  • йўқ
  • ҳа
  • n != 0?
  • count = 0;
  • count = count + 1;
  • n = n / 10;
  • Рақам ҳисоблагични нолга тушириш
  • n ни кирит
  • “хайр n != 0“ ни бажариш
  • Дастури
  • void main()
  • {
  • long n;
  • int count;
  • printf(“Бутун сонни киритинг\n");
  • scanf("%ld", &n);
  • count = 0;
  • while (n != 0)
  • {
  • count ++;
  • n = n / 10;
  • }
  • printf(“%ld сонда %d рақам топилди", n, count);
  • }
  • n1 = n;
  • n1,
  • “хайр n != 0“ ни бажариш
  • Нима ёмон?
  • ?
  • long – узун бутун рақам (± 2147483647)
  • %ld –узун сонларни киритиш ва чиқариш формати
  • , n1;
  • Шартли цикл
  • while ( шарт )
  • {
  • // цикл танаси
  • }
  • Хоссалари:
    • Мураккаб шартлардан фойдаланиш мумкин:
    • Агар дастур танасида фақат битта оператор бўлса, {} қавсларни ёзиш шарт эмас.
  • while ( a < b && b < c ) { ... }
  • while ( a < b ) a ++;
  • Шартли цикл:
  • Хоссалари:
    • Циклга ҳар сафар кирганда шарт ҳисобланаверади
    • Агар циклга кирганда шарт ёлғон бўлса, цикл умуман бажарилмайди
    • Агар шарт ҳеч қачон ёлғон бўлмаса, дастур такрорланаверади
  • a = 4; b = 6;
  • while ( a > b ) a = a– b;
  • a = 4; b = 6;
  • while ( a < b ) d = a + b;
  • Цикл неча марта такрорланади?
  • a = 4; b = 6;
  • while ( a < b ) a ++;
  • 2 марта
  • a = 6
  • a = 4; b = 6;
  • while ( a < b ) a += b;
  • 1 марта
  • a = 10
  • a = 4; b = 6;
  • while ( a > b ) a ++;
  • 0 марта
  • a = 4
  • a = 4; b = 6;
  • while ( a < b ) b = a - b;
  • 1 марта
  • b = -2
  • a = 4; b = 6;
  • while ( a < b ) a --;
  • Цикл ичига тушиш
  • for ни while га алмаштириш ва аксинча
  • for( i=1; i<=10; i++)
  • {
  • // цикл танаси
  • }
  • i = 1;
  • while ( i <= 10 ) {
  • // цикл танаси
  • i ++;
  • }
  • for ( i=a; i>=b; i--)
  • {
  • // цикл танаси
  • }
  • i = a;
  • while ( i >= b ) {
  • // цикл танаси
  • i --;
  • }
  • Си тилида for ни while га алмаштириш ва аксинча ҳолати
  • Ҳар доим мумкин!
  • !
  • Масала
  • "4": Бутун сонни киритиш ва ундаги рақамлар йиғиндисини киритинг.
  • Мисол:
  • Бутун сонни киритинг: 1234
  • 1234 сонидаги рақамлар йиғиндиси 10га тенг.
  • "5": Бутун сонни киритинг ва унинг таркибида 2 та бир хил сонлар борлиги тўғри эканлигини аниқланг.
  • Мисол:
  • Бутун сонни киритинг: : Бутун сонни киритинг:
  • 1234 1224
  • Йўқ. Ҳа.
  • Кетма-кетликлар
  • Мисоллар:
    • 1, 2, 3, 4, 5, …
    • 1, 2, 4, 7, 11, 16, …
    • 1, 2, 4, 8, 16, 32, …
  • an = n
  • a1 = 1, an+1 = an+1
  • a1 = 1, an+1 = an + n
  • an = 2n-1
  • a1 = 1, an+1 = 2an
  • b1 = 1, bn+1 = bn+1
  • c1 = 2, cn+1 = 2cn
  • Кетма-кетликлар
  • Масала: модули 0,001дан катта бўлган ушбу кетма-кетликдаги элементлар йиғиндисини топиш:
  • Элемент кетма-кетлиги (№2 дан бошлаб):
  • n
  • 1
  • 2
  • 3
  • 4
  • 5
  • ...
  • b
  • 1
  • 2
  • 3
  • 4
  • 5
  • ...
  • c
  • 2
  • 4
  • 8
  • 16
  • 32
  • ...
  • z
  • -1
  • 1
  • -1
  • 1
  • -1
  • ...
  • b = b+1;
  • c = 2*c;
  • z = -z;
  • Алгоритми
  • Боши:
  • S
  • тамом
  • йўқ
  • ҳа
  • |a| > 0.001?
  • S = S + a;
  • S = 0; b = 1; c = 2; z = -1; a = 1;
  • Дастлабки ифода
  • a = z*b/c;
  • b = b + 1; c = 2*c; z = -z;
  • биринчи элемент
  • a = 1;
  • S = 0;
  • Янги элемент
  • ўзгариши
  • Қайта ишлаш?
  • ?
  • Дастури
  • #include
  • void main()
  • {
  • int b, c, z;
  • float S, a;
  • S = 0; z = -1;
  • b = 1; c = 2; a = 1;
  • while (fabs(a) > 0.001) {
  • S += a;
  • a = z * b / c;
  • z = - z;
  • b ++;
  • c *= 2;
  • }
  • printf ("S = %10.3f", S);
  • }
  • Кейинги қўшилувчига ўтиш
  • Дастлабки ифода
  • Йиғиндини ошириб бориш
  • Элементлар кетма-кетлигини ҳисоби
  • Математик функция
  • fabs – соннинг модули
  • нима ёмон?
  • ?
  • , b;
  • Масала
  • "4": 0,001 аниқликдаги кетма-кет элементлар йиғиндисини топиш:
  • Жавоб:
  • S = 1.157
  • "5": 0,001 аниқликдаги кетма-кет элементлар йиғиндисини топиш:
  • Жавоб:
  • S = 1.220
  • Шартли ўтиш цикли:
  • Масала: Бутун мусбат сонни (<2000000) киритинг ва ундаги рақамлар сонини аниқланг.
  • Муаммоси: Манфий сон ёки нолни қандай киритмаслик мумкин?
  • Ечиш: Агар нотўғри сон киритилса, орқага маълумотларни киритишга (циклга!) қайтилсин. Хоссаси: Цикл танасини бир марта ҳар қандай ҳолларда қилиш керак цикл шартини текширишни цикл охирида қилиш керак (шартли ўтиш цикли).
  • Шартли ўтиш цикли – Шарти цикл охирида текшириладиган цикл.
  • Шартли ўтиш цикли : алгоритми
  • Боши
  • тамом
  • йўқ
  • ҳа
  • n <= 0?
  • Цикл танаси
  • шарти
  • “хусусий жараён” блоки
  • n ни кирит
  • Дастури
  • void main()
  • {
  • long n;
  • do {
  • printf(“Мусбат сонни киритинг\n");
  • scanf("%ld", &n);
  • }
  • while ( n <= 0 );
  • ... // асосий алгоритми
  • }
  • шарт
  • Хоссалари:
    • Цикл танаси ҳар доим ҳеч бўлмаганда бир марта бажарилади
    • while («хайр…» ) сўзидан сўнг цикл давомининг шарти қўйилади
  • Цикл неча марта такрорланади?
  • a = 4; b = 6;
  • do { a ++; } while (a <= b);
  • 3 марта
  • a = 7
  • a = 4; b = 6;
  • do { a += b; } while ( a <= b );
  • 1 марта
  • a = 10
  • a = 4; b = 6;
  • do { a += b; } while ( a >= b );
  • Цикл ичига тушиш
  • a = 4; b = 6;
  • do b = a - b; while ( a >= b );
  • 2 марта
  • b = 6
  • a = 4; b = 6;
  • do a += 2; while ( a >= b );
  • Цикл ичига тушиш
  • Масала (нотўғри коддан ҳимоя воситаси билан)
  • "4": Натурал сонни киритинг ва унинг рақамлари сони 10 га тенглигини текширинг.
  • Мисол:
  • Сонни киритинг>= 0: Сонни киритинг >= 0:
  • -234 1233
  • Мусбат сон керак. Йўқ
  • Сонни киритинг >= 0:
  • 1234
  • Ҳа
  • "5": Натурал сонни киритинг ва қандай сонлар бир неча марта такрорланаётганини текширинг.
  • Мисол:
  • Сонни киритинг>= 0: Сонни киритинг >= 0:
  • 2323 1234
  • Тарорланяпти: 2, 3 такрорланиш йўқ.

Download 4,3 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish