uy - Qayta tiklash
Yozilgan dasturlash tili. Yozilgan dasturlash tili Tur yoki format spetsifikatorlari yoki konversiya belgilari yoki boshqaruv belgilari

C++ dasturlash tili

Oxirgi yangilanish: 28.08.2017

C++ dasturlash tili yuqori darajali, statik tarzda terilgan, kompilyatsiya qilingan, umumiy maqsadli dasturlash tili bo'lib, keng ko'lamli ilovalar yaratish uchun mos keladi. Bugungi kunda C++ eng mashhur va keng tarqalgan tillardan biridir.

Uning ildizlari 1969-1973 yillarda Bell Labsda dasturchi Dennis Ritchi tomonidan ishlab chiqilgan C tilida. 1980-yillarning boshida daniyalik dasturchi Bjarne Stroustrup, keyin Bell Labsda ishlagan, C tilining kengaytmasi sifatida C++ ni ishlab chiqdi. Aslida, C++ dastlab C tilini ba'zi ob'ektga yo'naltirilgan dasturlash imkoniyatlari bilan to'ldirdi. Va shuning uchun Stroustrupning o'zi dastlab uni "C sinflar bilan" deb atagan.

Keyinchalik, yangi til mashhurlikka erisha boshladi. Unga yangi xususiyatlar qo'shildi, bu esa uni nafaqat C tiliga, balki butunlay yangi dasturlash tiliga aylantirdi. Natijada "C with classes" C++ ga o'zgartirildi. Va bundan buyon ikkala til ham bir-biridan mustaqil ravishda rivojlana boshladi.

C++ kuchli til boʻlib, C tilidan boy xotira imkoniyatlarini meros qilib oladi. Shuning uchun C++ ko'pincha tizim dasturlashda, xususan, operatsion tizimlar, drayverlar, turli xil yordamchi dasturlar, antiviruslar va boshqalarni yaratishda qo'llaniladi. Aytgancha, Windows OS asosan C++ tilida yozilgan. Lekin bu tildan foydalanish faqat tizimli dasturlash bilan cheklanmaydi. C++ dan tezlik va unumdorlik muhim bo'lgan har qanday darajadagi dasturlarda foydalanish mumkin. U ko'pincha grafik ilovalar va turli xil amaliy dasturlarni yaratish uchun ishlatiladi. Bundan tashqari, ko'pincha boy, boy vizualizatsiyaga ega o'yinlarni yaratish uchun ishlatiladi. Bundan tashqari, so'nggi paytlarda mobil yo'nalish kuchayib bormoqda, bu erda C++ ham o'z ilovasini topdi. Va hatto veb-ishlab chiqishda ham siz C++ dan veb-ilovalar yoki veb-ilovalarga xizmat ko'rsatadigan ba'zi qo'llab-quvvatlovchi xizmatlarni yaratishingiz mumkin. Umuman olganda, C++ keng qo'llaniladigan til bo'lib, unda deyarli har qanday turdagi dasturlarni yaratish mumkin.

C++ kompilyatsiya qilingan til bo‘lib, kompilyator C++ manba kodini mashina ko‘rsatmalari to‘plamini o‘z ichiga olgan bajariladigan faylga tarjima qiladi. Ammo turli platformalarning o'ziga xos xususiyatlari bor, shuning uchun kompilyatsiya qilingan dasturlarni bir platformadan ikkinchisiga o'tkazish va u erda ishga tushirish mumkin emas. Biroq, manba kodi darajasida, C++ dasturlari, ba'zi bir OS uchun maxsus funktsiyalardan foydalanilmasa, asosan portativ hisoblanadi. Va deyarli barcha umumiy platformalar uchun kompilyatorlar, kutubxonalar va ishlab chiqish vositalarining mavjudligi bir xil C++ manba kodini ushbu platformalar uchun ilovalarga kompilyatsiya qilish imkonini beradi.

C dan farqli o'laroq, C++ tili dasturni bir-biri bilan o'zaro aloqada bo'lgan sinflar va ob'ektlar to'plami sifatida ifodalovchi ob'ektga yo'naltirilgan uslubda ilovalar yozish imkonini beradi. Bu katta ilovalarni yaratishni osonlashtiradi.

Rivojlanishning asosiy bosqichlari

1979-80 yillarda Bjarne Stroustrup C tilining kengaytmasini ishlab chiqdi - "C with Classes". 1983 yilda til C++ deb o'zgartirildi.

1985 yilda C++ tilining birinchi tijorat versiyasi, shuningdek, rasmiy standart mavjud bo'lmaganda ushbu tilning birinchi tavsifini ifodalovchi "C++ dasturlash tili" kitobining birinchi nashri chiqdi.

1989 yilda C++ 2.0 tilining yangi versiyasi chiqdi, u bir qator yangi funksiyalarni o'z ichiga oldi. Shundan keyin til 2011 yilgacha nisbatan sekin rivojlandi. Ammo shu bilan birga, 1998 yilda ISO tashkiloti (Xalqaro standartlashtirish tashkiloti) tomonidan tilni standartlashtirishga birinchi urinish amalga oshirildi. Birinchi standart ISO/IEC 14882:1998 yoki qisqacha C++98 deb nomlangan. Keyinchalik, 2003 yilda C++ 03 standartining yangi versiyasi nashr etildi.

2011 yilda yangi C++ 11 standarti nashr etildi, u ko'plab qo'shimchalarni o'z ichiga olgan va C++ tilini ko'p sonli yangi funksiyalar bilan boyitgan. Shundan so'ng, 2014 yilda C++ 14 nomi bilan ham tanilgan standartga kichik qo'shimcha chiqarildi. Tilning yana bir asosiy versiyasi 2017 yilga mo'ljallangan.

Kompilyatorlar va ishlab chiqish muhitlari

C++ da dasturlarni ishlab chiqish uchun sizga kompilyator kerak bo'ladi - u C++ tilidagi manba kodini bajariladigan faylga aylantiradi, keyin uni ishga tushirishingiz mumkin. Ammo hozirgi vaqtda juda ko'p turli xil kompilyatorlar mavjud. Ular turli jihatlarda, xususan, standartlarni amalga oshirishda farq qilishi mumkin. C++ uchun kompilyatorlarning asosiy roʻyxatini Vikipediyada topish mumkin. Rivojlanish uchun barcha eng so'nggi standartlarni ishlab chiqadigan va amalga oshiradigan kompilyatorlarni tanlash tavsiya etiladi. Shunday qilib, ushbu qo'llanma davomida biz birinchi navbatda GNU loyihasi tomonidan ishlab chiqilgan bepul g++ kompilyatoridan foydalanamiz.

Dasturlar yaratish uchun Visual Studio, Netbeans, Eclipse, Qt va boshqalar kabi IDE lardan ham foydalanishingiz mumkin.

Ushbu maqolada scanf() funktsiyasi ma'lum bir standartga murojaat qilmasdan umumiy tarzda muhokama qilinadi, shuning uchun har qanday C99, C11, C++11, C++14 standartlari ma'lumotlari bu erga kiritilgan. Ehtimol, ba'zi standartlarda funktsiya maqolada keltirilgan materialdan boshqacha ishlaydi.

scanf C funktsiyasi - tavsif

scanf() stdio.h(C) va cstdio(C++) sarlavhalari faylida joylashgan funksiya boʻlib, u dasturga formatlangan kiritish deb ham ataladi. scanf standart kirishdan (stdin) belgilarni o'qiydi va ularni formatga muvofiq o'zgartiradi, keyin ularni belgilangan o'zgaruvchilarga yozadi. Format ma'lumotlar qabul qilinganda ma'lum bir shaklga tushirilishini anglatadi. Shunday qilib, scanf C funksiyasi tasvirlangan:

scanf("%format", &variable1[, &variable2,[...]]),

bu erda o'zgaruvchilar manzil sifatida uzatiladi. O'zgaruvchilarni funktsiyaga shu tarzda o'tkazishning sababi aniq: uning ishlashi natijasida u xatolar mavjudligini ko'rsatadigan qiymatni qaytaradi, shuning uchun o'zgaruvchilar qiymatlarini o'zgartirishning yagona yo'li manzil bo'yicha o'tishdir. Shuningdek, ushbu usul tufayli funktsiya har qanday turdagi ma'lumotlarni qayta ishlashi mumkin.

Ba'zi dasturchilar boshqa tillarga o'xshashligi sababli scanf() yoki printf() kabi funksiyalarni chaqirishadi.

Scanf barcha asosiy til turlarini kiritish imkonini beradi: char, int, float, string va boshqalar. String tipidagi o'zgaruvchilarda manzil belgisini - "&" ni ko'rsatishning hojati yo'q, chunki string tipidagi o'zgaruvchi massiv bo'lib, uning nomi kompyuter xotirasidagi massivning birinchi elementining manzilidir.

Ma'lumotlarni kiritish formati yoki boshqaruv qatori

Keling, tavsifdan scanf C funksiyasidan foydalanish misolini ko'rib chiqaylik.

#o'z ichiga oladi int main() ( int x; while (scanf("%d", &x) == 1) printf("%d\n", x); return 0; //Linux tizimlari uchun talab )

Kirish formati quyidagi to'rtta parametrdan iborat: %[*][kenglik][modifikatorlar] turi. Bunday holda, "%" belgisi va turi talab qilinadigan parametrlardir. Ya'ni, minimal format quyidagicha ko'rinadi: "%s", "%d" va boshqalar.

