Dasturlash I 3-hafta mavzu: С++da sonlarning turlari va ular ustida amallar. Dastur yaratish jarayoni
Download 6.28 Mb.
|
ma\'ruza-3
- Bu sahifa navigatsiya:
- Hafta Mavzu Mashg‘ulot turi
- 3-MA’RUZA MAVZU: С++DA SONLARNING TURLARI VA ULAR USTIDA AMALLAR. DASTUR YARATISH JARAYONI. Reja
- Qo‘shimcha belgili operatorlar Ikrement va Dekrement operatorlari Raqamli tur konvertatsiyasi
- 1. C++da sonli ma’lumot turlari va ular ustida amallar Key Point.
- LONG_MIN , LONG_MAX , FLT_MIN , FLT_MAX , DBL_MIN , va DBL_MAX
- 1.23456E-[-2]
- Operator Nomi Misol Natija
DASTURLASH I 3-HAFTA Mavzu: С++da sonlarning turlari va ular ustida amallar. Dastur yaratish jarayoni.
3-MA’RUZA MAVZU: С++DA SONLARNING TURLARI VA ULAR USTIDA AMALLAR. DASTUR YARATISH JARAYONI. Reja: C++da sonli ma’lumot turlari va ular ustida amallar; Hisoblash ifodalari va operatorlar Amaliy qism: Joriy vaqtni ko‘rsatish Qo‘shimcha belgili operatorlar Ikrement va Dekrement operatorlari Raqamli tur konvertatsiyasi Dasturiy mahsulot yaratish jarayoni Amaliy qism: Pul birliklarini hisoblash Umumiy xatoliklar Kalit so‘zlar: algoritm bo‘lish operatori butun tur C-stili dizayn tizimi haqiqiy nuqtali raqam haqiqiy tur identifikator ifodalash ifodani belgilash ikkilik tur increment kod va test increment operator KIN ma’lumot turi o‘zgarmas o‘zgarmas kalit so‘z o‘zgaruvchi o‘zgaruvchi maydoni o‘zgaruvchilarni e’lon qilish oddiy tur operandlar operator operatorni belgilash operatorni taqsimlash postdekrement postinkrement predekrement preinkrement psevdokod qisqa tur so‘zma-so‘z talablar spesifikatsiyasi tizim tahlili toshish toshmagan UNIX davri uzun tur yashirin tur 1. C++da sonli ma’lumot turlari va ular ustida amallar Key Point. C++ da butun, haqiqiy turlar va +, -, *, /, % operatorlari bilan birgalikda 9 ta raqamli ma’lumot turlari mavjud. 2.8.1-raqamli turlar. Har bir ma’lumot turi qiymatlar sohasiga ega. Kompilyator har o‘zgaruvchi va o‘zgarmasga uning turiga qarab xotiradan joy ajratadi. C++ odatiy qoidalariga ko‘ra raqamli qiymatlar, belgilar va mantiqiy qiymatlar bilan ishlaydi. Ushbu qismda raqamli qiymatlar va ular ishtirokidagi amallar bilan tanishib chiqamiz. 2.1-jadval. Raqamli turlar ro‘yxati, ularning sonli oraliq chegaralari va xotira hajmlari
C++ butun qiymatlarning 3ta turini qo‘llaydi: short, int va long. Har bir butun tur ikki xil xususiyat bilan keladi: ishorali va ishorasiz. Butun qiymatli sonlarning yarmini manfiy ishorali, qolgan yarmini esa nomanfiy (musbat) ishorali sonlar tashkil etadi. Ishorasiz berilgan intlarning barchasi musbat ko‘rinishda kiritiladi. Chunki, eng katta ishorali belgi olgan xotira hajmiga undan ikki karra kattaroq ishorasiz sonni yozish mumkin. Agar siz o‘zgaruvchi faqat musbat qiymat qabul qilishini bilsangiz, uni unsigned bilan e’lon qilish kerak. Misol uchun: short inti = 2; bu bilan bir xil: shorti = 2; C++ haqiqiy sonlarning uch turi bilan ishlaydi: float, double, va long double. double turi odatda float turidan ikki marta katta bo‘ladi. Shuningdek, double ikkilik aniqlikda, float esa bir birlik aniqlikda hisoblanadi. long double esa doubledan kattaroq. Ko‘pgina amaliy dasturlar uchun doubledan foydalanish ma’qulroq. Qulaylik uchun C++ 2.5-ro‘yxat. LimitsDemo.cpp 1 #include 2 #include 3 using namespacestd; 4 5 intmain() 6 { 7 cout << "INT_MIN is "<< INT_MIN << endl; 8 cout << "INT_MAX is "<< INT_MAX << endl; 9 cout << "LONG_MIN is "<< LONG_MIN << endl; 10 cout << "LONG_MAX is "<< LONG_MAX << endl; 11 cout << "FLT_MIN is "<< FLT_MIN << endl; 12 cout << "FLT_MIN is "<< FLT_MAX << endl; 13 cout << "DBL_MIN is "<< DBL_MIN << endl; 14 cout << "DBL_MIN is "<< DBL_MAX << endl; 15 16 return 0; 17 }
Mazkur o‘zgarmaslar eski kompilyatorlar tomonidan tanilmasligi mumkin. Biz qo‘llaydigan o‘zgarmaslar kompilyatorda va kompyuterda turlicha hajmda joy egallashi mumkin. Ko‘pincha int va long bir xil hajm oladi. Ba’zi timlarda long 8 baytni oladi. Kompyuterda tur yoki o‘zgaruvchining hajmini belgilash uchun sizeof funksiyasidan foydalanish mumkin. 2.6-ro‘yxatda int, long, va double turlarning hamda yosh va yuza o‘zgaruvchilarining kompyuterimizdagi hajmini belgilashga misol keltirilgan. 2.6-ro‘yxat. SizeDemo.cpp 1 #include 2 using namespacestd; 3 4 intmain() 5 { 6 cout << "int ning hajmi: "<< sizeof(int) << " bytes"<< endl; 7 cout << "long ning hajmi: "<< sizeof(long) << " bytes"<< endl; 8 cout << "double ning hajmi: "<< sizeof(double) 9 << " bytes"<< endl; 10 11 double yuza = 5.4; 12 cout << "yuza o‘zgaruvchi hajmi: "<< sizeof(yuza) 13 << " bytes"<< endl; 14 15 int yosh = 31; 16 cout << "yosh o‘zgaruvchi hajmi: "<< sizeof(yosh) 17 << " bytes"<< endl; 18 19 return 0; 20 }
Bu yerda sizeof(int), sizeof(long), va sizeof(double)lar (6-8-satrlar) int, long va double turlariga baytlarda, sizeof(yuza) va sizeof(yosh) lar yuza va yosh o‘zgaruvchilariga baytlarda hajm ajratayapti. 2.8.2. Raqamli literallar. Raqamli literallar dastur qismlarida o‘zgarmas qiymat sifatida keladi. Quyidagi ko‘rsatmada 34 va 0.305 lar literallar: inti = 34; doublefootToMeters = 0.305; Odatda butun turli literallar o‘nli butun son ko‘rinishda ifodalanadi. Sakkizlik butun literaldan foydalanish uchun 0 (nol)dan oldin yoziladi. Oltilik o‘lchamdagi butun literalni yozish uchun esa 0x yoki 0X ifodalari qo‘llaniladi. Masalan, quyidagi kod FFFF raqamini 65535 o‘nli son deb qabul qilsa, o‘nlikdagi 8 soni sakkizlikdagi 10 soniga tenglashtiriladi. cout << 0xFFFF<< " "<< 010; Oltilik, ikkilik va sakkizlik qiymatlar sanoq tizimlarida namoyon bo‘ladi. Haqiqiy turli literallar shakl ko‘rinishidagi ilmiy ifodalar yordamida yozilishi mumkin. Misol uchun, 123.456 uchun va 0.0123456 uchun shakllari o‘rinlidir. Buni dasturlash tillarida 1.23456E-[-2] kabi yozilishini dastur qiymat (natija) chiqarganda ko‘rish mumkin. Bu yerda E (yoki e) lar – eksponenta belgisi bo‘lib, katta yoki kichik harflarda yozilishi mumkin. Eslatma: float va double turlari o‘nli kasr ko‘rinishidagi sonlar uchun ishlatiladi. Nima uchun ular haqiqiy turli sonlar deyiladi? Chunki ular kompyuter xotirasida ilmiy ifodalar ko‘rinishida saqlanadi. 50.534 kabi sonlar kompyuterda 5.0534E+1 kabi o‘girib yoziladi. Bunda o‘nli son yangi pozitsiyaga ko‘chadi. 2.8.3 Raqamli operatorlar Raqamli ma’lumot turlari uchun standart operatorlar tayinlangan: qo‘shish (+), ayirish (-), ko‘paytirish (*), bo‘lish (/) va foiz (%) (5.0534E+1). 2.2-jadval. Raqamli operatorlar
Ikkita butun qiymatlar bo‘linganda natija ham faqat butun qismini ko‘rsatadi. Masalan, 5/2 ning natijasi 2, 2.5 emas; -5/2 ning qiymati esa -2, -2.5 emas. Bo‘linma aniq qiymat chiqarishi uchun bo‘linuvchi yoki bo‘luvhilardan biri haqiqiy turga mansub bo‘lishi kerak. % operatori qoldiqni hisoblash operatori sifatida tanilgan va faqat butun turlar uchun ishlaydi. Unda sonning butun qismidan keying (ya’ni verguldan keyingi) qoldiq qismi olinadi. Masalan, 7 % 3 ifoda 1; 3 % 7 ifoda 3; 12 % 4 ifoda 0; 0.26 % 8 ifoda 2; 20 % 13 ifoda 7 qiymatlarini qaytaradi. % operatori musbat butun sonlar uchun tez-tez ishlatilib turiladi. Shuningdek, ularni manfiy butun sonlar uchun ham qo‘llasa bo‘ladi. Manfiy ishorali butun sonlar odatda unga tegishli kompilyator tomonidan hisoblanadi. Qoldiqni hisoblash (%) dasturlashda keng qo‘llaniladi. Misol uchun, juft son % 2 har doim 0 ga, toq son % 2 esa har doim 1 ga teng. Bu ifoda orqali sonlarning juft yoki toqligini aniqlash mumkin. Agar bugun yakshanba bo‘lsa, yakshanba yana 7 kundan so‘ng keladi. Faraz qilaylik, siz va do‘stlaringiz 10-kuni uchrashishlaringiz kerak. 10 - kun qaysi kun bo‘ladi? O‘sha kun seshanba ekanligini quyidagi misol orqali aniqlash mumkin: 2.7-ro‘yxatda keltirilgan dasturda kiritilgan soniya qiymatlarini daqiqa va soniyalarga ajratib beradi. Masalan, 500 seund 8 daqiqa va 20 soniyadan iborat. 2.7-ro‘yxat. VaqtniChiqar.pp 1 #include 2 using namespacestd; 3 4 intmain() 5 { 6 // Foydalanuvchini kiritishga undash 7 int soniya; 8 cout << "Soniyalardagi butun qiymatni kiriting: "; 9 cin >> soniya; 10 int daqiqa = soniya / 60; 11 int qoldiqSoniya = soniya % 60; 12 cout << soniya << " soniya = "<< daqiqa << 13 " daqiqa va "<< qoldiqSoniya << " soniya "<< endl; 14 15 return 0; 16 }
Download 6.28 Mb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling