Ishlab chiqarish muammolari
Quyida belgili satrlar bilan bog‘liq ishlab chiqarishning ikkita asosiy muammosi keltirilgan.
Satrlar oddiygina belgilardan iborat bo‘lgan massivlar xilmaxilligi yoki elementar tip (massivga xos indeksatsiyasiz) bo‘lishi mumkinmi?
Satrlar statistik yoki dinamik uzunlikka ega bo‘lishi kerakmi?
Satrlar va ular ustida amallar
Agar satrlar elementar tip kabi aniqlanmagan bo‘lsa, satrli ma’lumotlar, odatda, alohida belgilardan iborat massivlarda saqlanadi va ularga massiv elementi bo‘libgina ssыlkalanish mumkin. Bunday yondashuv Pascal, C, C++ va Ada dasturlash tillarida qabul qilingan. Pascal tilida satrlar asosiy tip bo‘lmaydi va packed atributiga ega char massivlariga qiymatlar berish mumkin va ular munosabatlar operatorlari orqali o‘zaro taqqoslanishi mumkin.
Ada tilida STRING tipi o‘rnatilgan hisoblanadi va bir o‘lchamli elementlar massivini aniqlaydi, ular CHARACTER tipiga tegishli. Quyi satrni chaqirish butun sonli diapazon orqali beriladi, ular aylana qavsga olingan hamda kerakli belgilar joylashuvini ko‘rsatadi. Masalan, NAME1 (2:4) buyrug‘i ikkinchi, uchinchi va to‘rtinchi satr belgiidan iborat quyi satrni beradi.
Ada tilida belgilar satri konkatenatsiyasi operatsiya bo‘lib, & belgii bilan beriladi. Keyingi operator NAME2 o‘zgaruvchisini NAME1 o‘zgaruvchisi qiymati bo‘lgan satrning o‘ng oxiriga oxiriga qo‘yishni bajaradi:
NAME1 := NAME1 & NAME2;
Masalan, agar NAME1 o‘zgaruvchisi “PEACE” satriga ega bo‘lib, NAME2 o‘zgaruvchisi “FUL” satriga ega bo‘lsa, qabul qilish operatsiyasidan so‘ng NAME1 o‘zgaruvchisi “PEACEFUL” satriga ega bo‘ladi.
C va C++ tillarida belgilar satrini saqlash uchun char massivlaridan foydalaniladi; satrlar bilan amallar to‘plami esa string.h sarlavhali faylli odatiy kutubxonada ko‘rib chiqilgan. Satrlar bilan bajariluvchi amallar va kutubxona funksiyalarining ko‘pchiligida belgilar satrlari alohida belgi bilan tugallanadi deyiladi: nolli bayt bo‘lib, 0 soni bilan taqdim etiladi.
char *str = “apples”;
Ushbu misolda str – char tipining ko‘rsatkichi bo‘lib, apples0 belgilar satrini manzillaydi, bu erda 0 – nol belgii. str ko‘rsatkichini initsializatsiyalashga ruxsat berilgan, chunki belgilar satrlarining literallari char tipi ko‘rsatkichliari orqali taqdim etiladi.
C va C++ tillarida keng tarqalgan kutubxona funksiyalarining ba’zilarini aytib o‘tamiz, ular belgilar satrlari bilan amallar bajaradi. Ushbu strcpy funksiyasi satrlarni joyini o‘zgartiradi; strcat funksiyasi bir mavjud satrni boshqasi bilan konkatenlashtiradi; strcmp funksiyasi ikki berilgan starlarni taqqoslaydi (ASCII kodi bo‘yicha).
FORTRAN 77, FORTRAN 90 va BASIC tillarida satralr asosiy tiplar kabi interpretatsiya qilinadi va ular uchun qaabul qilish, konkatenatsiya, ssыlka va munosabatlar operatorlari ko‘ri chiqilgan.
Quyidagi dastur bo‘lagini ko‘rib chiqamiz:
LETTER = ‘abcdefghijklmnopqrstuvwxyz’
WORDPAT = BREAK (LETTER) SPAN (LETTER) . WORD
LETTER – bu tezkor xarflarning baridan iborat satr qiymati hisoblangan qiymatdir. WORDPAT – bu namuna bo‘lib, u quyidagicha so‘zlarni tavsiflaydi: harf topilmaguncha boshida barcha belgilar qo‘yiladi, keyin esa to harf bo‘lmagan belgi topilmaguncha ushbu harflar birlashtiriladi. Namuna “.” operatoriga ham ega.
Ushbu namuna operatorda ham qo‘llanilishi mumkin
TEXT WORDPAT
“+” belshisi ismda kamida bitta belgi bo‘lishi lozimligini bildiradi. SHunday qilib, butun etalon satrga mos, bundan so‘ng esa kamida bitta harflar yoki sonlar keladi.
Quyidagi iboraviy namuna ko‘rib chiqamiz:
/\d+\.?\d*|\.\d+/
Ushbu namuna sonli o‘zgarmaslarga mos. \. belgilari sonning o‘nlik kattaligida nuqta beradi.
Do'stlaringiz bilan baham: |