Overview
- लेक्चर में फ़ाइल रीडिंग (for read) का सिद्धांत और प्रैक्टिकल उपयोग समझाया गया।
- मुख्य फोकस: read file, EOF (End Of File), और loop के साथ फाइल कंटेंट प्रिंट करना।
- उदाहरण: sample.txt, highscore.txt, और music file पर प्रोग्रामिंग असाइनमेंट चर्चा हुई।
Read File का बेसिक कांसेप्ट
- फाइल रीड करने के लिए फाइल पहले से EXISTING होनी चाहिए।
- read file एक बार कॉल करने पर एक सिंगल लाइन पढ़ता है और वह वैरिएबल में स्टोर होती है।
- हर बार read file कॉल करने पर वैरिएबल ओवरराइट होती है।
- कई लाइनों को सुरक्षित रखने के लिए हर रीड के बाद वैरिएबल को प्रिंट या किसी array में स्टोर करना चाहिए।
Line-By-Line Reading और ओवरराइटिंग
- पहला call → पहली लाइन वैरिएबल में।
- दूसरा call → दूसरी लाइन ओवरराइट कर देगी।
- लॉजिक: अगर आखिरी लाइन print करनी हो तो पहले सब लाइनें रीड करनी पड़ेंगी और आख िरी कॉल पर प्रिंट करना होगा।
- बेहतर तरीका: हर रीड के बाद उसी समय वैरिएबल प्रिंट कर देना ताकि डेटा लॉस न हो।
फाइल ओपन मोड
- पढ़ने के लिए फाइल को "for read" मोड में खोलें।
- कीवर्ड कैपिटल में रखने की सलाह दी गयी (pseudo/teaching emphasis)।
अगर Lines की संख्या मालूम हो (fixed n)
- यदि लाइन संख्या मालूम हो (जैसे 500 या 756), तो for loop index = 1 to n:
- हर iteration में read file sample.txt, file_data
- print file_data
- loop खत्म होने के बाद file close करना जरूरी।
अगर Lines की संख्या नहीं मालूम → EOF का उपयोग
- EOF (End Of File) marker हर टेक्स्ट फाइल के अंत में होता है।
- हम while not EOF फॉर्मेट उपयोग करते हैं:
- while not eof(sample.txt)
- read file sample.txt, file_data
- print file_data
- end while
- close file
- eof() built-in function true/false रिटर्न करता है → EOF पहुंचा या नहीं।
- not eof का मतलब: तब तक लूप चलाओ जब तक EOF नहीं आया।
- इस तरीके में for loop इस्तेमाल करना उपयुक्त नहीं होता क्योंकि iteration count अनजान है।
Pseudo Code (core steps)
- Open file in read mode.
- Use while not eof(file):
- read file, store in temporary variable.
- print temporary variable (या array में append).
- Close file after loop.
Music File Assignment (example प्रैक्टिस)
- फाइल में हर लाइन में CD की जानकारी: title (40 chars), artist (40 chars), location (8 chars)।
- यूजर से location इनपुट लेना है।
- कार्य:
- उस location से संबंधित हर लाइन ढूँढो।
- हर मिले हुए रिकॉर्ड के लिए title और artist print करो (हर लाइन पर तुरंत प्रिंट करना है)।
- कितने CDs उस location पर हैं, उसकी counting करके लूप के बाद आउटपुट दो।
- टिप्स:
- location की तुलना सही तरीके से करो (exact slicing/extraction)।
- title और artist को हर मैच पर अंदर लूप print करना चाहिए, न कि लूप के बाहर।
- एक location पर एक से ज्यादा CD हो सकती हैं, इसलिए counting लूप के बाहर print करो।
- substring extraction के लिए सही function (जैसे LEFT, MID, RIGHT या MITE) सही जगह उपयोग करो।
- indentation और loop boundaries का ध्यान रखना आवश्यक है।
Common Errors और सावधानियाँ
- file_data वैरिएबल को हर बार ओवरराइट होता है — इसलिए रीड के तुरंत बाद प्रिंट करें या स्टोर करें।
- title/artist को बाहर लूप में प्रिंट कर देना गलत है — इससे सिर्फ आखिरी रिकॉर्ड दिखेगा।
- location extraction के लिए गलत function/indices उपयोग करना गलती है (उदाहरण: location के लिए LEFT/MID/RIGHT का सही इस्तेमाल करें)।
- count को हर iteration में प्रिंट न करें; लूप के बाहर कुल संख्या प्रिंट करें।
- indentation और loop के एंड/फाइल क्लोज़िंग पर ध्यान दें।
- for loop तब उपयोग करें जब लाइन काउंट पता हो; अन्यथा while not eof बेहतर है।
Key Terms And Definitions
| शब्द | परिभाषा |
| Read File | फ़ाइल से एक लाइन पढ़ने का ऑपरेशन; हर कॉल एक लाइन लौटाता है। |
| EOF (End Of File) | फाइल के अंत का marker; EOF मिलने पर eof() true रिटर्न करता है। |
| while not eof(...) | तब तक लूप चलाओ जब तक फाइल का अंत न पहुँच जाए। |
| Overwriting | वही वैरिएबल हर रीड पर नई लाइन से रिप्लेस हो जाना। |
| Initialization | वैरिएबल को आरम्भिक मान देना (जैसे count = 0)। |
| Declaration | वैरिएबल का टाइप और नाम घोषित करना। |
Action Items / Next Steps (छात्रों के लिए)
- sample.txt पढ़ने का छोटा प्रोग्राम लिखो: while not eof → read → print → close।
- fixed-n के लिए for-loop वर्ज़न लिखकर परखा (उदाहरण: 500 या 756 lines)।
- music file असाइनमेंट खुद से सॉल्व करो: location input लेकर matching records print और count आउटपुट करो।
- कोड में indentation, file close और substring extraction का ध्यान रखकर अपना समाधान भेजो।
- असाइनमेंट भेजने से पहले निम्न जाँ चें:
- title और artist हर मैच पर प्रिंट हो रहे हैं?
- count लूप के बाद एक बार प्रिंट हो रहा है?
- location extraction सही index/length से हो रहा है?
- फाइल close किया गया है?
संक्षेप में
- फाइल रीडिंग की बुनियादी विधि समझो: read file एक लाइन देता है, EOF का उपयोग तब करो जब लाइन संख्या नहीं मालूम।
- हर रीड के बाद तुरंत प्रिंट करने या स्टोर करने से डेटा लॉस से बचते हैं।
- प्रैक्टिस के लिए दिए गए music file और sample.txt के प्रोग्राम बनाकर भेजो।