11-Ma’ruza: O‘qish va yozish funksiyalari.
Reja:
11.1Fayl tasvirlash
11.2Fayllar bilan ishlash
Kalit so‘zlar:Algoritm, oddiy tur, operandlar, operator, operatorni belgilash, operatorni
taqsimlash, postdekrement, postinkrement, predekrement, preinkrement, psevdokod, qisqa tur,
so‘zma-so‘z, talablar spesifikatsiyasi
11.1Fayl tasvirlash
C++tilidagi standart va foydalanuvchi tomonidan aniqlangan turlarning muhim xususiyati
shundan iboratki, ularning oldindan berilgan chekli elementlardan iboratligidir. Hatto berilganlar
dinamik aniqlanganda ham, operativ xotiraning (uyumning) amalda cheklanganligi sababli, bu
berilganlar miqdori yuqoridan chegaralangan elementlardan iborat bo‘ladi. Ayrim bir tadbiqiy
masalalar uchun oldindan berilganning komponentalari sonini aniqlash imkoni yo‘q. Ular
masalani yechish jarayonida aniqlanadi va yetarlicha katta hajmda bo‘lishi mumkin. Ikkinchi
tomondan, programmada e’lon qilingan o‘zgaruvchilarning qiymatlari sifatida aniqlangan beril-
ganlar faqat programma ishlash paytidagina mavjud bo‘ladi va programma o‘z ishini tugatgandan
keyin yo‘qolib ketadi. Agar programma yangidan ishga tushirilsa, bu berilganlarni yangidan hosil
qilish zarur bo‘ladi. Aksariyat tadbiqiy masalalar esa berilganlarni doimiy ravishda saqlab turishni
talab qiladi. Masalan, korxona xodimlarining oylik maoshini hisoblovchi programmada xodimlar
ro‘yxatini, shtat stavkalari va xodimlar tomonidan olingan maoshlar haqidagi ma'lumotlarni
doimiy ravishda saqlab turish zarur. Bu talablarga fayl turidagi obyektlar (o‘zgaruvchilar) javob
beradi.
Fayl - bu bir xil turdagi qiymatlar joylashgan tashqi xotiradagi nomlangan sohadir.
Faylni, boshida ketma-ket ravishda joylashgan yozuvlar (masalan, musiqa) bilan to‘ldirilgan
va oxiri bo‘sh bo‘lgan yetarlicha uzun magnit tasmasiga o‘xshatish mumkin.
F
12.1 -rasm. Fayl tasvirlash
12.1-rasmda F- fayl nomi, F1,F2,F3 - fayl elementlari (komponentalari). Xuddi yangi
musiqani tasma oxiriga qo‘shish mumkin bo‘lgandek, yangi yozuvlar fayl oxiriga qo‘shilishi
mumkin. Yana bir muhim tushunchalardan biri fayl ko‘rsatkichi tushunchasidir. Fayl ko‘rsatkichi
- ayni paytda fayldan o‘qilayotgan yoki unga yozilayotgan joy (yozuv o‘rnini) ko‘rsatib turadi,
ya’ni fayl ko‘rsatkichi ko‘rsatib turgan joydan bitga yozuvni o‘qish yoki shu joyga yangi yozuvni
joylashtirish mumkin (12.2-rasm).
F
12.2-rasm. Fayl kursatkichi
Keltirilgan rasmda fayl ko‘rsatkichi fayl boshini ko‘rsatmoqda.
Fayl yozuvlariga murojaat ketma-ket ravishda amalga oishriladi: p- yozuvga murojaat qilish
uchun p-1 yozuvni o‘qish zarur bo‘ladi. Shuni ta’kidlab o‘tish zarurki, fayldan yozuvlarni o‘qish
jarayoni qisman «avtomatlashgan», unda
i - yozuvni o‘qilgandan keyin, ko‘rsatkich navbatdagi i+1 yozuv boshiga ko‘rsatib turadi va shu
tarzda o‘qishni davom ettirish mumkin (massivlardagidek indeksni oshirish shart emas). Fayl - bu
berilganlarni saqlash joyidir va shu sababli uning yozuvlari ustida to‘g‘ridan-to‘g‘ri amal bajarib
bo‘lmaydi. Fayl yozuvi ustida amal bajarish uchun yozuv qiymati operativ xotiraga mos turdagi
F
1
F
2
F
3
…
F
1
F
2
F3
…
o‘zgaruvchiga o‘qilishi kerak. Keyinchalik, zarur amallar shu o‘zgaruvchi ustida bajariladi va
kerak bo‘lsa natijalar yana faylga yozilishi mumkin.
Operasion sistema nuqtai-nazaridan fayl hisoblangan har qanday fayl C++ tili uchun moddiy
fayl hisoblanadi. MS DOS uchun moddiy fayllar . ko‘rinishidagi
«8.3» formatidagi satr (nom) orqali beriladi. Fayl nomlari satr o‘zgarmaslar yoki satr
o‘zgaruvchilarida berilishi mumkin. MS DOS qoidalariga ko‘ra fayl nomi to‘lik bo‘lishi, ya'ni fayl
nomining boshida adres qismi bo‘lishi mumkin: C:\USER\KURS1\Misol.cpp”,”A:\matn.txt”.
C++ tilida mantiqiy fayl tushunchasi bo‘lib, u fayl turidagi o‘zgaruvchini anglatadi. Fayl
turidagi o‘zgaruvchilarga boshqa turdagi o‘zgaruvchilar kabi qiymat berish operatori orqali qiymat
berib bo‘lmaydi. Boshqacha aytganda fayl turidagi o‘zgaruvchilar ustida hech qanday amal
aniqlanmagan. Ular ustida bajariladigan barcha amallar funksiyalar vositasida bajariladi.
Fayllar bilan ishlash quyidagi bosqichlarni o‘z ichiga oladi:
- fayl o‘zgaruvchisi albatta diskdagi fayl bilan bog‘lanadi;
- fayl ochiladi;
- fayl ustida yozish yoki o‘qish amallari bajariladi;
- fayl yopiladi;
- fayl nomini o‘zgartirish yoki faylni diskdan o‘chirish amallarini bajarilishi mumkin.
Nazorat savollari:
1. Fayl nima?
2. Fayllarni tavsiflashda ishlatiladigan operatorlar