Yozilgan dasturlash tili. §1 Til haqida umumiy ma'lumot. Dasturni loyihalash bosqichlari. Ilovaning hayot tsikli modellari Tur yoki format spetsifikatsiyalari yoki konversiya belgilari yoki boshqaruv belgilari

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 masalalarini ishlab chiqish vaqti (Simulaga o'xshash sinflardan foydalanish tufayli) va hisoblash vaqti (C tezligi tufayli) bo'yicha hal qilish mumkin 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 egalik huquqiga ega emas. 2016 yil mart oyida Rossiyada WP21 C++ ishchi guruhi tuzildi. Guruh C++ standarti boʻyicha takliflarni toʻplash, ularni qoʻmitaga taqdim etish 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 erkinlikni oladi, shuning uchun ma'lum bir yondashuv yordamida hal qilingan muammoni iloji boricha samarali hal qiladi. 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++ tilining sintaksisi C tilidan meros bo'lib qolgan bo'lsa-da, rasmiy ravishda C++ tamoyillaridan biri C tili bilan moslikni saqlab qolsa ham, aslida bu tillar uchun standartlashtirish guruhlari o'zaro ta'sir qilmaydi va ular o'zgartirmaydi. 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. evolyutsiya modelining 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 aniqlashtirish. 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 va C++ tillarining tarixi
  • 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++ dasturlash tili

Oxirgi yangilanish: 28.08.2017

C++ dasturlash tili yuqori darajali, kompilyatsiya qilingan, umumiy maqsadli, statik tarzda terilgan dasturlash tili bo‘lib, turli xil 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 amaliy dasturlarni yaratish uchun ishlatiladi. Bundan tashqari, ayniqsa, 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 ilovalarni 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 tarjima qiladi, 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.

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++ zahiralangan 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 paragraf o'z kichik bandlariga ega 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 "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 iostreamni 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 o‘qiladi). 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 funksiya (yopish 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 bildiradi va avtomatik ravishda qaytariladi (lekin faqat int ma'lumotlar turi uchun; boshqa funktsiyalar qiymatni qo'lda qaytarishni talab qiladi), lekin agar biz 1 kabi boshqa narsani qaytarmoqchi bo'lsak, buni qilishimiz kerak edi. 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 bayonoti 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. Kompilyator kodni bajarishda 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, dasturning chiqishi 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;

Buni amalga oshirish uchun bir qatorda bir xil turdagi bir nechta o'zgaruvchilarni e'lon qilishga ruxsat beriladi, 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

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 kiritgandan so'ng, biz kirish oqimiga uzatiladigan ENTER tugmasini bosamiz; Bizga kerak emas, shuning uchun uni tashlab yuboramiz. Yodda tutingki, o'zgaruvchi butun son 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 mutlaqo 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; // dastlabki qiymat va beshning yig'indisiga teng a == 5 // beshni belgilamaydi, 5 ga teng yoki yo'qligini tekshiradi

Siz 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.

1.Kirish

Dasturlash yangi universal algoritmik modellarni talab qiladi, apparat vositalari esa algoritmlarni nafaqat boshqa shaklda, balki boshqa algoritmik model - avtomatlar asosida ham amalga oshiradi. Uskunani ishlab chiqishdan texnologiyani olish avtomatlashtirilgan dasturlashning asosiy g'oyasidir. Biroq, raqamli qurilma sintezi dasturlashdan farq qiladi. Ammo modelni qarzga olishda, bir tomondan, uni sezilarli darajada o'zgartirish tavsiya etilmaydi, boshqa tomondan, dasturlashning allaqachon mavjud nazariyasi va amaliyotini e'tiborsiz qoldirib bo'lmaydi.

Keyinchalik, biz avtomatik dasturlarni loyihalash uchun SWITCH texnologiyasini ko'rib chiqamiz, unda siz doimo shunga o'xshash jarayonlarga duch kelasiz. Bir tomondan, u cheklangan holat mashinasi modelini shunchalik o'zgartirdiki, u aslida uni avtomatlar nazariyasi doirasidan tashqariga olib chiqdi. Va, boshqa tomondan, u dasturlashga dasturchilar uchun qiyin bo'lgan va ba'zan ortiqcha bo'lgan tushunchalarni kiritadi, chunki Dastur nazariyasi va dasturlash amaliyotidan ko'proq tanish analoglar mavjud.

Avtomatik dasturlash muammolarini muhokama qilish uchun asos sifatida biz yaqinda Shalyto A.A.ning ma'ruzasini olamiz. va uning avtomatik dasturlash paradigmasining ta'rifiga qaratilgan "dasturlash" maqolalari.

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 odatiy, kundalik tushunish bilan chambarchas bog'liq. Kirish oqimini suv (axborot) 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'lmaydi: oqim yo'nalishini o'zgartirish 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'zan u quriydi, lekin tizim normal ishlayotgan bo'lsa, bu muddat uzoq bo'lishi mumkin emas.

Standart chiqish funksiyasi printf()

printf() funksiyasi standart chiqish funksiyasidir. Bu 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 eting
%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 quyidagilarni yozishimiz kerak:

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

Natija:
O'zgaruvchi x = 10,356

Shuningdek, 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 spetsifikatorlariga 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 doimiy
\? 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, funksiyadan foydalaning

char *gets(char *buf);

gets() funksiyasi yordamida siz toʻliq satrlarni kiritishingiz mumkin. gets() funksiyasi klaviaturadagi belgilarni yangi satr 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 bildiradi.

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

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'rsatuvchisi) o'qilishi kerak bo'lgan ma'lumotlar turini buyuradi, lekin bu qiymatga tayinlanmaydi.

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 qatorida 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 belgilaydi va boshqaruv qatorida paydo bo'lganligi sababli ortiqcha belgilarni o'tkazib yuboradi.

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 u o‘zgaruvchan manzillarni parametr sifatida o‘tkazishi 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);
}