Umuman olganda, format satrini tashkil etuvchi belgilar quyidagilarga bo'linadi:

  • format spetsifikatsiyalari - % belgisi bilan boshlanadigan hamma narsa;
  • ajratuvchi yoki bo'sh joy belgilari - bular bo'sh joy, yorliq (\t), yangi qator (\n);
  • bo'sh joydan boshqa belgilar.

Funktsiya xavfli bo'lishi mumkin.

scanf() o'rniga scanf_s() dan foydalaning.

(Visual Studio tomonidan chop etilgan)

Tur yoki format spetsifikatsiyalari yoki konversiya belgilari yoki boshqaruv belgilari

scanf C tavsifi, hech bo'lmaganda, "%" belgisi bilan boshlangan iboralar oxirida ko'rsatilgan format spetsifikatsiyasini o'z ichiga olishi kerak. U dasturga odatda klaviaturadan kiritilgan ma'lumotlar turini aytadi. Barcha format ko'rsatkichlari ro'yxati quyidagi jadvalda keltirilgan.

Ma'nosi

Dastur belgi kiritilishini kutadi. Yoziladigan o'zgaruvchi char xarakterli bo'lishi kerak.

Dastur butun sonli kasr sonini kiritishni kutadi. O'zgaruvchi int turida bo'lishi kerak.

Dastur eksponensial shaklda suzuvchi nuqta sonini kutadi. O'zgaruvchi float turida bo'lishi kerak.

Dastur suzuvchi nuqtali raqam kiritilishini kutadi. O'zgaruvchi float turida bo'lishi kerak.

7

Dastur suzuvchi nuqtali raqam kiritilishini kutadi. O'zgaruvchi float turida bo'lishi kerak.

Dastur sakkiztalik raqam kiritilishini kutadi. O'zgaruvchi int turida bo'lishi kerak.

Dastur qator kiritilishini kutadi. Satr birinchi duch kelgan chegaralovchi belgigacha bo'lgan har qanday belgilar to'plami deb hisoblanadi. O'zgaruvchi string turi bo'lishi kerak.

Dastur o'n oltilik raqamni kiritishni kutadi. O'zgaruvchi int turida bo'lishi kerak.

O'zgaruvchi ko'rsatkich kiritishni kutadi. O'zgaruvchi ko'rsatkich turi bo'lishi kerak.

scanf funksiyasi tomonidan o'qilgan belgilar soniga teng o'zgaruvchiga butun son qiymatini yozadi.

Dastur ishorasiz butun sonni o'qiydi. O'zgaruvchining turi belgisiz butun son bo'lishi kerak.

Dastur ikkilik raqam kiritilishini kutadi. O'zgaruvchi int turida bo'lishi kerak.

Skanerlanadigan belgilar to'plami. Dastur scanf o'rtasida belgilangan cheklangan hovuzdan belgilar kiritilishini kutadi va kirish oqimida belgilangan to'plamdagi belgilar mavjud ekan ishlaydi.

Format qatoridagi belgilar

Yulduzcha (*)

Yulduzcha (*) belgilash operatsiyasini bostirish kerakligini bildiruvchi bayroqdir. Yulduzcha "%" belgisidan keyin darhol qo'yiladi. Masalan,

Scanf("%d%*c%d", &x, &y); //ikkita butun son orasidagi belgiga e'tibor bermang. scanf("%s%*d%s", str, str2); //ikki satr orasidagi butun songa e'tibor bermaslik.

Ya'ni, agar siz konsolda "45-20" qatorini kiritsangiz, dastur quyidagilarni amalga oshiradi:

  1. "X" o'zgaruvchisiga 45 qiymati beriladi.
  2. "y" o'zgaruvchisiga 20 qiymati beriladi.
  3. Va minus belgisi (tire) "-" "% * c" tufayli e'tiborga olinmaydi.

Kenglik (yoki maydon kengligi)

Bu joriy o'qish jarayonida o'qilishi kerak bo'lgan belgilarning maksimal sonini belgilaydigan "%" belgisi va format spetsifikatsiyasi orasidagi butun son.

Yodda tutish kerak bo'lgan bir nechta muhim fikrlar mavjud:

  1. scanf 20 ta belgini sanamagan bo'lsa ham, chegaralovchi belgiga duch kelsa, ishlashni to'xtatadi.
  2. Agar kiritishda 20 dan ortiq belgi bo'lsa, ularning faqat birinchi 20 tasi str o'zgaruvchisiga yoziladi.

Tur modifikatorlari (yoki aniqlik)

Bu kiritish uchun kutilayotgan ma'lumotlar turini o'zgartiradigan maxsus bayroqlar. Bayroq tur spetsifikatsiyasining chap tomonida ko'rsatilgan:

  • L yoki l (kichik L) d, i, o, u, x ko'rsatkichlari bilan "l" dan foydalanilganda, bayroq dasturga long int tipidagi kiritishni kutish kerakligini aytadi. E yoki f spetsifikatsiyasi bilan "l" dan foydalanilganda, bayroq dasturga ikki tomonlama qiymat kiritilishini kutish kerakligini aytadi. "L" dan foydalanish dasturga long double tipidagi qiymat kutilayotganligini bildiradi. "l" ni "c" va "s" spetsifikatsiyalari bilan ishlatish dasturga wchar_t tipidagi ikki baytli belgilar kutilganligini bildiradi. Masalan, "%lc", "%ls", "%l".
  • h - qisqa turni ko'rsatuvchi bayroq.
  • hh - o'zgaruvchining signed char yoki unsigned char tipidagi qiymatga ko'rsatgich ekanligini ko'rsatadi. Bayroq d, i, o, u, x, n spetsifikatsiyalari bilan ishlatilishi mumkin.
  • ll (ikkita kichik L) - o'zgaruvchining signed int yoki unsigned long long int tipidagi qiymatga ko'rsatgich ekanligini ko'rsatadi. Bayroq belgilovchilar bilan ishlatiladi: d, i, o, u, x, n.
  • j - o'zgaruvchining stdint.h sarlavha faylidan intmax_t yoki uintmax_t yozish uchun ko'rsatgich ekanligini bildiradi. Belgilovchilar bilan ishlatiladi: d, i, o, u, x, n.
  • z - o'zgaruvchining size_t turiga ko'rsatgich ekanligini bildiradi, uning ta'rifi stddef.h da. Belgilovchilar bilan ishlatiladi: d, i, o, u, x, n.
  • t - o'zgaruvchining ptrdiff_t yozish uchun ko'rsatgich ekanligini bildiradi. Ushbu turdagi ta'rif stddef.h da mavjud. Belgilovchilar bilan ishlatiladi: d, i, o, u, x, n.

Modifikatorli rasm jadval shaklida yanada aniqroq taqdim etilishi mumkin. Scanf C ning ushbu tavsifi dasturchilar uchun aniqroq bo'ladi.

Boshqa belgilar

Formatda duch kelgan har qanday belgilar o'chiriladi. Shuni ta'kidlash kerakki, boshqaruv qatorida bo'sh joy yoki chegaralovchi belgilar (yangi qator, bo'sh joy, yorliq) mavjudligi funktsiyaning har xil harakatiga olib kelishi mumkin. Bir versiyada scanf() cheklovchidan boshqa belgiga duch kelmaguncha cheklovchilar sonini saqlamasdan oʻqiydi, boshqa versiyada boʻshliqlar (faqat ular) muhim emas va “%d + %d” ifodasi ekvivalentdir. "% d+%d" ga.

Misollar

Funktsiya qanday ishlashi haqida fikr yuritish va aniqroq tushunish uchun bir qancha misollarni ko'rib chiqaylik.

Scanf("%3s", str); //agar siz konsolda “1d2s3d1;3” qatorini kiritsangiz, str scanf("%dminus%d", &x, &y);ga faqat “1d2” yoziladi; //ikki raqam orasidagi minus belgilar olib tashlanadi scanf("%5", str); //belgilar str ga 5 ta bo'lgunga qadar kiritiladi va belgilar 0 dan 9 gacha raqamlar bo'ladi. scanf("%lf", &d); //turdagi kutilgan kiritish double scanf("%hd", &x); //bir qancha turdagi short scanf("%hu", &y); //bir qancha turdagi unsigned short scanf("lx", &z); //long int turining kutilgan soni

Berilgan misollardan siz kutilgan raqam turli belgilar yordamida qanday o'zgarishini ko'rishingiz mumkin.

scanf C - yangi boshlanuvchilar uchun tavsif

