প্যাসক্যাল প্রোগ্রামিং ভাষায় রেকর্ডস (Records) এবং ফাইলস (Files) দুটি গুরুত্বপূর্ণ ডেটা সংরক্ষণ এবং পরিচালনা করার উপাদান। এই দুটি বৈশিষ্ট্য ব্যবহার করে আপনি আরও জটিল এবং উন্নত প্রোগ্রাম তৈরি করতে পারেন, যেখানে একাধিক ডেটা একসঙ্গে স্টোর এবং প্রসেস করা প্রয়োজন হয়। নিচে এই দুটি বিষয়ে বিস্তারিত আলোচনা করা হলো।
রেকর্ডস (Records)
রেকর্ডস প্যাসক্যালের একটি ডেটা স্ট্রাকচার যা একাধিক বিভিন্ন ধরনের ডেটা একত্রে ধারণ করতে সক্ষম। রেকর্ডের মাধ্যমে বিভিন্ন ডেটা টাইপের মান একত্রে একটি একক ইউনিট হিসেবে সংরক্ষণ করা যায়। এটি সাধারণত একই ধরনের একাধিক ভেরিয়েবল সংরক্ষণ করতে ব্যবহৃত হয়, কিন্তু ভেরিয়েবলগুলির ধরন আলাদা হতে পারে।
রেকর্ড ডিক্লেয়ারেশন (Record Declaration)
রেকর্ড ডিক্লেয়ার করতে, আপনি record এবং end. কীওয়ার্ড ব্যবহার করেন। এর মধ্যে বিভিন্ন ডেটা টাইপের ভেরিয়েবল সংজ্ঞায়িত করা হয়।
type
Student = record
name: string[50];
age: Integer;
grade: Char;
end;
var
s1: Student;রেকর্ড ব্যবহার (Using Records)
একবার রেকর্ড ডিক্লেয়ার করার পরে, আপনি রেকর্ডের মধ্যে সংজ্ঞায়িত প্রতিটি ফিল্ডের মান অ্যাক্সেস এবং সেট করতে পারবেন।
var
s1: Student;
begin
s1.name := 'John Doe';
s1.age := 20;
s1.grade := 'A';
writeln('Name: ', s1.name);
writeln('Age: ', s1.age);
writeln('Grade: ', s1.grade);
end.রেকর্ডের সুবিধা
- বিভিন্ন ধরনের ডেটাকে একসাথে স্টোর করার সুবিধা।
- প্রোগ্রামের বিভিন্ন অংশে সম্পর্কিত ডেটাকে একত্রে ব্যবহার করা সহজ হয়।
- রেকর্ডের মাধ্যমে ডেটার গঠন বজায় থাকে এবং সঠিকভাবে অ্যাক্সেস করা যায়।
ফাইলস (Files)
প্যাসক্যাল ভাষায় ফাইল ব্যবহারের মাধ্যমে আপনি ডেটা সঞ্চয় এবং পুনরুদ্ধার করতে পারেন। ফাইল ব্যবহার করার মাধ্যমে ডেটা সংরক্ষণ করা হয় যা পরবর্তী সময়ে পুনরায় ব্যবহার করা যেতে পারে। প্যাসক্যাল বিভিন্ন ধরনের ফাইল কাজ করতে সক্ষম, যেমন: টেক্সট ফাইল, বাইনারি ফাইল ইত্যাদি।
ফাইল ডিক্লেয়ারেশন (File Declaration)
ফাইল ডিক্লেয়ার করতে file of কিওয়ার্ড ব্যবহার করা হয়। ফাইলটি কিভাবে ব্যবহার করা হবে তা নির্ধারণ করা হয়।
var
f: file of Integer; // Integer ধরনের ফাইলফাইল অপারেশন (File Operations)
ফাইলের সাথে কাজ করার জন্য কিছু সাধারণ অপারেশন রয়েছে:
- assign: ফাইলের জন্য নাম এবং অবস্থান নির্ধারণ।
- reset: একটি ফাইল থেকে ডেটা পড়া শুরু করা।
- rewrite: একটি ফাইল তৈরি করা এবং তাতে ডেটা লেখার জন্য ব্যবহৃত।
- close: ফাইল বন্ধ করা।
var
f: file of Integer;
num: Integer;
begin
// ফাইল খুলে লেখা
assign(f, 'data.dat'); // ফাইলের নাম নির্ধারণ
rewrite(f); // ফাইল তৈরি করা
num := 100;
write(f, num); // ফাইলে ডেটা লেখা
close(f); // ফাইল বন্ধ করা
// ফাইল থেকে ডেটা পড়া
assign(f, 'data.dat');
reset(f); // ফাইল থেকে পড়া শুরু
read(f, num); // ডেটা পড়া
writeln('Number read from file: ', num);
close(f); // ফাইল বন্ধ করা
end.ফাইলের ধরনের ভিত্তিতে অপারেশন
- Text Files: টেক্সট ফাইলগুলি সাধারণত স্ট্রিং বা টেক্সট ডেটা ধারণ করে। এগুলোর মধ্যে
readlnএবংwritelnকমান্ড ব্যবহৃত হয়। - Binary Files: বাইনারি ফাইলগুলি প্রোগ্রামিং ভাষায় বাইনারি ডেটা সংরক্ষণ করে, যেমন পূর্ণসংখ্যা, দশমিক সংখ্যা, বা অন্যান্য ডেটা টাইপ। এগুলোর জন্য
readএবংwriteকমান্ড ব্যবহৃত হয়।
টেক্সট ফাইলের উদাহরণ
var
f: TextFile;
line: string;
begin
assign(f, 'data.txt');
rewrite(f); // টেক্সট ফাইল তৈরি করা
writeln(f, 'This is a sample text.');
close(f); // ফাইল বন্ধ করা
// টেক্সট ফাইল থেকে ডেটা পড়া
assign(f, 'data.txt');
reset(f); // ফাইল পড়া শুরু
while not eof(f) do
begin
readln(f, line);
writeln('Line from file: ', line);
end;
close(f);
end.সারাংশ
প্যাসক্যাল ভাষায় রেকর্ডস এবং ফাইলস দুটি শক্তিশালী বৈশিষ্ট্য যা আপনার প্রোগ্রামে ডেটা সংরক্ষণ এবং পরিচালনা করতে সাহায্য করে। রেকর্ডস দিয়ে আপনি একাধিক ভেরিয়েবল একত্রে একটি ইউনিট হিসেবে গ্রুপ করতে পারেন, যা ডেটার সংগঠনকে সহজ করে তোলে। ফাইলস দিয়ে আপনি ডেটা স্থায়ীভাবে সংরক্ষণ করতে পারেন এবং পরবর্তীতে তা পুনরায় ব্যবহার করতে পারেন। এই দুটি বৈশিষ্ট্য ব্যবহারের মাধ্যমে আপনার প্রোগ্রাম আরও কার্যকরী এবং জটিল হতে পারে।
রেকর্ডস (Records) হল একটি ডেটা স্ট্রাকচার যা একাধিক ভিন্ন ধরনের ডেটা একত্রে সংরক্ষণ করতে ব্যবহৃত হয়। প্যাসক্যাল প্রোগ্রামিং ভাষায়, রেকর্ড একটি বিশেষ ধরনের ডেটা টাইপ যা একাধিক ভেরিয়েবল (ফিল্ড) ধারণ করতে পারে, এবং প্রতিটি ফিল্ডে ভিন্ন ধরনের ডেটা থাকতে পারে। রেকর্ডের মাধ্যমে আপনি সম্পর্কিত ডেটাকে একত্রে গুচ্ছবদ্ধ করতে পারেন, যা কোডের সংগঠন এবং উন্নত ব্যবস্থাপনায় সাহায্য করে।
রেকর্ডগুলি সাধারণত ব্যবহার করা হয় যখন আপনার কাছে একাধিক ধরনের ডেটা থাকে যা একে অপরের সঙ্গে সম্পর্কিত, যেমন ব্যক্তির নাম, বয়স, ঠিকানা ইত্যাদি।
রেকর্ডের গঠন
প্যাসক্যাল ভাষায় রেকর্ড তৈরি করতে, record এবং end; কিওয়ার্ড ব্যবহৃত হয়। রেকর্ডে একাধিক ফিল্ড থাকে, এবং প্রতিটি ফিল্ডের ডেটা টাইপ আলাদা হতে পারে। উদাহরণস্বরূপ:
type
Person = record
Name: string[50]; { নামের জন্য }
Age: Integer; { বয়সের জন্য }
Address: string[100]; { ঠিকানার জন্য }
end;এখানে, Person নামে একটি রেকর্ড তৈরি করা হয়েছে যার মধ্যে তিনটি ফিল্ড রয়েছে: Name (string), Age (Integer), এবং Address (string)। এই রেকর্ডটি একটি একক একককণ্ঠী ডেটা টাইপ হিসেবে ব্যবহৃত হতে পারে।
রেকর্ড ব্যবহার
রেকর্ড ব্যবহার করতে হলে প্রথমে তার ভেরিয়েবল ডিফাইন করতে হয় এবং তারপর রেকর্ডের ফিল্ডগুলোর মান অ্যাক্সেস করা যায়।
রেকর্ড ভেরিয়েবল ঘোষণা
var
p: Person; { Person রেকর্ডের জন্য একটি ভেরিয়েবল }রেকর্ড ফিল্ড অ্যাক্সেস
রেকর্ডের প্রতিটি ফিল্ডের মান অ্যাক্সেস করতে ডট (.) সিম্বল ব্যবহার করা হয়।
begin
p.Name := 'John Doe';
p.Age := 30;
p.Address := '1234 Main St, Cityville';
writeln('Name: ', p.Name);
writeln('Age: ', p.Age);
writeln('Address: ', p.Address);
end.এখানে, আমরা p নামে একটি রেকর্ড ভেরিয়েবল তৈরি করেছি এবং তার ফিল্ডগুলোতে মান দিয়েছি এবং শেষে আউটপুট হিসাবে প্রদর্শন করেছি।
রেকর্ডের মধ্যে আরেকটি রেকর্ড
রেকর্ডের মধ্যে অন্য রেকর্ডও রাখা যেতে পারে। এটি কমপ্লেক্স ডেটা স্ট্রাকচার তৈরি করতে সহায়তা করে। উদাহরণস্বরূপ:
type
Address = record
Street: string[50];
City: string[50];
PostalCode: string[10];
end;
Person = record
Name: string[50];
Age: Integer;
HomeAddress: Address; { এখানে Address রেকর্ড ব্যবহৃত হচ্ছে }
end;এখানে, Person রেকর্ডের মধ্যে একটি Address রেকর্ড অন্তর্ভুক্ত রয়েছে। এর মাধ্যমে আপনি একটি ব্যক্তির নাম, বয়স এবং তার ঠিকানা সম্পর্কিত বিস্তারিত তথ্য সংরক্ষণ করতে পারবেন।
রেকর্ডের অ্যারের ব্যবহার
রেকর্ডগুলিকে অ্যারের মধ্যে সংরক্ষণ করা যেতে পারে। এতে অনেকগুলো রেকর্ড একত্রে রাখা এবং ব্যবস্থাপনা করা সহজ হয়।
var
People: array[1..5] of Person; { ৫ জন ব্যক্তির জন্য রেকর্ড অ্যারে }
begin
People[1].Name := 'Alice';
People[1].Age := 25;
People[1].HomeAddress.Street := '123 Park Ave';
People[1].HomeAddress.City := 'Metropolis';
writeln('Name: ', People[1].Name);
writeln('Age: ', People[1].Age);
writeln('Street: ', People[1].HomeAddress.Street);
end.এখানে, আমরা People নামের একটি অ্যারে তৈরি করেছি, যা ৫ জন ব্যক্তির তথ্য ধারণ করতে পারে।
সারাংশ
রেকর্ডস হল একটি শক্তিশালী ডেটা স্ট্রাকচার যা বিভিন্ন ধরনের ডেটা একত্রে সংরক্ষণ করতে ব্যবহৃত হয়। এটি প্যাসক্যাল ভাষায় বিভিন্ন ধরনের সম্পর্কিত ডেটা একত্রে ম্যানেজ করতে সাহায্য করে। রেকর্ড ব্যবহার করার মাধ্যমে আপনি একটি নির্দিষ্ট গঠন অনুযায়ী ডেটা সংরক্ষণ করতে পারেন, যা প্রোগ্রামিংকে আরও পরিষ্কার এবং কার্যকরী করে তোলে।
রেকর্ডের কিছু গুরুত্বপূর্ণ সুবিধা:
- একাধিক ডেটা টাইপকে একত্রে সংরক্ষণ করা যায়।
- জটিল ডেটা স্ট্রাকচার তৈরি করা সহজ হয়।
- ডেটার গঠন সহজেই দেখা এবং বুঝতে পারা যায়।
প্যাসক্যাল ভাষায় Record একটি ডেটা টাইপ যা বিভিন্ন ধরনের ডেটা একত্রিত করে একটি ইউনিট হিসেবে ব্যবহারের সুযোগ দেয়। এটি একটি কাস্টম ডেটা টাইপ তৈরি করার উপায়, যার মধ্যে বিভিন্ন ডেটা টাইপের মান থাকতে পারে। Record ব্যবহারের মাধ্যমে আমরা একটি নির্দিষ্ট বিষয় বা অবজেক্টের সব তথ্য একসঙ্গে সংরক্ষণ এবং পরিচালনা করতে পারি।
১. Record ডিক্লারেশন
Record ডিক্লারেশন করতে হলে, প্রথমে আপনাকে একটি type নির্দেশ করতে হবে যেখানে আপনি Record-এর কাঠামো বা ফিল্ডস (fields) নির্ধারণ করবেন। প্রতিটি ফিল্ড একটি ভেরিয়েবল হতে পারে, যা বিভিন্ন ডেটা টাইপের হতে পারে।
উদাহরণ:
program RecordExample;
type
Person = record
name: string[50];
age: Integer;
height: Real;
end;
var
p1: Person; { পি১ হলো Person টাইপের একটি ভেরিয়েবল }
begin
{ Record-এর মধ্যে ভেরিয়েবল গুলোর মান দেওয়া }
p1.name := 'Azizur Rahman';
p1.age := 30;
p1.height := 5.9;
{ Record থেকে মান আউটপুট করা }
writeln('Name: ', p1.name);
writeln('Age: ', p1.age);
writeln('Height: ', p1.height);
end.এই প্রোগ্রামে:
- Person একটি
recordটাইপ যা তিনটি ভেরিয়েবল ধারণ করে:name(string),age(Integer), এবংheight(Real)। p1হল একটিPersonটাইপের ভেরিয়েবল যাname,age, এবংheightমান ধারণ করে।- প্রতিটি ফিল্ডে মান অ্যাসাইন করা হয় এবং পরে সেগুলি আউটপুট করা হয়।
২. Record ম্যানিপুলেশন
Record ম্যানিপুলেশন হলো Record-এর ফিল্ডগুলোর মান পরিবর্তন করা বা নতুন মান সেট করা। আপনি যখন একটি Record টাইপের ভেরিয়েবল তৈরি করেন, তখন তার ফিল্ডগুলিতে মান অ্যাসাইন বা পরিবর্তন করতে পারেন।
উদাহরণ:
program RecordManipulation;
type
Employee = record
id: Integer;
name: string[100];
salary: Real;
end;
var
emp: Employee;
begin
{ Record-এর মধ্যে ফিল্ডের মান অ্যাসাইন করা }
emp.id := 101;
emp.name := 'John Doe';
emp.salary := 55000.75;
{ Record থেকে মান আউটপুট করা }
writeln('Employee ID: ', emp.id);
writeln('Employee Name: ', emp.name);
writeln('Employee Salary: ', emp.salary);
end.এখানে:
Employeeএকটিrecordটাইপ যা একটি কর্মীরid,name, এবংsalaryধারণ করে।empহলোEmployeeটাইপের একটি ভেরিয়েবল, যেখানেid,name, এবংsalaryফিল্ডে মান দেওয়া হয়।- পরে,
writelnফাংশনের মাধ্যমে Record-এর ফিল্ডগুলোর মান আউটপুট করা হয়।
৩. Record টাইপের মধ্যে পয়েন্টার ব্যবহার
প্যাসক্যাল ভাষায় আপনি Record-এর মধ্যে পয়েন্টারও ব্যবহার করতে পারেন। এটি অধিক জটিল ডেটা কাঠামো তৈরি করতে সাহায্য করে, যেখানে আপনি Record-এর মধ্যে অন্য Record বা ডেটার একটি রেফারেন্স রাখতে পারেন।
উদাহরণ:
program RecordPointerExample;
type
Address = record
street: string[100];
city: string[50];
zipCode: string[10];
end;
Person = record
name: string[50];
age: Integer;
address: ^Address; { Pointer to Address record }
end;
var
p1: Person;
addr1: Address;
begin
{ Address record এর মান সেট করা }
addr1.street := '123 Main St';
addr1.city := 'Dhaka';
addr1.zipCode := '1212';
{ Person record এর মান সেট করা }
p1.name := 'Azizur Rahman';
p1.age := 30;
p1.address := @addr1; { Address record এর পয়েন্টার অ্যাসাইন করা }
{ Address record এর মান আউটপুট করা }
writeln('Name: ', p1.name);
writeln('Age: ', p1.age);
writeln('Street: ', p1.address^.street);
writeln('City: ', p1.address^.city);
writeln('Zip Code: ', p1.address^.zipCode);
end.এখানে:
Personrecord এর মধ্যেaddressনামক একটি পয়েন্টার রয়েছে, যাAddressটাইপের একটি Record নির্দেশ করে।@addr1ব্যবহার করেaddressপয়েন্টারেaddr1Record-এর রেফারেন্স দেয়া হয়।- পয়েন্টারের মাধ্যমে Record-এর ফিল্ডগুলো অ্যাক্সেস করা হয় (
p1.address^.streetইত্যাদি)।
৪. Record Arrays
প্যাসক্যালের মধ্যে আপনি Record Arrays ব্যবহার করতে পারেন, যা অনেক Record একত্রে সংরক্ষণ করতে সাহায্য করে।
উদাহরণ:
program RecordArrayExample;
type
Book = record
title: string[100];
author: string[50];
price: Real;
end;
BookArray = array[1..3] of Book; { ৩টি Book Record এর জন্য Array }
var
books: BookArray;
begin
{ Array এর প্রতিটি Book এর মান সেট করা }
books[1].title := 'Pascal Programming';
books[1].author := 'John Doe';
books[1].price := 39.99;
books[2].title := 'Learn Pascal';
books[2].author := 'Jane Smith';
books[2].price := 29.99;
books[3].title := 'Advanced Pascal';
books[3].author := 'Michael Johnson';
books[3].price := 49.99;
{ Array এর মধ্যে Book গুলোর মান আউটপুট করা }
writeln('Book 1: ', books[1].title, ', ', books[1].author, ', ', books[1].price);
writeln('Book 2: ', books[2].title, ', ', books[2].author, ', ', books[2].price);
writeln('Book 3: ', books[3].title, ', ', books[3].author, ', ', books[3].price);
end.এখানে:
BookArrayনামক একটি Array তৈরি করা হয়েছে যা ৩টিBookRecord ধারণ করে।- প্রতিটি Record এর ফিল্ডে মান অ্যাসাইন করা হয় এবং পরে সেগুলি আউটপুট করা হয়।
সারাংশ
Record প্যাসক্যালের একটি শক্তিশালী ডেটা টাইপ যা একাধিক ভিন্ন ধরনের ডেটা একত্রে সংরক্ষণ করতে সহায়তা করে। আপনি Record ডিক্লারেশন করে বিভিন্ন ডেটা টাইপের মান একসঙ্গে রাখ सकते এবং পরে তাদের মধ্যে মান পরিবর্তন বা ম্যানিপুলেট করতে পারেন। Record পয়েন্টার, Array, এবং প্রথমিক ব্যবহার ইত্যাদি দিয়ে আরও জটিল কাঠামো তৈরি করা যায়।
ফাইল ব্যবস্থাপনা প্রোগ্রামিংয়ের একটি গুরুত্বপূর্ণ দিক। প্যাসক্যাল ভাষায় টেক্সট ফাইল এবং বাইনারি ফাইলের সাথে কাজ করার জন্য কিছু বিশেষ ফাংশন এবং কীবোর্ড-বাধিত অপারেটর রয়েছে। এই দুটি ফাইলের মধ্যে প্রধান পার্থক্য হলো:
- টেক্সট ফাইল (Text File): এখানে ডেটা পঠনযোগ্য (human-readable) আকারে থাকে। সাধারণত এটি ASCII কোডে সেভ করা হয় এবং সহজেই মানুষের পড়া এবং সম্পাদনা করা যায়।
- বাইনারি ফাইল (Binary File): এখানে ডেটা বাইনারি ফরম্যাটে থাকে এবং এটি সাধারণত সরাসরি মেমোরি থেকে পড়া বা লেখা হয়। বাইনারি ফাইলের মধ্যে কোনো টেক্সট বা পঠনযোগ্য তথ্য থাকে না।
এখন প্যাসক্যাল ভাষায় কিভাবে টেক্সট এবং বাইনারি ফাইলের সাথে কাজ করা হয় তা দেখি।
টেক্সট ফাইলের সাথে কাজ
প্যাসক্যাল ভাষায় টেক্সট ফাইলের সাথে কাজ করতে Assign, Reset, Rewrite, ReadLn, এবং WriteLn ফাংশনগুলো ব্যবহার করা হয়।
টেক্সট ফাইল লিখা
program TextFileWrite;
var
f: TextFile;
name: string;
begin
// ফাইল তৈরি বা খোলা
Assign(f, 'example.txt');
Rewrite(f); // নতুন ফাইল তৈরি বা পুরোনো ফাইল ওপেন
// ইউজারের ইনপুট নেওয়া
writeln('Enter your name:');
readln(name);
// ফাইলে লেখা
writeln(f, 'Hello, ', name);
// ফাইল বন্ধ করা
Close(f);
end.টেক্সট ফাইল থেকে পড়া
program TextFileRead;
var
f: TextFile;
name: string;
begin
// ফাইল খোলা
Assign(f, 'example.txt');
Reset(f); // ফাইল পড়ার জন্য ওপেন
// ফাইল থেকে পড়া
while not Eof(f) do // EOF = End Of File
begin
readln(f, name);
writeln('Read from file: ', name);
end;
// ফাইল বন্ধ করা
Close(f);
end.বাইনারি ফাইলের সাথে কাজ
বাইনারি ফাইলের সাথে কাজ করতে AssignFile, Reset, Rewrite, BlockRead, BlockWrite এবং Seek ফাংশনগুলো ব্যবহার করা হয়। বাইনারি ফাইলে ডেটা লেখার সময় ডেটাকে বাইনারি ফরম্যাটে সংরক্ষণ করা হয়।
বাইনারি ফাইল লিখা
program BinaryFileWrite;
var
f: file of Integer;
num: Integer;
begin
// বাইনারি ফাইল তৈরি বা খোলা
AssignFile(f, 'numbers.dat');
Rewrite(f); // বাইনারি ফাইল লেখার জন্য
// ইউজারের ইনপুট নেওয়া এবং ফাইলে লেখা
writeln('Enter an integer:');
readln(num);
Write(f, num); // বাইনারি ফাইলে লেখা
// ফাইল বন্ধ করা
CloseFile(f);
end.বাইনারি ফাইল থেকে পড়া
program BinaryFileRead;
var
f: file of Integer;
num: Integer;
begin
// বাইনারি ফাইল খোলা
AssignFile(f, 'numbers.dat');
Reset(f); // বাইনারি ফাইল পড়ার জন্য
// ফাইল থেকে পড়া
while not Eof(f) do // EOF = End Of File
begin
Read(f, num); // বাইনারি ফাইল থেকে পড়া
writeln('Read from binary file: ', num);
end;
// ফাইল বন্ধ করা
CloseFile(f);
end.টেক্সট ফাইল এবং বাইনারি ফাইলের মধ্যে পার্থক্য
| বৈশিষ্ট্য | টেক্সট ফাইল (Text File) | বাইনারি ফাইল (Binary File) |
|---|---|---|
| ডেটা সংরক্ষণ পদ্ধতি | পঠনযোগ্য টেক্সট (ASCII) | বাইনারি ডেটা |
| ফাইল প্রক্রিয়াকরণ | সহজ (মানুষের জন্য পাঠযোগ্য) | কঠিন (কম্পিউটার দ্বারা প্রক্রিয়া) |
| ডেটা টাইপ | সাধারণ টেক্সট, স্ট্রিং, বা নম্বর | যেকোনো ধরনের ডেটা, যেমন ইমেজ, অডিও |
| ফাইল সাইজ | সাধারণত ছোট (মোটামুটি কম আকারে) | বড় আকারের (বাইনারি ডেটা) |
সারাংশ
- টেক্সট ফাইল পঠনযোগ্য, সহজভাবে সম্পাদক বা ব্যবহারকারী দ্বারা পরিবর্তনযোগ্য।
- বাইনারি ফাইল কম্পিউটার বা প্রোগ্রামের দ্বারা ব্যবহৃত হয় এবং এটি সাধারণত প্রোগ্রামিং ডেটা সংরক্ষণে ব্যবহৃত হয়।
- প্যাসক্যাল ভাষায় ফাইল ব্যবস্থাপনা সহজতর করতে
Assign,Rewrite,ReadLn,WriteLnএবং বাইনারি ফাইলের জন্যBlockRead,BlockWriteব্যবহার করা হয়।
প্যাসক্যাল ভাষায় ফাইল অপারেশন সাধারণত ফাইলের মাধ্যমে ডেটা পড়া এবং লেখা সম্পর্কিত কার্যাবলী সম্পাদন করতে ব্যবহৃত হয়। প্যাসক্যাল ফাইল সিস্টেমের উপর কাজ করার জন্য বেশ কিছু কমান্ড ও ফাংশন প্রদান করে, যার মাধ্যমে আমরা ফাইল খুলতে, পড়তে, লিখতে এবং বন্ধ করতে পারি।
প্যাসক্যাল ফাইল অপারেশন সংক্রান্ত মৌলিক কমান্ড
- Assign: একটি ফাইলের নাম ও টাইপ নির্ধারণ করার জন্য ব্যবহৃত হয়।
- Reset: ফাইল থেকে ডেটা পড়ার জন্য ফাইলটি খোলার জন্য ব্যবহৃত হয়।
- Rewrite: নতুন ডেটা লেখার জন্য ফাইলটি খোলার জন্য ব্যবহৃত হয়।
- Read: ফাইল থেকে ডেটা পড়তে ব্যবহৃত হয়।
- Write: ফাইলের মধ্যে ডেটা লিখতে ব্যবহৃত হয়।
- Close: ফাইল বন্ধ করার জন্য ব্যবহৃত হয়।
ফাইল থেকে ডেটা পড়া
ফাইল থেকে ডেটা পড়তে হলে প্রথমে ফাইলটি Assign কমান্ড দিয়ে খোলা হয়, তারপর Reset কমান্ড দিয়ে ডেটা পড়া হয়।
উদাহরণ: ফাইল থেকে ডেটা পড়া
ধরা যাক, আমাদের একটি ফাইল আছে যার নাম data.txt এবং সেখানে কিছু সংখ্যা রয়েছে। আমরা ফাইলটি থেকে সংখ্যা পড়ে তাদের যোগফল বের করতে চাই।
program ReadFromFile;
var
f: Text; { ফাইল ভেরিয়েবল }
num, sum: Integer;
begin
sum := 0;
Assign(f, 'data.txt'); { ফাইলের নাম নির্ধারণ }
Reset(f); { ফাইলটি পড়ার জন্য খোলা }
while not Eof(f) do { ফাইলের শেষ না হওয়া পর্যন্ত পড়া }
begin
Read(f, num); { ফাইল থেকে ডেটা পড়া }
sum := sum + num; { যোগফল বের করা }
end;
Close(f); { ফাইল বন্ধ করা }
writeln('Sum of numbers: ', sum); { ফলাফল প্রদর্শন করা }
end.এই প্রোগ্রামে:
Assign(f, 'data.txt'): ফাইলটি নির্ধারণ করে।Reset(f): ফাইলটি পড়ার জন্য খোলা হয়।Read(f, num): ফাইল থেকে ডেটা পড়েnumভেরিয়েবলে রাখে।Close(f): ফাইলটি বন্ধ করা হয়।
ফাইলে ডেটা লেখা
ফাইলে ডেটা লেখার জন্য Assign কমান্ড দিয়ে প্রথমে ফাইলের নাম নির্ধারণ করতে হয় এবং তারপর Rewrite কমান্ড দিয়ে ফাইলটি খুলতে হয়। এর পর Write বা Writeln কমান্ড দিয়ে ডেটা লেখা হয়।
উদাহরণ: ফাইলে ডেটা লেখা
এবার আমরা একটি প্রোগ্রাম লিখব যা ইউজারের কাছ থেকে নাম গ্রহণ করে এবং একটি ফাইলে সংরক্ষণ করবে।
program WriteToFile;
var
f: Text; { ফাইল ভেরিয়েবল }
name: string;
begin
Assign(f, 'names.txt'); { ফাইলের নাম নির্ধারণ }
Rewrite(f); { নতুন ডেটা লেখার জন্য ফাইলটি খোলা }
writeln('Enter your name: ');
readln(name); { ইউজারের কাছ থেকে নাম নেয়া }
writeln(f, name); { ফাইলে নাম লেখা }
Close(f); { ফাইল বন্ধ করা }
writeln('Name has been written to the file.');
end.এই প্রোগ্রামে:
Assign(f, 'names.txt'): ফাইলের নাম নির্ধারণ করা হয়।Rewrite(f): ফাইলটি নতুন ডেটা লেখার জন্য খোলা হয়।Writeln(f, name): ফাইলে ইউজারের নাম লেখা হয়।Close(f): ফাইলটি বন্ধ করা হয়।
ফাইল অপারেশন সম্পর্কে কিছু গুরুত্বপূর্ণ দিক
- File Modes:
- Read Mode:
Reset(f)কমান্ড ব্যবহার করে ফাইলটি শুধুমাত্র পড়ার জন্য খোলা হয়। - Write Mode:
Rewrite(f)কমান্ড ব্যবহার করে ফাইলটি লেখার জন্য খোলা হয়। - Append Mode: যদি আমরা কোনো ফাইলে নতুন ডেটা যোগ করতে চাই, তবে
Appendকমান্ড ব্যবহার করতে হয়, যা ফাইলের শেষে নতুন ডেটা যোগ করে।
- Read Mode:
- EOF (End of File):
- Eof(f) ফাংশনটি ব্যবহার করে চেক করা হয় যে ফাইলের শেষ পৌঁছেছে কিনা। এটি যখন সত্য (True) হয়ে যায়, তখন ফাইলের আর কোনো ডেটা পড়া সম্ভব নয়।
সারাংশ
প্যাসক্যাল ভাষায় ফাইল অপারেশন ব্যবহার করে ডেটা পড়া এবং লেখা সম্ভব। ফাইল খুলতে Assign, ডেটা পড়তে Read, ডেটা লিখতে Write বা Writeln, এবং ফাইল বন্ধ করতে Close ব্যবহার করা হয়। এই ফাইল অপারেশনগুলো প্রোগ্রামিংয়ে ফাইলের মাধ্যমে ডেটা হ্যান্ডলিংয়ের জন্য অত্যন্ত গুরুত্বপূর্ণ।
Read more