# include using namespace std; int main() { std::cout << "Hello!\n"; cout << "Qale!"; return (0); } Ekranda: Hello! Qale! std::cout << "Hello\n"; satrida biz chiqish oqimi ob'ekti cout ning to'liq ismini qo'lladik. Keyingi satrda esa biz yana ayni ob'ektni ishlatdik, lekin endi uni to'liq atab o'tirmadik, chunki biz std ismlar sohasini using bilan e'lon qilib bo'ldik. Ismlarni global ismlar sohasida e'lon qilish uchun ularni blok va funkisiyalar tashqarisida aniqlash kerak. Masalan:
# include int i; int main() { ... int k; ... return (0); } Bu yerda i global ismlar sohasida joylashgan, k esa main() funksiyasiga tegishli. O'zgaruvchilarni global ism sohasida aniqlashning boshqa yo'li, ularni nomsiz ismlar sohasida belgilashdir. Yani:
namespace {
int j;
}
j o'zgaruvchisi global boldi. Uni ishlatish uchun:
::j = ::j + 7;
:: operatorini qo'llashimiz mumkin, yoki oddiygina qalib faqat o'zini:
j = j * 9;
kabi yozishimiz mumkin. Ammo agar biz ishlayotgan dastur blokida ayni ismli o'zgaruvchi bo'lsa, masalan j, unda ushbu lokal aniqlangan j bizning global j imizni berkitib qo'yadi. Biz j ni o'zini qo'llasak, lokal j ga murojat
qilgan bo'lamiz. Global j ni ishlatish uchun endi :: operatorini qo'llashga majburmiz. Bu mulohazalar umuman olganda boshqa ismlar sohalarini ishlatganimizda ham o'rinlidir.
2. BOSHQARUV IFODALARI Bu bo'limda biz strukturali dasturlashning asosiy prinsip va qismlarini ko'rib chiqamiz. Ma'lum bir dasturni yozish uchun belgilangan qadamlarni bosib o'tish kerak. Masala aniqlangandan so'ng uni yechish uchun mo'ljallangan algoritm tuziladi. Keyin esa psevdokod yoziladi. Psevdokod algoritmda bajariladigan qadamlarni ko'rsatadi. Bunda faqat bajariladigan ifodalar ko'rib chiqiladi. Psevdokodda o'zgaruvchi e'lonlari yoki boshqa ma'lum bir dasturlash tiliga mansub bo'lgan yordamchi amallar bo'lmaydi. Psevdo kodni yozish dasturlashni ancha osonlashtiradi, algoritm mantig'ini tushunishga va uni rivojlanritishga katta yordam beradi. Misol uchun bir dasturning rejasi va psevdo kodi 3-4 oy yozilgan bo'lsa va yuqori darajada detallashtirilgan bo'lsa, ushbu dasturning C++ yoki boshqa tildagi kodini yozish 2-3 hafta vaqt oladi halos. Bu yozilgan programmada hato ancha kam bo'ladi, uni keyinchalik takomillashtirish arzonga tushadi. Hozirgi paytda dastur o'zgarishi favqulotda hodisa emas, balki zamon talabidir.
DASTUR IJRO STRUKTURALARI Asosan dasturdagi ifodalar ketma-ket, navbatiga ko'ra ijro etiladi. Gohida bir shart bajarilishiga ko'ra, ijro boshqa bir ifodaga o'tadi. Navbatdagi emas, dasturning boshqa yerida joylashgan ifoda bajariladi. Yani sakrash yoki ijro ko'chishi vujudga keladi. 60-chi yillarga kelib, dasturlardagi ko'pchilik hatolar aynan shu ijro ko'chishlarining rejasiz ishlatilishidan kelib chiqishi ma'lum bo'ldi. Bunda eng katta aybdor deb bu ko'shishlarni amalga oshiruvchi goto(..ga bor)ifodasi belgilandi. goto dastur ijrosini deyarli istalgan yerga ko'chirib yuborishi mumkin. Bu esa programmani o'qishni va uning strukturasini murakkablashtirib yuboradi. Shu sababli "strukturali dasturlash" atamasi "goto ni yo'q qilish" bilan tenglashtirilardi. Shuni aytib o'tish kerakki,goto kabi shartsiz sakrash amallarini bajaruvchi ifodalar boshqa dasturlash tillarida ham bor. Tadqiqotlar shuni ko'rsatdiki, istalgan programma goto siz yozilishi mumkin ekan. goto siz yozish uslubi strukturali dasturlash deb nom oldi. Va bunday dastur yozish metodi katta iqtisodiy samara beradi. Strukturali dasturlash asosi shundan iboratki, har bir programma faqatgina uch hil boshqaruv strukturalaridan iboratdir.Bular ifodalarni ketma-ket ijro etish strukturasi (sequence structure), tanlash strukturasi (selection structure) va amalni qayta ijro etish strukturasidir (repetition structure).
Ifodalarni ketma-ket ijro etish strukturasi C++ tomonidan ta'minlanadi. Normal sharoitda C++ ifodalari dasturdagi navbatiga ko'ra bajariladi. Tanlash buyruqlari uchtadir. Bular if, if/else va switch dir. Qayta ijro etish buyruqlari gurugiga ham uchta a'zo bor, bular while, do/while va for. Bularni har birini keyinroq tahlil qilib chiqamiz. Yuqoridagi buyruqlar nomlari C++ dasturlash tilining mahsus so'zlaridir. Dasturchi bu so'zlarni o'zgaruvchi yoki funksiyalar nomi sifatida qo'llashi ta'qiqlanadi. Quyida C++ ning ajratilgan so'zlarining to'liq ro'yhati berilgan.
C++ va C ga tegishli:
auto do goto signed unsigned
break double if sizeof void
case else int static volatile
char enum long struct while
const extern register switch
continue float return typedef
default for short union
Faqat C++ ga qarashli:
asm explicit operator this virtual
bool false private throw wchar_t
catch friend protected true
class inline public try
const_cast mutable reinterpret_cast typeid
delete namespace static_cast typename
dynamic_cast new template using
C++ dagi yetita boshqaruv strukturasini aytib o'tdik. Ular bittagina boshlanish nuqtasiga va bittagina chiqish nuqtasiga egadirlar. Demak biz bu dastur bo'laklarini ketma-ket ulab ketishimiz mumkin. Boshqaruv trukturalari-
ning bu kabi ulanishini devorning g'ishtlarini ustma-ust
qalashga ham taqqoslasak bo'ladi. Yoki biz bu bloklarni bir-birining ichiga joylashtirishimiz mumkin. Bu kabi qo'llashish ikkinchi uslub bo'ladi. Mana shu ikki yo'l bilan bog'langan yetita blok yordamida biz istalgan dasturimizni yoza olamiz.
if STRUKTURASI Biz shartga ko'ra bir necha harakat yo'lidan bittasini tanlaymiz. Misol uchun: agar bolaning yoshi 7 ga teng yoki katta bo'lsa u maktabga borishi mumkin bo'lsin. Buni C++ da if ni qo'llab yozaylik.
if (yosh >= 7)
maktab();
Bu yerda shart bajarilishi yoki bajarilmasligi mumkin. Agar yosh o'zgaruvchisi 7 ga teng yoki undan katta bo'lsa shart bajariladi va maktab() funksiyasi chaqiriladi. Bu holat true (to'g'ri) deyiladi. Agar yosh 7 dan kichik bo'lsa, maktab() tashlab o'tiladi. Yani false (noto'g'ri) holat yuzaga keladi. Biz shart qismini mantiqiy operator-larga asoslanganligini ko'rib chiqqan edik. Aslida esa shardagi ifodaning ko'rinishi muhim emas – agar ifodani nolga keltirish mumkin bo'lsa false bo'ladi, noldan farqli javob bo'lsa, musbatmi, manfiymi, true holat paydo bo'ladi va shart bajariladi. Bunga qo'shimcha qilib o'tish kerakki, C++ da mahsus bool tipi mavjud. Bu tipdagi o'zgaruvchilarning yordamida bul (mantiqiy) arifmetikasini amalgam oshirish mumkin. bool o'zgaruvchilar faqat true yoki false qiymatlarini olishlari mumkin.
if/else STRUKTURASI if ni qo'llaganimizda ifoda faqat shart haqiqat bo'lgandagina bajariladi, aks holda tashlanib o'tiladi. if/else yordamida esa shart bajarilmaganda (false natija chiqqanda) else orqali boshqa bir yo'ldan borishni belgilash mumkin. Misolimizni takomillashtirsak. Bola 7 yosh yoki undan katta bo'lsa maktabga, 7 dan kichkina bo'lsa bog'chaga borsin.