Ushbu bo'lim yangi boshlanuvchilar uchun foydali bo'ladi. Ko'pincha qo'lingizda scanf C ning to'liq tavsifi emas, balki funksiya qanday ishlashi haqida batafsil ma'lumot bo'lishi kerak.

  • Funktsiya biroz eskirgan. Turli versiyalardagi kutubxonalarda bir nechta turli xil ilovalar mavjud. Masalan, takomillashtirilgan scanf S C funksiyasi, uning tavsifini Microsoft veb-saytida topish mumkin.
  • Formatdagi spetsifikatsiyalar soni funksiyaga uzatiladigan argumentlar soniga mos kelishi kerak.
  • Kirish oqimining elementlari faqat chegaralovchi belgilar bilan ajratilishi kerak: bo'sh joy, tab, yangi qator. Vergul, nuqta-vergul, nuqta va boshqalar - bu belgilar scanf() funksiyasi uchun ajratuvchi emas.
  • Agar scanf cheklovchi belgiga duch kelsa, kiritish to'xtatiladi. Agar o'qish uchun bir nechta o'zgaruvchi bo'lsa, scanf keyingi o'zgaruvchini o'qishga o'tadi.
  • Kirish ma'lumotlari formatidagi eng kichik nomuvofiqlik dasturdan oldindan aytib bo'lmaydigan natijalarga olib keladi. Agar dastur faqat xato bilan tugasa yaxshi bo'ladi. Ammo ko'pincha dastur ishlashni davom ettiradi va uni noto'g'ri qiladi.
  • scanf("%20s ...", ...); Agar kirish oqimi 20 ta belgidan oshsa, scanf birinchi 20 ta belgini o'qiydi va belgilangan bo'lsa, keyingi o'zgaruvchini o'qishni tugatadi yoki davom ettiradi. Keyingi scanf qo'ng'irog'i oldingi scanf qo'ng'irog'i to'xtatilgan joydan kirish oqimini o'qishni davom ettiradi. Agar dastlabki 20 ta belgini oʻqiyotganda chegaralovchi belgiga duch kelsa, scanf birinchi oʻzgaruvchi uchun 20 ta belgini oʻqimagan boʻlsa ham, ishlashni toʻxtatadi yoki keyingi oʻzgaruvchini oʻqishga oʻtadi. Bunday holda, barcha hisoblanmagan belgilar keyingi o'zgaruvchiga biriktiriladi.
  • Agar skanerlanadigan belgilar to'plami "^" belgisi bilan boshlansa, scanf ma'lumotlarni chegaralovchi belgi yoki to'plamdagi belgiga duch kelmaguncha o'qiydi. Misol uchun, "%[^A-E1-5]" oqimdagi ma'lumotlarni A dan E gacha bo'lgan inglizcha bosh harflardan biri yoki 1 dan 5 gacha bo'lgan raqamlardan biriga duch kelmaguncha o'qiydi.
  • Ta'riflanganidek scanf C funksiyasi o'zgaruvchilarga kiritilgan muvaffaqiyatli kiritilgan songa teng sonni qaytaradi. Agar scanf 3 ta o'zgaruvchini yozsa, u holda funktsiyaning muvaffaqiyatli ishlashi natijasi 3 raqamining qaytarilishi bo'ladi. Agar scanf hech qanday o'zgaruvchini yoza olmasa, natija 0 bo'ladi. Va nihoyat, agar scanf ishlashni boshlay olmasa. hammasi negadir natija EOF bo'ladi.
  • Agar scanf() funktsiyasi o'z ishini to'g'ri bajarmagan bo'lsa. Masalan, scanf("%d", &x) - raqam kutilgan edi, lekin kirish sifatida belgilar qabul qilindi. Keyingi scanf() chaqiruvi oldingi funksiya chaqiruvi tugagan kirish oqimidagi nuqtadan boshlanadi. Ushbu muammoni bartaraf etish uchun siz muammoli belgilardan xalos bo'lishingiz kerak. Buni, masalan, scanf("%*s") ni chaqirish orqali amalga oshirish mumkin. Ya'ni, funktsiya belgilar qatorini o'qiydi va uni tashlab yuboradi. Ushbu aqlli tarzda siz kerakli ma'lumotlarni kiritishni davom ettirishingiz mumkin.
  • scanf() ning ba'zi ilovalari belgilar to'plamida "-" dan foydalanishni skanerlashga ruxsat bermaydi.
  • “%c” spetsifikatsiyasi oqimdagi har bir belgini o'qiydi. Ya'ni, ajratuvchi belgini ham o'qiydi. Ajratuvchi belgini o'tkazib yuborish va kerakli belgini o'qishni davom ettirish uchun siz "%1s" dan foydalanishingiz mumkin.
  • “c” spesifikacidan foydalanganda “%10c” kengligidan foydalanish mumkin, lekin keyin siz scanf funksiyasiga o‘zgaruvchi sifatida char tipidagi elementlar massivini o‘tkazishingiz kerak.
  • "%" "ingliz alifbosining barcha kichik harflari" degan ma'noni anglatadi va "%" oddiygina 3 ta belgidan iborat: 'z', 'a', '-'. Boshqacha qilib aytganda, "-" belgisi faqat to'g'ri tartibda joylashgan ikkita belgi o'rtasida paydo bo'lgan diapazonni anglatadi. Agar "-" iboraning oxirida, boshida yoki uning har ikki tomonidagi belgilarning noto'g'ri tartibida bo'lsa, u diapazonni emas, shunchaki defis belgisini ifodalaydi.

Xulosa

Shu bilan scanf C tavsifi yakunlanadi. Bu kichik dasturlarda ishlash va dasturlashning protsessual usulidan foydalanganda yaxshi qulaylik funksiyasidir. Biroq, asosiy kamchilik - bu scanf-dan foydalanishda yuzaga kelishi mumkin bo'lgan oldindan aytib bo'lmaydigan xatolar soni. Shuning uchun, dasturlashda scanf C tavsifini ko'z oldingizda ushlab turish yaxshidir. Katta professional loyihalarda iostreamlar yuqori darajadagi imkoniyatlarga ega bo'lganligi, xatolarni yaxshiroq tushunish va qayta ishlash, shuningdek, katta hajmdagi ma'lumotlar bilan ishlashlari sababli qo'llaniladi. Shuni ham ta'kidlash kerakki, scanf C rus tilidagi tavsifi ko'plab onlayn manbalarda, shuningdek, funktsiyaning yoshi tufayli uni ishlatish misollarida mavjud. Shuning uchun, agar kerak bo'lsa, siz har doim tematik forumlarda javob topishingiz mumkin.

Bu o‘quv qo‘llanmalar dasturlashni yangi boshlasangiz yoki boshqa tillarda dasturlash bo‘yicha katta tajribaga ega bo‘lsangiz ham hamma uchun! Ushbu material C/C++ tillarini uning asoslaridan tortib eng murakkab tuzilmalarigacha o'rganishni istaganlar uchundir.

C++ - bu dasturlash tili, bu dasturlash tilini bilish kompyuteringizni eng yuqori darajada boshqarish imkonini beradi. Ideal holda, siz kompyuterni xohlagan narsani qilishingiz mumkin bo'ladi. Saytimiz C++ dasturlash tilini o'zlashtirishingizga yordam beradi.

O'rnatish / IDE

C++ tilini o'rganishni boshlashdan oldin qilishingiz kerak bo'lgan birinchi narsa, sizda IDE - integratsiyalashgan ishlab chiqish muhiti (dasturlashtiradigan dastur) mavjudligiga ishonch hosil qilishdir. Agar sizda IDE bo'lmasa, unda siz borasiz. IDE ni tanlashga qaror qilganingizdan so'ng, uni o'rnating va oddiy loyihalarni yaratishda mashq qiling.

C++ tiliga kirish

C++ tili - bu kompyuterga nima qilish kerakligini bildiruvchi buyruqlar to'plami. Ushbu buyruqlar to'plami odatda manba kodi yoki oddiy kod deb ataladi. Buyruqlar "funktsiyalar" yoki "kalit so'zlar" dir. Kalit so'zlar (C/C++-da ajratilgan so'zlar) tilning asosiy qurilish bloklari hisoblanadi. Funktsiyalar murakkab qurilish bloklaridir, chunki ular oddiyroq funktsiyalar nuqtai nazaridan yozilgan - buni quyida ko'rsatilgan bizning birinchi dasturimizda ko'rasiz. Funktsiyalarning bu tuzilishi kitob mazmuniga o'xshaydi. Tarkib kitobning boblarini ko'rsatishi mumkin, kitobning har bir bobi paragraflardan iborat o'z mazmuniga ega bo'lishi mumkin, har bir paragrafning o'z kichik bandlari bo'lishi mumkin. Garchi C++ siz ishlatishingiz mumkin bo'lgan ko'plab umumiy funktsiyalar va ajratilgan so'zlarni taqdim etsa ham, o'z funktsiyalaringizni yozishga ehtiyoj bor.

Dasturning qaysi qismidan boshlanadi? C++ tilidagi har bir dastur bitta funktsiyaga ega bo'lib, u asosiy yoki asosiy funksiya deb ataladi, dasturning bajarilishi shu funksiyadan boshlanadi. Asosiy funktsiyadan siz boshqa har qanday funktsiyalarni chaqirishingiz mumkin, ular biz yozgan yoki yuqorida aytib o'tilganidek, kompilyator tomonidan taqdim etilgan.

Xo'sh, ushbu standart funksiyalarga qanday kirishingiz mumkin? Kompilyator bilan birga keladigan standart funktsiyalarga kirish uchun siz preprotsessor direktivasi yordamida sarlavha faylini kiritishingiz kerak - #include . Nima uchun bu samarali? Keling, ishchi dasturning misolini ko'rib chiqaylik:

#o'z ichiga oladi << "Моя первая программа на С++\n"; cin.get(); }

Keling, dasturning elementlarini batafsil ko'rib chiqaylik. #include bu "preprotsessor" direktivasi bo'lib, kompilyatorga bajariladigan faylni yaratishdan oldin iostream sarlavhasi faylidagi kodni dasturimizga qo'yishni aytadi. Sarlavha faylini dasturga ulash orqali siz dasturingizda foydalanishingiz mumkin bo'lgan ko'plab turli funktsiyalarga kirish huquqiga ega bo'lasiz. Masalan, cout operatori iostream ni talab qiladi. std nom maydonidan foydalanadigan qator; kompilyatorga std standart kutubxonasining bir qismi bo'lgan funktsiyalar guruhidan foydalanishni aytadi. Bu qator, shuningdek, dasturga cout kabi operatorlardan foydalanish imkonini beradi. Nuqtali vergul C++ sintaksisining bir qismidir. Bu kompilyatorga buyruqning oxiri ekanligini aytadi. Bir lahzada nuqta-vergul C++ da ko‘pchilik buyruqlarni tugatish uchun ishlatilishini ko‘rasiz.

