Transcript ppsx
بسم هللا الرحمن الرحيم
L8,CSE 101: 2014-2015 © Zag. Univ.
Dr.Basheer M. Nasef
في المحاضرات السابقة
التعامل مع الكيانات الهامة.
بناء شريط القوائم وشريط األدوات.
بناء صناديق الحوار والرسائل.
التعامل مع السالسل الحرفيه +إيعاز if ( ) then endif.
Dr.Basheer M. Nasef
L8,CSE 101: 2014-2015 © Zag. Univ.
المحاضرة الثامنه
L8,CSE 101: 2014-2015 © Zag. Univ.
Dr.Basheer M. Nasef
المحاضرة الثامنه
التعامل مع الملفات :Files
ملفات النصوص التتابعية sequentialوالعشوائية .random
القراءة من ملف (و التأكد من وجود ملف).
الكتابة داخل ملف.
الدوال الخاصة بالتعامل مع الملفات.
الملخص .
Dr.Basheer M. Nasef
L8,CSE 101: 2014-2015 © Zag. Univ.
ملفات النصوص :Text Files
ملفات النصوص هي التي تخزن فيها البيانات على شكل شفرة .ASCII Code
االستفادة منها يكون في تخزين بيانات ثم استرجاعها الحقا.
مثال:
استقبال بيانات و درجات طالب فرقة معينة وتخزينهم في ملف ثم بعد عملية
االدخال نفتح الملف لنقرأ منه درجات كل طالب ثم حساب المجموع الكلي والتقدير
و اضافته للملف و هكذا...
عمل ملف يحتوي على بيانات موظفين بحيث يمكن اضافة بيانات موظف جديد أو
تحديث بيانات موجودة و هكذا...
ملفات النصوص التتابعية تأخذ االمتداد ) ).txtبينما ملفات النصوص العشوائية
تأخذ االمتداد )(.dat
Dr.Basheer M. Nasef
L8,CSE 101: 2014-2015 © Zag. Univ.
ملفات النصوص التتابعية : Sequential Files
.1
القراءة من ملف:
أوال فتح الملف للقراءة:
Open filename For Input As # nFile
حيث تمثل filenameاالسم المروري للملف بينما nFileتمثل رقما صحيحا
(… )1,2,يرمز للملف بعد ذلك في البرنامج.
مثال:
علما بأن الملف Students.txt
يحتوى على البيانات التالية:
Dr.Basheer M. Nasef
L8,CSE 101: 2014-2015 © Zag. Univ.
ملفات النصوص التتابعية : Sequential Files
.1
القراءة من ملف:
قراءة جزء من سطر على شكل مجموعة متغيرات:
قراءة سطر:
Line Input # nFile, stringName
Input # nFile, var1,var2,…,varn
قراءة عدد من األحرف من السطر:
حيث أن:
)stringName = Input (nChar, nFile
الرقم الذي يرمز للملف
مثال
متغير سلسلة حرفية
أسماء متغيرات
عدد األحرف
Dr.Basheer M. Nasef
nFile
stringName
…var1,var2,
nChar
L8,CSE 101: 2014-2015 © Zag. Univ.
ملفات النصوص التتابعية : Sequential Files
.1القراءة من ملف:
مثال:
الحظ مسار الملف:
Dr.Basheer M. Nasef
L8,CSE 101: 2014-2015 © Zag. Univ.
ملفات النصوص التتابعية : Sequential Files
لكي نستخدم الدالة Inputفي قراءة جزء من سطر على شكل مجموعة
متغيرات البد أن تكون هذه القيم مخزنة في الملف يفصل بينها فواصل:
Dr.Basheer M. Nasef
L8,CSE 101: 2014-2015 © Zag. Univ.
ملفات النصوص التتابعية : Sequential Files
كل ايعاز جديد يحتوي علي Inputأو Line Inputينتقل الى سطر جديد
في الملف:
Dr.Basheer M. Nasef
L8,CSE 101: 2014-2015 © Zag. Univ.
ملفات النصوص التتابعية : Sequential Files
لقراءة جميع محتويات الملف نستخدم حلقة Whileمع السؤال
على نهاية الملف باستخدام الدالة )(.EOF
مثال:
Dr.Basheer M. Nasef
L8,CSE 101: 2014-2015 © Zag. Univ.
ملفات النصوص التتابعية : Sequential Files
عند فتح ملف للقراءة يفضل التأكد أوال من وجود الملف و كذلك البد من
اغالق الملف عند االنتهاء .مثال:
الدالة )( Dir$تبحث عن الملف و اذا كان غير موجودا ترجع سلسلة خالية.
الدالة Closeتغلق الملف.
Dr.Basheer M. Nasef
L8,CSE 101: 2014-2015 © Zag. Univ.
ملفات النصوص التتابعية : Sequential Files
الكتابة في الملف:
أوال فتح الملف للكتابة:
Open filename For Append As # nFile
وضع االضافة :أي أن المطلوب هو اضافة بيانات جديدة الى الملف
الى جانب محتوياته القديمه.
وضع االخراج:
Open filename For Output As # nFile
وهنا يتم حذف جميع محتويات الملف أوال ثم الكتابة فيه.
وفى الحالتين :اذا لم يوجد ملف بهذ االسم المذكور في المسار يتم
إنشاء ملف جديد تلقائيا .filename
Dr.Basheer M. Nasef
L8,CSE 101: 2014-2015 © Zag. Univ.
ملفات النصوص التتابعية : Sequentia Files
الكتابة في ملف:
ثانيا :نستخدم أى من االيعازين التاليين:
Print # nFile, var1,var2,…,varn
Write # nFile, var1,var2,…,varn
حيث أن:
الرقم الذي يرمز للملف
أسماء متغيرات
Dr.Basheer M. Nasef
nFile
var1,var2,
…
L8,CSE 101: 2014-2015 © Zag. Univ.
: Sequential Files ملفات النصوص التتابعية
:الكتابة في ملف
:مثال
L8,CSE 101: 2014-2015 © Zag. Univ.
Dr.Basheer M. Nasef
الحظ:
عالمات األقتباس و الفواصل ال تحتسب ضمن السلسلة الحرفية
بالنسبة اليعاز Printبينما تظهر عند الكتابة باستخدام ايعاز .Write
اذا لم ينته أي من ايعازى Printأو Writeبفصلة أو فصلة منقوطة
فانه يتم االنتقال الى سطر جديد في الملف.
البد من غلق الملف بعد االنتهاء من عملية الكتابة.
Dr.Basheer M. Nasef
L8,CSE 101: 2014-2015 © Zag. Univ.
اليمكن القفز أو الوصول الى سطر معين داخل الملف التتابعي ولكن
يمكن
فقط قراءة األسطر واحدا تلو األخر.
اليمكن القراءة و الكتابة في نفس الملف في وقت واحد.
هذا النوع من الملفات غير مناسب لتخزين قيم كبيرة ألن أي قيمة يتم
تخزينها على كونها حرف (بمعنى يتم تخزينها في .)1Byte
Dr.Basheer M. Nasef
L8,CSE 101: 2014-2015 © Zag. Univ.
مثال
صمم برنامجا يقوم بعمل جرد في مخزن حيث يتم استقبال بيانات 100
سلعة متمثلة في االسم ,العدد المتاح ,سعر الوحدة .رتب البرنامج بحيث يتم
تخزين هذه البيانات في ملف باسم Storeثم قم بحفظ البيانات التالية في
ملف أخر باسم :Second
.Iاجمالي عدد السلع الموجودة مسبوقا بعبارة
"= "Items total count
.Iبيانات السلعة ذات أعلى سعر للوحدة مسبوقه بعبارة
""Item with maximum price:
.Iبيانات السلعة ذات أقل عدد متاح مسبوقه بعبارة
""Item with minimum count:
Run
Dr.Basheer M. Nasef
L8,CSE 101: 2014-2015 © Zag. Univ.
حل مثال
افترض ادخال بيانات 5سلع بدال من 100
Dr.Basheer M. Nasef
L8,CSE 101: 2014-2015 © Zag. Univ.
حل مثال
L8,CSE 101: 2014-2015 © Zag. Univ.
Dr.Basheer M. Nasef
حل مثال
L8,CSE 101: 2014-2015 © Zag. Univ.
Dr.Basheer M. Nasef
) (وضع التنفيذ:1 حل مثال
L8,CSE 101: 2014-2015 © Zag. Univ.
Dr.Basheer M. Nasef
كيف يمكن عمل رؤوس قوائم في الملف Available؟ ليكون شكل الملف
كالتالي:
اذا كان هناك أكثر من سلعة لها نفس العدد المتاح و كذلك أكثر من سلعة
لها نفس ثمن الوحدة اذن كيف نعدل حل مثال لكى نتمكن من عرض جميع
السلع ذات أقل عدد متاح و كذلك ذات أعلى سعر في الملف Available؟
Dr.Basheer M. Nasef
L8,CSE 101: 2014-2015 © Zag. Univ.
ملفات النصوص العشوائيه :Random Files
البد من إنشاء (االعالن عن) تركيبة لنوع السجالت (السطور) التى يراد تخزينها في
الملف.
هذه التركيبة من نوعية ال ( user-defined variablesالمحاضرة السابعه).
أى أن كل البيانات المخزنة لها نفس التركيبة (نفس عدد و نوعية المتغيرات).
لذلك امكانية البحث والوصول الى سجل Recordأو سطر معين أفضل بكثير من
الملفات التتابعية.
مثال لتركيبة سجل
Dr.Basheer M. Nasef
L8,CSE 101: 2014-2015 © Zag. Univ.
ملفات النصوص العشوائية : Random Files
فتح ملف:
)Open filename For Random As # nFile Len= Len (record
حيث أن recordتمثل اسم متغير من النوعية المعلن عنها كتركيبة لسجالت الملف.
اضافة سجل الى الملف:
Put #nFile [,record number], variablename
استرجاع (قراءة) سجل من الملف:
Get #nFile [,record number], variablename
وتمثل variablenameاسم متغير السجل (نفس االسم الذي يكتب ك .)record
والحظ أن record numberحقل اختياري ويمكن تجاهله اذا لم تستدعى الحاجة.
Dr.Basheer M. Nasef
L8,CSE 101: 2014-2015 © Zag. Univ.
ملفات النصوص العشوائية : Random Files
مثال :ادخال بيانات 3سلع ثم كتابة بيانات السلعة األولى على
النموذج:
Dr.Basheer M. Nasef
L8,CSE 101: 2014-2015 © Zag. Univ.
ملفات النصوص العشوائية : Random Files
تابع المثال:
الحظ:
البد من تحديد طول السلسلة الحرفية اذا وجد ضمن تركيبة السجل واال سيحدث خطأ
أثناء تخزين بيانات في الملف.
ايعاز Get #1,1,Itm2يقوم بنسخ محتويات السجل األول من الملف رقم 1في
المتغير .Itm2
Dr.Basheer M. Nasef
L8,CSE 101: 2014-2015 © Zag. Univ.
صمم برنامجا يقوم بعمل جرد في مخزن حيث يتم استقبال بيانات 100
سلعة متمثلة في االسم ,العدد المتاح ,سعر الوحدة .رتب البرنامج بحيث
يتم استقبال بيانات السلع من خالل صناديق نصوص ثم يتم ضم أسماء
السلع الى صندوق موحد .بعد انتهاء ادخال بيانات كل السلع اذا اختار
المستخدم أحد أسماء السلع من الصندوق الموحد يتم عرض بياناتها
على نفس صناديق النصوص المستخدمة لالدخال.
Dr.Basheer M. Nasef
Run
L8,CSE 101: 2014-2015 © Zag. Univ.
الحل (تصميم الواجهة)
حيث يتم النقر أوال على زر Startليفتح الملف .ادخال بيانات في صناديق النصوص ثم
النقر على Add Itemيضمها للملف .أما النقر على Show Itemفيعرض بيانات
العنصر المختار من الصندوق الموحد على صناديق النصوص.
Dr.Basheer M. Nasef
L8,CSE 101: 2014-2015 © Zag. Univ.
كود البرنامج
L8,CSE 101: 2014-2015 © Zag. Univ.
Dr.Basheer M. Nasef
وضع التنفيذ
بعد ادخال 5سلع
عرض بيانات السلعة المختارة
Dr.Basheer M. Nasef
L8,CSE 101: 2014-2015 © Zag. Univ.
ملفات النصوص العشوائية : Random Files
الحظ:
رقم السجل recordداخل الملف العشوائي يبدأ من 1ولكن دليل العناصر داخل الصندوق
الموحد يبدأ من ,0وتمت مراعاة ذلك في االيعازnRec =Combo1.ListIndex + 1 :
يفضل أيضا السؤال عن وجود ملف بنفس االسم قبل فتحه باستخدام الداله )(.DIR$
يمكن استخدام )( EOFلتحديد اذا ما تم الوصول ألخر سجل في الملف أم ال.
في المثال السابق تمكنا من القراءة و الكتابة في الملف العشوائي فى أن واحد.
هناك ايعاز Seek filenumber, recordnumberوالذي يضبط مؤشر الملف على
السجل رقم recordnumberوبعد ذلك يمكن الدخول اليه باستخدام .Get, Put
Dr.Basheer M. Nasef
L8,CSE 101: 2014-2015 © Zag. Univ.
عدل حل المثال السابق بحيث يمكن اظهار عدد العناصر (السجالت)
الموجودة في الملف Tempاذا أراد المستخدم ذلك.
(تعامل مع الملف مباشرة بدال من ع ّد عناصر الصندوق الموحد )
كيف يمكن اضافة زر Remove Itemبحيث اذا اختار المستخدم أحد
العناصر من الصندوق الموحد ثم نقر على هذا الزر يتم ازالته من الملف ومن
الصندوق أيضا؟ (صمم طريقه بنفسك لعمل هذه الوظيفة ألنه اليوجد ايعاز مباشر يقوم بذلك)
Dr.Basheer M. Nasef
L8,CSE 101: 2014-2015 © Zag. Univ.
بعض الدوال الخاصة بالتعامل مع الملفات:
نسخ الملفات:
FileCopy source, destination
Kill filename
حذف ملف:
اعادة تسمية ملف:
توليد مجلد جديد:
Name oldname As newname
MKDir foldername
في أي من االيعازات السابقة :البد من كتابة مسار الملف كامال وليس االسم فقط.
Dr.Basheer M. Nasef
L8,CSE 101: 2014-2015 © Zag. Univ.
.I
كيف يمكن التعامل مع الملفات النصيه سواء كانت (عشوائيه /
تتابعيه).
.II
الفرق بين . Print & Write , Get & Put
Dr.Basheer M. Nasef
L8,CSE 101: 2014-2015 © Zag. Univ.