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.‬‬