Dasturning keyingi muhim qatori int main(). Bu satr kompilyatorga main deb nomlangan funksiya mavjudligini va funksiya butun sonni qaytarishini bildiradi. Jingalak qavslar ( va ) funksiyaning boshlanishini (va tugashini) bildiradi. Jingalak qavslar kodning boshqa bloklarida ham qo'llaniladi, lekin ular doimo bitta narsani - mos ravishda blokning boshi va oxirini ko'rsatadi.

C++ tilida cout obyekti matnni ko‘rsatish uchun ishlatiladi (“C out” deb talaffuz qilinadi). U belgilardan foydalanadi<< , известные как «оператор сдвига», чтобы указать, что отправляется к выводу на экран. Результатом вызова функции cout << является отображение текста на экране. Последовательность \n фактически рассматривается как единый символ, который обозначает новую строку (мы поговорим об этом позже более подробно). Символ \n перемещает курсор на экране на следующую строку. Опять же, обратите внимание на точку с запятой, её добавляют в конец, после каждого оператора С++.

Keyingi buyruq cin.get() dir. Bu kirish ma'lumotlar oqimidan ma'lumotlarni o'qiydi va ENTER tugmasi bosilishini kutuvchi boshqa funktsiya chaqiruvidir. Bu buyruq konsol oynasini ENTER tugmasi bosilmaguncha yopilmasligini ta'minlaydi. Bu sizga dasturning natijasini ko'rish uchun vaqt beradi.

Asosiy funktsiya (yopish jingalak qavs) tugagach, dasturimiz operatsion tizimga 0 qiymatini qaytaradi. Bu qaytarish qiymati muhim, chunki uni tahlil qilib, OS dasturimiz muvaffaqiyatli yakunlangan yoki bajarilmaganligini aniqlashi mumkin. Qaytish qiymati 0 muvaffaqiyatni anglatadi va avtomatik ravishda qaytariladi (lekin faqat int ma'lumotlar turi uchun; boshqa funktsiyalar qiymatni qo'lda qaytarishni talab qiladi), lekin agar biz boshqa narsani, masalan, 1ni qaytarmoqchi bo'lsak, buni qilishimiz kerak bo'ladi. qo'lda.

#o'z ichiga oladi std nom maydonidan foydalanish; int main() ( cout<<"Моя первая программа на С++\n"; cin.get(); return 1; }

Materialni birlashtirish uchun IDE-ga dastur kodini kiriting va uni ishga tushiring. Dastur ishga tushgach va natijani ko'rganingizdan so'ng, cout iborasi bilan biroz tajriba qiling. Bu sizga tilga ko'nikishingizga yordam beradi.

Dasturlaringiz haqida fikr bildirishni unutmang!

Kodingizga sharhlar qo'shing, bu nafaqat o'zingiz uchun, balki boshqalar uchun ham tushunarli. Kodni bajarishda kompilyator izohlarni e'tiborsiz qoldirib, haqiqiy kodni tavsiflash uchun istalgan miqdordagi sharhlardan foydalanishga imkon beradi. Sharh yaratish uchun kompilyatorga satrning qolgan qismi izoh ekanligini bildiradigan yoki // dan foydalaning yoki /* va keyin */ . Dasturlashni o'rganayotganingizda, dastur natijasi qanday o'zgarishini ko'rish uchun kodning qismlariga sharh berish foydali bo'ladi. Siz sharhlash texnikasi haqida batafsil o'qishingiz mumkin.

Ushbu turdagi o'zgaruvchilar bilan nima qilish kerak?

Ba'zida ba'zi o'zgaruvchilar turlari ortiqcha bo'lib tuyulsa, bir nechta o'zgaruvchilar turiga ega bo'lish chalkash bo'lishi mumkin. To'g'ri o'zgaruvchilar turidan foydalanish juda muhim, chunki ba'zi o'zgaruvchilar boshqalarga qaraganda ko'proq xotira talab qiladi. Bundan tashqari, ular xotirada saqlanish usuli, suzuvchi nuqta raqamlari tufayli, float va double ma'lumotlar turlari "noaniq" va aniq butun son qiymatini saqlash kerak bo'lganda foydalanilmasligi kerak.

C++ da o'zgaruvchilarni e'lon qilish

O'zgaruvchini e'lon qilish uchun sintaksis turidan foydalaning<имя>; . O'zgaruvchilar deklaratsiyasiga ba'zi misollar:

Int raqami; belgi belgisi; float num_float;

Bir qatorda bir xil turdagi bir nechta o'zgaruvchilarni e'lon qilishga ruxsat beriladi, buning uchun ularning har biri vergul bilan ajratilishi kerak.

Int x, y, z, d;

Agar siz diqqat bilan qaragan bo'lsangiz, o'zgaruvchi deklaratsiyasidan keyin har doim nuqta-vergul qo'yilishini ko'rgan bo'lishingiz mumkin. Siz "o'zgaruvchilarni nomlash bo'yicha" konventsiya haqida ko'proq bilib olishingiz mumkin.

C++ da o'zgaruvchilarni e'lon qilishda keng tarqalgan xatolar

Agar siz e'lon qilinmagan o'zgaruvchidan foydalanmoqchi bo'lsangiz, dasturingiz kompilyatsiya qilinmaydi va siz xato xabarini olasiz. C++ tilida barcha til kalit so‘zlari, barcha funksiyalar va barcha o‘zgaruvchilar katta-kichik harflarga sezgir.

O'zgaruvchilardan foydalanish

Shunday qilib, endi siz o'zgaruvchini qanday e'lon qilishni bilasiz. Mana o'zgaruvchidan foydalanishni ko'rsatadigan misol dastur:

#o'z ichiga oladi std nom maydonidan foydalanish; int main() ( int raqami; cout<< "Введите число: "; cin >>raqam; cin.ignore(); cout<< "Вы ввели: "<< number <<"\n"; cin.get(); }

Keling, ushbu dasturni ko'rib chiqamiz va uning kodini satr satr bilan ko'rib chiqamiz. int kalit so'zi sonning butun son ekanligini bildiradi. cin >> funktsiyasi qiymatni raqamga o'qiydi, foydalanuvchi kiritilgan raqamdan keyin Enter tugmasini bosishi kerak. cin.ignore() - bu belgini o'qiydi va unga e'tibor bermaydi. Biz dasturga kiritishimizni tashkil qildik; raqamni kiritganimizdan so'ng, ENTER tugmasini bosamiz, bu belgi kirish oqimiga ham uzatiladi. Bizga kerak emas, shuning uchun uni tashlab yuboramiz. Yodda tutingki, o'zgaruvchi butun son turi sifatida e'lon qilingan, agar foydalanuvchi o'nlik sonni kiritishga harakat qilsa, u qisqartiriladi (ya'ni sonning o'nlik qismi e'tiborga olinmaydi). O'nlik son yoki belgilar ketma-ketligini kiritishga harakat qiling, misol dasturini ishga tushirganingizda, javob kiritilgan qiymatga bog'liq bo'ladi.

E'tibor bering, o'zgaruvchidan chop etishda tirnoq ishlatilmaydi. Qo'shtirnoqlarning yo'qligi kompilyatorga o'zgaruvchining mavjudligini va shuning uchun dastur o'zgaruvchining nomini bajarishda uning qiymati bilan almashtirish uchun o'zgaruvchining qiymatini tekshirishi kerakligini aytadi. Xuddi shu satrda bir nechta siljish bayonotlari to'liq qabul qilinadi va chiqish bir xil tartibda amalga oshiriladi. Siz har bir o'z o'zgartirish operatorini berib, satr literallarini (tirnoq ichiga olingan satrlar) va o'zgaruvchilarni ajratishingiz kerak.<< . Попытка поставить две переменные вместе с одним оператором сдвига << выдаст сообщение об ошибке . Не забудьте поставить точку с запятой. Если вы забыли про точку с запятой, компилятор выдаст вам сообщение об ошибке при попытке скомпилировать программу.

Qiymatlarni o'zgartirish va taqqoslash

Albatta, qaysi turdagi ma’lumotlardan foydalanmasligingizdan qat’iy nazar, o‘zgaruvchilar qiymatini o‘zgartirish imkoniyatisiz unchalik qiziq emas. Quyida o'zgaruvchilar bilan birgalikda ishlatiladigan ba'zi operatorlar ko'rsatilgan:

  • * ko'paytirish,
  • - ayirish,
  • + qo'shimcha,
  • / bo'lim,
  • = topshiriq,
  • == tenglik,
  • >ko'proq
  • < меньше.
  • != teng emas
  • >= dan katta yoki teng
  • <= меньше или равно

Natijani chap tarafdagi o'zgaruvchiga belgilash uchun matematik funktsiyalarni bajaradigan operatorlar tayinlash belgisining o'ng tomonida ishlatilishi kerak.

Mana bir nechta misollar:

A = 4 * 6; // satr izohi va nuqtali verguldan foydalaning, a 24 a = a + 5 ga teng; // asl qiymat va beshning yig'indisiga teng a == 5 // beshni belgilamaydi, 5 ga teng yoki yo'qligini tekshiradi

Ko'pincha shartli so'zlar va tsikllar kabi konstruktsiyalarda == dan foydalanasiz.

A< 5 // Проверка, a менее пяти? a >5 // Tekshiring, beshdan ortiqmi? a == 5 // Tekshirilmoqda, beshga tengmi? a != 5 // Tekshiring, beshga teng emasmi? a >= 5 // a ning beshdan katta yoki teng ekanligini tekshiring? a<= 5 // Проверка, a меньше или равно пяти?

Ushbu misollar taqqoslash belgilaridan foydalanishni juda aniq ko'rsatmaydi, lekin biz tanlash operatorlarini o'rganishni boshlaganimizda, bu nima uchun kerakligini tushunasiz.

C++ (c-plus-plusni o'qing) bu kompilyatsiya qilingan, statik tarzda terilgan umumiy maqsadli dasturlash tili bo'lib, unda siz har qanday murakkablik darajasidagi dasturlarni yaratishingiz mumkin.
20 yildan ortiq vaqt davomida ushbu til eng mashhur va talabga ega bo'lgan uchta dasturlash tillari qatoriga kiradi. (Siz buni TIOBE veb-saytiga tashrif buyurib tekshirishingiz mumkin).
Til 1980-yillarning boshida, Bell Labs xodimi Byorn Stroustrup o'z ehtiyojlari uchun C tilini bir qator yaxshilanishlar bilan chiqqanida paydo bo'lgan.

Bjarne Stroustrup - C++ tilini yaratuvchisi

Stroustrup Simula tilida topilgan imkoniyatlar bilan C tilini kengaytirishga qaror qildi. Bell kompyuterlari ishlaydigan UNIX tizimining asosiy tili bo'lgan C tez, ko'p funksiyali va portativdir. Stroustrup sinflar va ob'ektlar bilan ishlash qobiliyatini qo'shdi. Natijada, amaliy modellashtirish masalalari ishlab chiqish vaqti (Simulaga o'xshash sinflardan foydalanish tufayli) va hisoblash vaqti (C tezligi tufayli) bo'yicha ham oson hal bo'ldi.
Til ishlab chiquvchining o'zi bu haqda qanday gapiradi:



1998 yilda C++ 98 deb nomlanuvchi birinchi til standarti standartlar qo'mitasi tomonidan nashr etilgan. C++ bugungi kun talablariga javob berish uchun rivojlanishda davom etmoqda. C++ tilini ishlab chiquvchi va uni takomillashtirish bo'yicha takliflarni C++ standartlari qo'mitasiga taqdim etuvchi guruhlardan biri. Boost, boshqa narsalar qatori, unga metadasturlash xususiyatlarini qo'shish orqali tilning imkoniyatlarini yaxshilash bilan shug'ullanadi. Eng so'nggi standart 2017 yilda chiqarilgan va deyiladi C++ 17. Keyingi standart uzoq kutilmaydi va 2020 yilda paydo bo'lishi kutilmoqda.
Hech kim C++ tiliga huquqlarga ega emas, u bepul. 2016 yil mart oyida Rossiyada WP21 C++ ishchi guruhi tuzildi. Guruh C++ standarti boʻyicha takliflarni yigʻish, ularni qoʻmitaga yuborish va Xalqaro standartlashtirish tashkilotining umumiy yigʻilishlarida himoya qilish uchun tashkil etilgan.
C++ ko'p paradigmali til (paradigma so'zidan - kompyuter dasturlarini yozish uslubi), turli xil dasturlash uslublari va texnologiyalarining keng doirasini o'z ichiga oladi. U ko'pincha ob'ektga yo'naltirilgan til sifatida tasniflanadi, ammo qat'iy aytganda, bunday emas. Ish jarayonida ishlab chiquvchi vositalarni tanlashda mutlaq erkinlikka ega bo'ladi, shunda muayyan yondashuv yordamida hal qilingan muammo imkon qadar samarali hal qilinadi. Boshqacha qilib aytganda, C++ dasturchini dastur ishlab chiqishning faqat bitta uslubiga (masalan, ob'ektga yo'naltirilgan) amal qilishga majburlamaydi.
C++ keng tarqalgan konteynerlar va algoritmlar, kiritish-chiqarish, muntazam ifodalar, ko‘p o‘rinli qo‘llab-quvvatlash va boshqa funksiyalarni o‘z ichiga olgan boy standart kutubxonaga ega. C++ koʻplab dasturlash tillariga taʼsir koʻrsatdi, jumladan: Java, C#, D. C++ C tilining sintaksisi asosidagi tillar oilasiga mansub boʻlgani uchun siz ushbu turkumning boshqa dasturlash tillarini bemalol oʻzlashtirishingiz mumkin: JavaScript, PHP , Perl, Objective-C va boshqalar. va boshqalar, shu jumladan ona tilining o'zi - C. ()
Mavjud bo'lgan davrda C++ tili osongina inkor etilishi mumkin bo'lgan doimiy afsonalarga ega bo'ldi (qarang: 1-qism va 2-qism).

Tilning tarixi va chiqarilish standartlari

1983

Tilning yaratuvchisi Byorn Stroustrup, Bell Labs xodimi C++ tilining dastlabki versiyasini (“C with classes”) taqdim etdi.

1985

C++ ning birinchi tijorat relizi, bu til o'zining zamonaviy nomini oldi

1986

C++ dasturlash tilining birinchi nashri - Byorn Stroustrup tomonidan yozilgan C++ ga bag'ishlangan kitob.

1998

C++ tilining xalqaro standarti ratifikatsiya qilindi: ISO/IEC 14882:1998 “C++ dasturlash tili uchun standart”

2003
2005

Kutubxonaning texnik hisoboti 1 (TR1) chiqarildi. Rasmiy ravishda standartning bir qismi bo'lmasa-da, hisobotda C++ tilining keyingi versiyasiga kiritilishi kerak bo'lgan standart kutubxona kengaytmalari tasvirlangan.

2011

Yangi standartning chiqarilishi - C++ 11 yoki ISO/IEC 14882:2011; yangi standart til yadrosiga qo'shimchalarni va standart kutubxonani kengaytirishni, shu jumladan TR1ning ko'p qismini o'z ichiga oladi

2014

C++ 14 standartining chiqarilishi (“Xalqaro standart ISO/IEC 14882:2014(E) C++ dasturlash tili”); C++ 14 ni C++ 11 ga nisbatan kichik kengaytma sifatida ko'rish mumkin, u asosan xatolarni tuzatish va kichik yaxshilanishlarni o'z ichiga oladi.

2017

Yangi standartning chiqarilishi - C++ 1z (C++ 17). Ushbu standart ko'plab o'zgartirish va qo'shimchalarni kiritdi. Masalan, STD C11 standartidagi kutubxonalarni, boost::fayl tizimiga asoslangan fayl tizimini va eksperimental TS I kutubxonasining ko'p qismini o'z ichiga olgan.

2020

C++ 20 C++ dasturlash tili uchun ISO/IEC standartining norasmiy nomi boʻlib, u C++ 17 dan keyin kelishi kutilmoqda. N4800 standart loyihasi.

C++ falsafasi

Byorn Stroustrup o'zining "C++ ning dizayni va evolyutsiyasi" (2007) kitobida C++ ni loyihalashda amal qilgan tamoyillarini tasvirlaydi (qisqartirilgan):

  • Statik ma'lumotlar turlari, C tilining samaradorligi va portativligi bilan umumiy maqsadli tilni oling.
  • Turli xil dasturlash uslublarini to'g'ridan-to'g'ri va har tomonlama qo'llab-quvvatlang.
  • Dasturchiga tanlov erkinligini bering, garchi u noto'g'ri tanlash imkoniyatini bersa ham.
  • C bilan moslikni iloji boricha saqlang, shu bilan C dasturlashdan oson o'tish mumkin.
  • C va C++ o'rtasidagi tafovutlardan saqlaning: ikkala tilda ham amal qiladigan har qanday konstruktsiya ularning har birida bir xil narsani anglatishi va bir xil dastur xatti-harakatlariga olib kelishi kerak.
  • Platformaga bog'liq yoki universal bo'lmagan xususiyatlardan qoching.
  • "Siz foydalanmayotgan narsangiz uchun to'lamang" - hech qanday til xususiyati uni ishlatmaydigan dasturlarning ishlashini pasayishiga olib kelmasligi kerak.
  • Haddan tashqari murakkab dasturlash muhitini talab qilmang.

C va C++

C++ sintaksisi C tilidan meros bo'lib qolgan.Garchi rasmiy ravishda C++ tamoyillaridan biri C tili bilan moslikni saqlab qolsa-da, aslida bu tillar uchun standartlashtirish guruhlari o'zaro ta'sir qilmaydi va ular kiritgan o'zgarishlar ham o'zaro ta'sir qilmaydi. faqat o'zaro bog'liq emas, lekin ko'pincha mafkuraviy jihatdan bir-biriga tubdan zid keladi. Shunday qilib, yangi C standartlari yadroga qo'shadigan elementlar standart kutubxonaning C++ standart elementlarida bo'lib, yadroda umuman yo'q, masalan, dinamik massivlar, belgilangan chegarali massivlar, parallel ishlov berish vositalari. Stroustrupning so'zlariga ko'ra, bu ikki tilning rivojlanishini birlashtirish katta foyda keltiradi, ammo siyosiy sabablarga ko'ra bu mumkin emas. Shunday qilib, C va C++ o'rtasidagi amaliy muvofiqlik asta-sekin yo'qoladi.
Ushbu misolda, ishlatilgan kompilyatorga qarab, "C++" yoki "C" chiqariladi:

Dastur 9.1

#o'z ichiga oladi int main() ( printf("%s\n", (sizeof("a") == sizeof(char)) ? "C++": "C"); 0; ) qaytaring

Buning sababi C tilidagi belgilar konstantalari int tipidagi, C++ tilida esa char tipidagi, lekin bu tiplarning o‘lchamlari har xil.

Ilovaning hayot aylanishi modellari

Hayot davrasi dasturiy ta'minot - bu dasturiy mahsulot yaratish zarurligi to'g'risida qaror qabul qilingan paytdan boshlab boshlanib, u xizmatdan butunlay olib tashlangan paytda tugaydigan vaqt davri. Ushbu tsikl dasturiy ta'minotni yaratish va ishlab chiqish jarayonidir. Hayotiy tsiklning bir nechta modellari mavjud.
Kaskad modeli hayot aylanishi (inglizcha sharshara modeli) 1970 yilda Uinston Roys tomonidan taklif qilingan. U qat'iy belgilangan tartibda loyihaning barcha bosqichlarini ketma-ket amalga oshirishni ta'minlaydi. Keyingi bosqichga o'tish oldingi bosqichdagi ishlarning to'liq bajarilishini anglatadi. Talablarni shakllantirish bosqichida aniqlangan talablar texnik shartlar shaklida qat'iy hujjatlashtiriladi va loyihaning butun rivojlanishi uchun qayd etiladi. Har bir bosqich rivojlanishni boshqa ishlab chiqish guruhi tomonidan davom ettirishga imkon beradigan hujjatlarning to'liq to'plamini chiqarish bilan yakunlanadi.
Sharshara modeli bo'yicha loyiha bosqichlari:

  1. Talablarni shakllantirish;
  2. Dizayn;
  3. Amalga oshirish;
  4. Sinov;
  5. Amalga oshirish;
  6. Foydalanish va texnik xizmat ko'rsatish.

Kaskad modelida loyihaning bir bosqichidan ikkinchisiga o'tish oldingi bosqichning natijasini butunlay to'g'ri deb hisoblaydi. Katta loyihalarda bunga erishish deyarli mumkin emas. Shuning uchun, bu model faqat kichik loyihani ishlab chiqish uchun javob beradi. (V.Roysning o'zi bu modelga amal qilmadi va iterativ modeldan foydalangan).
Iterativ model
Kaskad modeliga alternativa 70-yillarda T. Gilbdan olingan iterativ va inkremental rivojlanish (IID) modelidir. evolyutsion modelning nomi. IID modeli loyihaning hayot tsiklini iteratsiyalar ketma-ketligiga ajratishni o'z ichiga oladi, ularning har biri "mini-loyiha" ga o'xshaydi, shu jumladan butun loyihaga nisbatan kichikroq funktsional qismlarni yaratishda qo'llaniladigan barcha ishlab chiqish jarayonlari. Har bir iteratsiyaning maqsadi dasturiy ta'minot tizimining ishchi versiyasini, shu jumladan oldingi va joriy iteratsiyalarning integratsiyalangan mazmuni bilan aniqlangan funksionallikni olishdir. Yakuniy iteratsiya natijasi mahsulotning barcha kerakli funksiyalarini o'z ichiga oladi. Shunday qilib, har bir iteratsiyaning tugashi bilan mahsulot o'z imkoniyatlariga o'sish - o'sish oladi, shuning uchun ular evolyutsion tarzda rivojlanadi.


Ko'pgina zamonaviy rivojlanish metodologiyalarida iterativ yondashuvning turli xil variantlari qo'llaniladi:

Rivojlanish jarayoni - Ratsional yagona jarayon (RUP)

Ratsional birlashtirilgan jarayon (RUP)(ratsional birlashtirilgan jarayon) - bu Rational Software (IBM) tomonidan qo'llab-quvvatlanadigan dasturiy ta'minotni ishlab chiqish metodologiyasi. Metodologiya rivojlanishning barcha bosqichlari uchun tavsiyalar beradi: biznesni modellashtirishdan tortib, tayyor dasturni sinovdan o'tkazish va ishga tushirishgacha. Yagona modellashtirish tili (UML) modellashtirish tili sifatida ishlatiladi.
Mahsulotni ishlab chiqishning to'liq hayot aylanishi to'rt bosqichdan iborat bo'lib, ularning har biri bir yoki bir nechta iteratsiyani o'z ichiga oladi.

  • Dastlabki bosqich (boshlang'ich)
  • Loyihaning ko'lamini va zarur resurslar miqdorini aniqlash. Mahsulotning asosiy talablari, cheklovlari va asosiy funksionalligi aniqlanadi. Xavflar baholanadi. Harakatlarni rejalashtirish. Dastlabki bosqich oxirida manfaatdor tomonlar o'rtasida loyihani davom ettirish bo'yicha kelishuvni nazarda tutuvchi hayot tsikli maqsadiga erishish baholanadi.

  • Aniqlash
  • Hujjatlashtirish talablari. Bajariladigan arxitekturani loyihalash, amalga oshirish va sinovdan o'tkazish. Shartlar va xarajatlarni tushuntirish. Asosiy xavflarni kamaytirish. Rivojlanish bosqichini muvaffaqiyatli yakunlash hayot davri arxitekturasining muhim bosqichiga erishishni anglatadi.

  • Qurilish
  • "Yaratish" bosqichida mahsulotning ko'p funksiyalari amalga oshiriladi: dastur dizayni tugallanadi, manba kodi yoziladi. Qurilish bosqichi tizimning birinchi tashqi chiqarilishi va Dastlabki Operatsion Imkoniyatning muhim bosqichi bilan yakunlanadi.

  • Kirish
  • "Amalga kiritish" bosqichida mahsulotning yakuniy versiyasi yaratiladi va ishlab chiquvchidan mijozga o'tkaziladi. Bunga beta-sinov dasturi, foydalanuvchilarni o'qitish va mahsulot sifatini aniqlash kiradi. Sifat foydalanuvchi kutganlariga yoki Boshlash bosqichida belgilangan mezonlarga javob bermasa, Amalga oshirish bosqichi yana takrorlanadi. Barcha maqsadlarni bajarish mahsulotni chiqarish bosqichiga erishish va to'liq ishlab chiqish tsiklini yakunlashni anglatadi.



"Axborot texnologiyalari. Tizim va dasturiy ta'minot muhandisligi. Dasturiy ta'minotning hayot aylanish jarayonlari". Ushbu standart Rossiya Federatsiyasi Texnik jihatdan tartibga solish va metrologiya federal agentligi tomonidan qabul qilingan va ISO/IEC 12207:2008 xalqaro standartiga o'xshaydi. Ushbu standart dasturiy ta'minot sanoatida kuzatilishi mumkin bo'lgan dasturiy ta'minotning hayot aylanish jarayonlarining umumiy tuzilishini belgilaydi. Standart hayot aylanishining aniq modelini taklif qilmaydi. Uning qoidalari har qanday hayot tsikli modellari, dasturiy ta'minotni yaratish usullari va texnologiyalari uchun umumiydir. U ushbu jarayonlarga kiritilgan faoliyat va vazifalarni qanday amalga oshirish yoki bajarish kerakligini ko'rsatmasdan, hayot aylanish jarayonlarining tuzilishini tavsiflaydi.

Dars uchun taqdimot
Xabar mavzulari
  • Free Software Foundation (FSF)
  • Bepul dasturiy ta'minot litsenziyalari
  • Bepul dasturiy ta'minot va ochiq manba
  • Dasturlash tillarining rivojlanish tarixi
  • C tilining tarixi C va C++
  • Hikoya
  • C++ tilini tanqid qilish
  • UNIX tarixi
  • Spiral dasturiy ta'minotning hayot aylanishi modeli
  • UML (Birlashtirilgan modellashtirish tili)
  • Microsoft Solutions Framework
  • Windowsda C/C++ dasturlash uchun IDE
  • C/C++ kompilyatorlari
  • Windows da konsol ilovasini yaratish
Savollar
  1. Nima uchun dasturiy ta'minotni ishlab chiqishning sharshara modeli yirik loyihalarda qo'llanilmaydi?
  2. Sharshara va iterativ rivojlanish modellari o'rtasidagi farq nima?
  3. Ratsional Unified Process (RUP) metodologiyasida dasturiy ta'minotni ishlab chiqish bosqichlarini sanab o'ting

C/C++ standart kutubxonasi konsolga (klaviatura va monitor) o‘qish va yozish uchun bir qator funksiyalarni o‘z ichiga oladi. Ushbu funktsiyalar ma'lumotlarni oddiy belgilar oqimi sifatida o'qiydi va yozadi.

Dasturlashda qo'llaniladigan oqim tushunchasi ushbu so'zni oddiy, kundalik tushunish bilan chambarchas bog'liq. Kirish oqimini suv (ma'lumot) hovuzga (kompyuter xotirasi) kiradigan quvurga, chiqish oqimini esa suv hovuzdan chiqadigan quvurga qiyoslash mumkin. Ushbu quvurning muhim xususiyati shundaki, ma'lumotlar bir vaqtning o'zida faqat bitta yo'nalishda harakatlanishi mumkin. Kirish va chiqish uchun bir xil quvur ishlatilsa ham, bu bir vaqtning o'zida sodir bo'lishi mumkin emas: oqim yo'nalishini almashtirish uchun uni to'xtatish kerak, ba'zi harakatlarni bajarish kerak va shundan keyingina oqim teskari yo'nalishga yo'naltirilishi mumkin. Oqimning yana bir xususiyati shundaki, u deyarli qurib ketmaydi. Ba'zida u quriydi, lekin tizim normal ishlayotgan bo'lsa, bu muddat uzoq davom eta olmaydi.

Standart chiqish funksiyasi printf()

printf() funksiyasi standart chiqish funksiyasidir. Ushbu funksiyadan foydalanib, siz monitor ekranida belgilar qatorini, raqamni, o‘zgaruvchining qiymatini... ko‘rsatishingiz mumkin.

printf() funksiyasi stdio.h da prototipga ega
int printf(char *boshqaruv satri, ...);

Muvaffaqiyatli bo'lsa, printf() chop etilgan belgilar sonini qaytaradi.

Boshqaruv chizig'i ikki turdagi ma'lumotni o'z ichiga oladi: to'g'ridan-to'g'ri ekranga chop etiladigan belgilar va argumentlar qanday chop etilishini ko'rsatadigan format spetsifikatsiyalari.

printf() funksiyasi formatlangan chiqish funksiyasidir. Bu shuni anglatadiki, funktsiya parametrlarida chiqariladigan ma'lumotlarning formatini ko'rsatish kerak. Ma'lumotlar formati format ko'rsatkichlari tomonidan belgilanadi. Format spetsifikatsiyasi % belgisidan keyin format kodidan boshlanadi.

Format ko'rsatkichlari:

% Bilan ramzi
%d butun kasrli son
%i butun kasrli son
%e x.xx e+xx ko'rinishidagi o'nlik son
%E x.xx E+xx ko'rinishidagi o'nlik son
%f
%F o'nlik suzuvchi nuqta soni xx.xxxx
%g %f yoki %e, qaysi biri qisqaroq
%G %F yoki %E, qaysi biri qisqaroq
%o sakkizlik son
%s belgilar qatori
%u belgisiz kasrli raqam
%x o'n oltilik raqam
% X o'n oltilik raqam
%% belgisi %
%p ko'rsatgich
%n ko'rsatgich

Bundan tashqari, formatlash buyruqlariga l va h modifikatorlari qo'llanilishi mumkin.

%ld long int chop etish
%hu qisqa shtamp imzosiz
%Lf uzun qo'shaloq shtamp

Format spetsifikatsiyasida % belgisidan keyin aniqlik (oʻnli kasrdan keyingi raqamlar soni) koʻrsatilishi mumkin. Aniqlik quyidagicha o'rnatiladi: %.n<код формата>. Bu erda n - kasrdan keyingi raqamlar soni va<код формата>- yuqorida keltirilgan kodlardan biri.

Misol uchun, agar bizda x=10,3563 float tipidagi o'zgaruvchi bo'lsa va biz uning qiymatini 3 kasrgacha aniq ko'rsatishni istasak, unda biz yozishimiz kerak:

printf("O'zgaruvchi x = %.3f",x);

Natija:
O'zgaruvchi x = 10,356

Shuningdek, siz chop etish uchun ajratilgan maydonning minimal kengligini belgilashingiz mumkin. Agar chiziq yoki raqam belgilangan maydon kengligidan katta bo'lsa, chiziq yoki raqam to'liq chop etiladi.

Masalan, agar siz yozsangiz:

printf("%5d",20);

keyin natija quyidagicha bo'ladi:
20

E'tibor bering, 20 raqami satr boshidan beri chop etilmagan. Agar siz maydonning foydalanilmagan joylari nol bilan to'ldirilishini istasangiz, maydon kengligi oldiga 0 belgisini qo'yishingiz kerak.

Masalan:

printf("%05d",20);

Natija:
00020

Ma'lumotlar formati spesifikaktorlariga qo'shimcha ravishda, boshqaruv chizig'ida boshqaruv belgilari bo'lishi mumkin:

\b BS, pastki
\f Yangi sahifa, sahifani o'zgartirish
\n Yangi qator, qator tasmasi
\r Vagonni qaytarish
\t Gorizontal jadval
\v Vertikal yorliq
\" Ikkita tirnoq
\" Apostrof
\\ Teskari chiziq
\0 Null belgi, null bayt
\a Signal
\N Sakkizlik doimiy
\xN O‘n oltilik konstanta
\? So'roq belgisi

Ko'pincha \n belgisidan foydalanasiz. Ushbu boshqaruv belgisi bilan siz yangi qatorga o'tishingiz mumkin. Misol dasturlarga qarang va siz hamma narsani tushunasiz.

Dasturlarga misollar.

/* 1-misol */
#o'z ichiga oladi

asosiy bekor (bo'sh)
{
int a,b,c; // a,b,c o'zgaruvchilarni e'lon qilish
a=5;
b=6;
c=9;
printf("a=%d, b=%d, c=%d",a,b,c);
}

Dastur natijasi:
a=5, b=6, c=9

/* 2-misol */
#o'z ichiga oladi

asosiy bekor (bo'sh)
{
float x,y,z;

X=10,5;
y=130,67;
z=54;

Printf("Obyekt koordinatalari: x:%.2f, y:%.2f, z:%.2f", x, y, z);
}

Dastur natijasi:
Obyekt koordinatalari: x:10,50, y:130,67, z:54,00

/* 3-misol */
#o'z ichiga oladi

void main()
{
int x;

X=5;
printf("x=%d", x*2);
}

Dastur natijasi:
x=10

/* 4-misol */
#o'z ichiga oladi

asosiy bekor (bo'sh)
{
printf("\"Matn qo'shtirnoq ichida\"");
printf("\nKislorod miqdori: 100%%");
}

Dastur natijasi:
"Qo'shtirnoq ichidagi matn"
Kislorod miqdori: 100%

/* 5-misol */
#o'z ichiga oladi

asosiy bekor (bo'sh)
{
int a;

A=11; // 11 o'nlik sanoqda b ga teng
printf("a-dec=%d, a-hex=%X",a,a);
}

Dastur natijasi:
a-dec=11, a-hex=b

/* 6-misol */
#o'z ichiga oladi

asosiy bekor (bo'sh)
{
char ch1,ch2,ch3;

Ch1="A";
ch2="B";
ch3="C";

Printf("%c%c%c",ch1,ch2,ch3);
}

Dastur natijasi:
ABC

/* 7-misol */
#o'z ichiga oladi

asosiy bekor (bo'sh)
{
char *str="Mening qatorim.";

Printf("Bu %s",str);
}

Dastur natijasi:
Bu Mening qatorim.

/* 8-misol */
#o'z ichiga oladi

asosiy bekor (bo'sh)
{
printf("Salom!\n"); // Chop etishdan keyin yangi qatorga o'tish bo'ladi - \n
printf("Mening ismim Pavel."); // Bu yangi satrda chop etiladi
}

Dastur natijasi:
Salom!
Mening ismim Pavel.

Standart kiritish funktsiyasi scanf()

scanf() funksiyasi formatlangan kiritish funktsiyasidir. Uning yordami bilan siz standart kiritish qurilmasidan (klaviatura) ma'lumotlarni kiritishingiz mumkin. Kirish ma'lumotlari butun sonlar, suzuvchi nuqta raqamlari, belgilar, satrlar va ko'rsatkichlar bo'lishi mumkin.

scanf() funksiyasi stdio.h da quyidagi prototipga ega:
int scanf(char *boshqaruv satri);

Funktsiya qiymat berilgan o'zgaruvchilar sonini qaytaradi.

Boshqaruv qatori uchta turdagi belgilarni o'z ichiga oladi: format spetsifikatsiyalari, bo'shliqlar va boshqa belgilar. Format spetsifikatsiyalari % belgisidan boshlanadi.

Format ko'rsatkichlari:

Scanf() funksiyasi (%s format spetsifikatsiyasi) yordamida satr kiritilayotganda satr birinchi bo'shliqdan oldin kiritiladi!! bular. agar siz "Salom dunyo!" qatorini kiritsangiz. scanf() funktsiyasidan foydalanish


scanf("%s", str);

keyin str massivida saqlanadigan natija qatorini kiritgandan so'ng, bitta "Salom" so'zidan iborat bo'ladi. FUNKSIYA BIRINCHI BO'L OLDINDAN STRINGGA KIRIDI! Agar siz bo'shliqlar bilan satrlarni kiritmoqchi bo'lsangiz, u holda funksiyadan foydalaning

char *gets(char *buf);

gets() funksiyasi yordamida siz toʻliq satrlarni kiritishingiz mumkin. gets() funksiyasi klaviaturadagi belgilarni yangi qator belgisi (\n) paydo bo'lguncha o'qiydi. Enter tugmasini bosganingizda yangi qator belgisi paydo bo'ladi. Funktsiya buf ga ko'rsatgichni qaytaradi. buf - kirish satri uchun bufer (xotira).

gets() bu maqolaning mavzusi bo'lmasa-da, keling, klaviaturadan butun qatorni kiritish va uni ekranda ko'rsatish imkonini beruvchi misol dasturini yozamiz.

#o'z ichiga oladi

asosiy bekor (bo'sh)
{
char buferi; // kirish qatori uchun massiv (bufer).

Oladi (bufer); // qator kiriting va enter tugmasini bosing
printf("%s",bufer); // kiritilgan qatorni ekranga chiqarish
}

Yana bir muhim eslatma! scanf() funksiyasidan foydalanib maʼlumotlarni kiritish uchun u oʻzgaruvchilarning oʻzi emas, balki oʻzgaruvchilar manzillarini parametr sifatida oʻtkazishi kerak. O'zgaruvchining manzilini olish uchun o'zgaruvchi nomidan oldin & (ampersand) belgisini qo'yish kerak. & belgisi manzilni olishni anglatadi.

Manzil nimani anglatadi? Men tushuntirishga harakat qilaman. Dasturda bizda o'zgaruvchi bor. O'zgaruvchi o'z qiymatini kompyuter xotirasida saqlaydi. Shunday qilib, bu biz foydalanadigan manzil va o'zgaruvchining qiymati saqlanadigan kompyuter xotirasidagi manzildir.

Keling, & dan qanday foydalanishni ko'rsatadigan misol dasturni ko'rib chiqaylik.

#o'z ichiga oladi

asosiy bekor (bo'sh)
{
int x;

Printf("X o'zgaruvchini kiriting:");
scanf("%d",&x);
printf("O'zgaruvchi x=%d",x);
}

Endi scanf() funksiyasining boshqaruv qatoriga qaytaylik. Yana bir marta:

int scanf(char *boshqaruv satri);

Boshqaruv satridagi bo'sh joy belgisi kirish oqimida bir yoki bir nechta bo'shliqlarni o'tkazib yuborishni buyuradi. Bo'sh joyga qo'shimcha ravishda yorliq yoki yangi satr belgisini ko'rish mumkin. Null bo'lmagan belgi belgi o'qilganligini va o'chirilganligini bildiradi.

Siz kiritgan ikkita raqam orasidagi ajratgichlar bo'sh joy, yorliq yoki yangi qatordir. % dan keyin va format kodidan oldingi * belgisi (format ko'rsatgichi) o'qilishi kerak bo'lgan ma'lumotlar turini buyuradi, lekin bu qiymatga tayinlanmagan.

Masalan:

scanf("%d%*c%d",&i,&j);

50+20 kiritilsa, i o‘zgaruvchisi 50 ga, j o‘zgaruvchisi 20 ga o‘rnatiladi va + belgisi o‘qiladi va e’tiborga olinmaydi.

Formatlash buyrug'i o'qilishi kerak bo'lgan eng katta maydon kengligini belgilashi mumkin.

Masalan:

scanf("%5s", str);

kirish oqimidan dastlabki 5 ta belgini o'qish zarurligini bildiradi. Agar siz 1234567890ABC raqamini kiritsangiz, str massivi faqat 12345 ni o'z ichiga oladi, qolgan belgilar e'tiborga olinmaydi. Ajratuvchilar: bo'sh joy, tab va yangi qator - belgini kiritishda ular boshqa barcha belgilar kabi ko'rib chiqiladi.

Agar boshqaruv satrida boshqa belgilar paydo bo'lsa, ular tegishli belgini aniqlash va o'tkazib yuborish uchun mo'ljallangan. Belgilar oqimi 10plus20 operatori

scanf("%dplus%d",&x,&y);

x o'zgaruvchisiga 10 qiymatini, y o'zgaruvchisiga 20 qiymatini beradi va ortiqcha belgilarni o'tkazib yuboradi, chunki ular boshqaruv qatorida uchraydi.

Scanf() funksiyasining kuchli xususiyatlaridan biri bu skanerlashni belgilash qobiliyatidir. Qidiruv to'plami scanf() funksiyasi tomonidan o'qilgan belgilar taqqoslanadigan belgilar to'plamini belgilaydi. scanf() funksiyasi belgilarni qidirish to'plamida paydo bo'lgan vaqtgacha o'qiydi. Kiritilgan belgi qidiruv to'plamida topilmasa, scanf() funksiyasi keyingi format spetsifikatsiyasiga o'tadi. Qidiruv to'plami kvadrat qavs ichiga olingan belgilar ro'yxati bilan aniqlanadi. % belgisi ochilish qavs oldiga qo'yiladi. Keling, buni bir misol bilan ko'rib chiqaylik.

#o'z ichiga oladi

asosiy bekor (bo'sh)
{
char str1, str2;
scanf("%%s", str1, str2);
printf("\n%s\n%s",str1,str2);
}
Keling, belgilar to'plamini kiritamiz:
12345abcdefg456

Dastur ekranda ko'rsatiladi:
12345
abcdefg456

Qidiruv to'plamini belgilashda siz intervalni, shuningdek kiritish maydonining maksimal kengligini belgilash uchun defis belgisidan ham foydalanishingiz mumkin.

scanf("%10", str1);

Qidiruv to'plamiga kiritilmagan belgilarni ham belgilashingiz mumkin. Bu belgilarning birinchisidan oldin ^ belgisi mavjud. Ko'pgina belgilar kichik va katta harflarni farqlaydi.

Eslatib o‘tamiz, scanf() funksiyasidan foydalanilganda, unga parametr sifatida o‘zgaruvchan manzillarni o‘tkazish kerak. Yuqoridagi kod yozilgan:

char ko'chasi; // 80 ta belgidan iborat massiv
scanf("%s", str);

E'tibor bering, str oldidan & belgisi yo'q. Bu amalga oshiriladi, chunki str massiv va massiv nomi - str massivning birinchi elementiga ko'rsatgichdir. Shuning uchun & belgisi ishlatilmasligi kerak. Biz allaqachon manzilni scanf() funksiyasiga o'tkazdik. Oddiy qilib aytganda, str massivning birinchi elementining qiymati saqlanadigan kompyuter xotirasidagi manzildir.

Dasturlarga misollar.

1-misol.
Ushbu dastur "Necha yoshdasiz?:" so'rovini ko'rsatadi va ma'lumotlar kiritilishini kutadi. Agar, masalan, 20 raqamini kiritsangiz, dastur "Siz 20 yoshdasiz" qatorini ko'rsatadi. scanf() funksiyasini chaqirganda, biz yosh o'zgaruvchisi oldiga & belgisini qo'yamiz, chunki scanf() funksiyasi o'zgaruvchan manzillarga muhtoj. scanf() funksiyasi kiritilgan qiymatni belgilangan manzilga yozadi. Bizning holatda, kiritilgan qiymat 20 yosh o'zgaruvchisi manziliga yoziladi.

/* 1-misol */

#o'z ichiga oladi

asosiy bekor (bo'sh)
{
int yoshi;

Printf("\nNecha yoshdasiz?:");
scanf("%d",&yosh);
printf("Siz %d yoshdasiz.", yosh);
}

2-misol.
Kalkulyator dasturi. Ushbu kalkulyator faqat raqamlarni qo'shishi mumkin. 100+34 ni kiritganingizda dastur shunday natija beradi: 100+34=134.

/* 2-misol */

#o'z ichiga oladi

asosiy bekor (bo'sh)
{
int x, y;

Printf("\nKalkulyator:");
scanf("%d+%d", &x, &y);
printf("\n%d+%d=%d", x, y, x+y);
}

3-misol.
Ushbu misol o'qish maydonining kengligini qanday o'rnatishni ko'rsatadi. Bizning misolimizda maydon kengligi besh belgidan iborat. Agar siz ko'p sonli belgilar bilan qatorni kiritsangiz, 5-dan keyingi barcha belgilar o'chiriladi. scanf() funksiya chaqiruviga e'tibor bering. & belgisi massiv nomi nomidan oldin kelmaydi, chunki massiv nomi massivning birinchi elementining manzili hisoblanadi.

/* 3-misol */

#o'z ichiga oladi

asosiy bekor (bo'sh)
{
belgi nomi;

Printf("\nFoydalanuvchi nomingizni kiriting (5 belgidan oshmasligi kerak):");
scanf("%5s", ism);
printf("\nSiz %s kiritdingiz", ism);
}

4-misol.
Ushbu maqoladagi oxirgi misol qidiruv to'plamidan qanday foydalanish mumkinligini ko'rsatadi. Dasturni ishga tushirgandan so'ng, 2 dan 5 gacha bo'lgan raqamni kiriting.

/* 4-misol */

#o'z ichiga oladi

asosiy bekor (bo'sh)
{
char bal;

Printf("Sizning reytingingiz 2,3,4,5:");
scanf("%", &bal);
printf("\nReyting %c", bal);
}



 


O'qing:



Telefon raqamini qanday kuzatish mumkin, u qaerda joylashgan: bepul, onlayn, kompyuter, MTS, Tele2, Beeline orqali

Telefon raqamini qanday kuzatish mumkin, u qaerda joylashgan: bepul, onlayn, kompyuter, MTS, Tele2, Beeline orqali

Zamonaviy smartfonlar uyali tarmoq va Internet bilan faol aloqada bo'lib, har kuni katta hajmdagi ma'lumotlardan o'tadi. Shu bilan...

Katta uy uchun eng kuchli va yuqori sifatli WiFi router Kvartira uchun qaysi router yaxshiroq

Katta uy uchun eng kuchli va yuqori sifatli WiFi router Kvartira uchun qaysi router yaxshiroq

Deyarli har bir uyda kompyuterlar va noutbuklar paydo bo'lgandan so'ng, provayderlarning mijozlari soni bir necha o'n barobar oshdi, chunki...

Simsiz joystikni qanday ulash mumkin?

Simsiz joystikni qanday ulash mumkin?

Kompyuterda qulay o'ynash uchun haqiqiy geymerlar joystik va geympadlardan foydalanadilar. Bizning maqolamiz sizga qanday o'ynashni aytib beradi. To'g'ri qurilmani tanlagandan so'ng ...

Yandex-da qidirish va ko'rish tarixi - uni qanday ochish va ko'rish, agar kerak bo'lsa, tozalash yoki o'chirish

Yandex-da qidirish va ko'rish tarixi - uni qanday ochish va ko'rish, agar kerak bo'lsa, tozalash yoki o'chirish

Eslatma: So'rovlar tarixini o'chirish bevosita Yandex qidiruv tizimida amalga oshirilganligi sababli, quyida tavsiflangan amallar bajariladi...

tasma tasviri RSS