[email protected] . جامعة الكوفة/ نضال خضير العبادي.د class employee-info { protected : char name [ 20 ] ; int age ; public : void getdata ( ) ; void display ( ) ; }; void main ( ) { student-info obj [ max ] ; infile.open ( \" data \" َ ios :: in || ios :: out ) ; //الطزإ في المَف infile.open ( fname َ ios :: out ) ; ………………….. cout << \" storing onto the file ……. \\n \" ; for ( I = 0 ; I < = max -1 ; ++I ) { infile.write ( ( char* ) &obj [ I ] َsizeof ( obj [ I ] ) ) ; } ……………… infile.open ( fname َ ios :: in ) ; //القراءه من المَف cout << \" reading from the file ……… \\n \" ; for ( I = 0 ; I < = max -1 ; ++I ) { infile.read ( ( char* ) &obj [ I ] َ sizeof ( obj [ I ] ) ) ; obj [ I ] .display ( ) ; } infile.close() ; } الاوناف المتداخلة وعمليات الملف21.22 Nested Classes and File Operations ،كمرا سربق وان عرفرت ان الصرنف ممكرن ان يكرون عضرو مرن صرنف اخرر فعنردما يرتم الاعرلان عرن صرنف علرى انره عضرو مرن صرنف اخرر فران هرذا الصرنف وفي هرذ،) او صنف ضمن صنف اخرnested class( العضو يدعى صنف متداخل كمرا،الحالة فان الصنف العضو سوف يكون مدا الصنف الاخر الذي هو عضو فيه .ان كيان الصنف الخارجي سوف لايحتوي على كيان الصنف الداخلي 615
من البداية إلى البرمجة الكيانيةC++ • مقطع البرنامج التالي يوض كيفية قراءة وكتابة كيانات ونف متداخل في ملف // Example 12.13 #include < fstream > class Student-Info { private : char name [ 20 ] ; public : void getbase ( ) ; void display ( ) ; class Date { private : int year ; public : void getdata ( ) ; void show-data ( ) ; class Age-Class { private : int age ; public : void getage () ; // Ageنهاية اللهنف الدمر void show-age ( ) ; }; } ; // Data نهاية اللهنف البيانا } ; // Student-Infoنهاية الاع إ عن اللهنف مدَوما الطَبه void main ( ) { Student-Info obj1 ; //الطزإ في المَف Student-Info :: date obj 2 ; Student-Info :: date :: Age-Class obj 3 ; fstream infile ; infile.open ( fname ios :: in || ios :: out ) ; ………………………… infile.open ( fname َ ios :: out ) ; cout << \" storing onto the file ……… \\n \" ; for ( I = 0 ; I < = n-1 ; i++ ) { 616
[email protected] . جامعة الكوفة/ نضال خضير العبادي.د infile.write ( ( char* ) &obj 1 َsizeof ( obj 1 ) ) ; infile.write ( ( char* ) &obj 2 َsizeof ( obj 2 ) ) ; infile.write ( ( char* ) &obj 3 َsizeof ( obj 3 ) ) ; } infile.close () ; ………………… infile.open ( fname َ ios :: in ) ; //القراءه من المَف cout << \" reading from the file ……\\n \" ; for ( I = 0 ; I < = n-1 ; ++I ) { obj 1.display () infile.read ( ( char* ) &obj 1 َsizeof ( obj 1 ) ) ; infile.read ( ( char* ) &obj 2 َsizeof ( obj 2 ) ) ; infile.read ( ( char* ) &obj 3 َsizeof ( obj 3 ) ) ; ; obj 2. show-date () ; obj 3. show-age () ; } infile.close () ; } • برنامج لقراءة بيانات مصفوفة كيانات ونف متوداخل مون لوحوة المفواتي وكتابتهوا // Example 12.14 .في ملف معين #include < fstream > #include < string > char sex ; #include < iomanip > const int max = 100 ; class Student-Info { private : char name [ 20 ] ; long int rollno ; public : getbase () ; void display () ; class Date () { private : int day ; int month ; int year ; public : void getdate () ; void show-date () ; class Age-Class { private : int age ; public : 617
من البداية إلى البرمجة الكيانيةC++ void getage () ; // Age نهاية الاع إ عن اللهنف void show-age () ; } ; } ; // Date نهاية الاع إ عن اللهنف } ; // Student-Infoنهاية الاع إ عن اللهنف void student-info :: getbase () { cout << \" enter a name : \" ; cin >> name ; cout << \" roll number : \" ; cin >> rollno ; cout << \" sex : \" ; cin >> sex ; } void Student-Info :: Date :: getdate () { cout << \" Enter date of a birth \" << endl ; cout << \" day \" ; cin >> day ; cout << \" month : \" ; cin >> month ; cout << \" year : \" ; cin >> year ; } void Student-Info :: Date :: Age-Class :: getage () { cout << \" Enter an age : \" ; cin >> age ; } void Student-Info :: display () { cout << name << \" \" << '\\t' ; cout << rollno << \" \" ; cout << sex << \" \"; } void Student-Info :: Date :: show-date () { cout << day << ' / ' << month << ' / ' << year << '\\t ' ; } void Student-Info :: Date :: Age-Class :: show-age() { cout << '\\t ' << age << endl ; } void main () { Student-Info obj 1 [ max ] ; Student-Info :: date obj 2 [ max ] ; Student-Info :: Date :: age-class obj 3 [ max ] ; int I َn ; fstream infile ; char fname [ 10 ] ; cout << \" Enter a file name to be stored ? \\n \" ; cin >> fname ; infile.open ( fname َios :: in || ios :: out ) ; cout << \" How many students ? \\n \" ; // ُّتقرأ من لوحة المفاتي cin >> n ; cout << \" Enter the following information \\n \" ; // program continueالبرنامج له تِمَة // continue for ( I = 0 ; I < = max-1 ; ++ I ) { int j = I + 1 ; cout << \" \\n object : \" << j << endl ; obj 1 [ I ] . getbase () ; obj 2 [ I ] .getdate () ; 618
[email protected] . جامعة الكوفة/ نضال خضير العبادي.د obj 3 [ I ] .getage () ; } //الطزإ في المَف infile.open ( fname َios :: out ) ; cout << \" storinf onto the file …….. \\n \" ; for ( I = 0 ; I < = max-1 ; ++I ) { infile.write (( char* ) & obj 1 [ I ] َsizeof ( obj 1 [ I ] ) ) ; infile.write ( ( char* ) & obj 2 [ I ] َsizeof ( obj 2 [ I ] )) ; infile.write ( ( char* ) & obj 3 [ I ] َsizeof ( obj 3 [ I ])) ; } infile.close () ; //القراءه من المَف infile.open ( fname َios :: in ) ; cout << \" reading from the file ………… \\n \" ; cout << \" \\n\\n\\n \" << endl ; cout << \" contents of the array of nested classes \\n \" ; cout << \" ------------------------------------------- \" << endl ; cout << \" student's – name roll – no sex date – of – birth age \\n \" ; cout << \" --------------------------------------------------------------------- - \" << endl ; for ( I = 0 ; I < = max-1 ; ++I ) { infile.read ( ( char* ) & obj 1 [ I ] َsizeof ( obj 1 [ I ] )) ; infile.read ( ( char* ) & obj 2 [ I ] َsizeof ( obj 2 [ I ] )) ; infile.read ( ( char* ) & obj 3 [ I ] َsizeof ( obj 3 [ I ] )) ; obj 1 [ I ] .display () ; obj 2 [ I ] .show-date ; obj 3 [ I ] . show-age () ; } cout << \" ________________________________ \" << endl ; infile.close () ; } معالجة ملفات الووول العشوائي21.21 Random Access File Processing يعتبررر خلررق ملفررات الوصررول المتسلسررل اكثررر سررهولة مررن ملفررات الوصررول حي ان البيانات فري ملفرات الوصرول المتسلسرل تخرزن وتسرترجع بشركل،العشوائي ان مؤشرر الملرف يتحرر مرن بدايرة الملرف الرى نهايرة،متسلسل واحدة بعرد الاخررى الملف في ملف الوصول المتسلسل بينمرا لريب بالضررور ان يبردأ المؤشرر فري ملرف 619
C++من البداية إلى البرمجة الكيانية الوصرول العشروائي مرن بدايرة الملرف ويتحرر باتجراة نهايرة الملرف ،ان المؤشرر فري ملف الوصول العشروائي يتحرر مباشررة الرى أي موقرع فري الملرف بردلا مرن تحركرة بالتترالي كمرا فري ملرف الوصرول المتسلسرل .تسرتخدم ملفرات الوصرول العشروائي مرع ملفات قواعد البيانات ،ولغر قراءة وتحروير كيران فري قاعردة البيانرات فران الملرف يجب ان يفتح في طور الوصول لكرل مرن القرراءة والكتابرة ويسرتخدم الملرف الررئيب ( )fstreamللاعلان عن ملف الوصول العشوائي وكما بينا سابقا فران ( )fstreamهرو صرنف يسرتند علرى كرل مرن الصرنفين ( .)and ofstream ،ifstreamان ()fstream يررث مؤشرري ملرف للتعامرل مرع ملرف الوصرول العشروائي واحرد للادخرال والاخرر للاخراج (لكل من القراءة والكتابة). يفتح ملف الوصول العشوائي مع الاطوار التالية ( (ios::in ،ios::out ،ios::ate ،and ios::binary •مقطرع البرنرامج الترالي يبرين كيفيرة فرتح ملرف الوصرول العشروائي لكرل مرن القراءة والكتابة > #include < fstream { )( void main ; fstream file ; ) file.open ( fname ،ios :: in || ios :: out || ios :: ate || ios :: binary } …………….. ملاحظة//: يفضرل فرتح الملرف مرع الاطروار اعرلا لغرر انجراز عمليرات القرراءة، الكتابة ،والاضافة ،ويجب ان يعرف على انه ثنائي لان بيانات الصنف الاعضاء تخزن بالصيغة الثنائية . 611
د .نضال خضير العبادي /جامعة الكوفة [email protected] . ملاحظة //: fstreamيررث الردوال الاعضراء التاليرة لغرر تحريرك مؤشرر الملرف بمرا يساعد للوصول الى قاعدة البيانات قريم التعردد الرقمري الموقع في الملف enum ios :: beg بداية الملف ios :; cur الموقرررررررع الحرررررررالي للمؤشر ios :: end نهاية الملف اما الدوال الاعضاء التالية فهي تستخدم لمعالجة ملفات الوصول العشوائي )seekg( .2وهي تستخدم لتحديد عمليات الملف لعمليات الادخال العشوائي • مقطع البرنامج التالي يوضح عمل هذ الدالة: > #include < fstream اذهب الى البايت رقم //41 { )( void main اذهب الى البايت رقم //41 ; fstream infile ……………………. اذهب الى نهاية الملف // مؤشر الملف يجب ان // ; ) infile.seekg ( 40 يتحر للخلف بايت واحد // ; ) infile.seekg ( 40 , ios :: beg ; ) infile.seekg ( 0 ،ios :: end ; ) infile.see;g ( -1 ،ios :: cur )seekp( .2يستخدم لتحديد عمليات الملف للأخراج العشوائي (tellg) .3يستخدم لفح الموقع الحالي للادخال )tellp) .4يستخدم لفح الموقع الحالي للاخراج 611
C++من البداية إلى البرمجة الكيانية 21.23الووول العشوائي Random Access مبردئيا ان الملفرات تقررأ وتكترب بشركل متسلسرل .ولكرن يمكرن الوصرول الررى الملف بترتيب عشوائي .في نمام الأدخال والأخراج فري C++فانرك تقروم بالوصرول العشوائي باستخدام الدوال ()( .)seekg(), and seekpاغلب الاشكال عمومية هي: ;)istream &seekg(off_type offset ،seekdir origin ;)ostream &seekp(off_type offset ،seekdir origin هنا ) (off_typeهو مرن نروع الاعرداد الصرحيحة يعررف بواسرطة ( (iosوالتري لهرا القابليرة لحمرل اكبرر قيمرة مقبولرة والتري يمكرن ان تأخرذها الازاحرة ( .(offsetأمرا seekdirفهو متعدد رقمي ( (enumerationله هذ القيم: ios::beg بداية الملف ios::cur الملف الحالي ios::end نهاية الملف يحصل الحرف التالي في حزمة الادخال )( peek يعيد حرف الى حزمة الادخال )( putback تدفق مخرجات الحزمة )( flush نمام الأدخال والأخراج فري C++يردير مؤشررين يشرتركان مرع الملرف .واحرد هرو ) (get pointerوالرذي يحردد مكران حردوث عمليرة الأدخرال اللاحرق فري الملرف. المؤشر الأخر هو( (putpointerوالذي يحدد اين ستحدث عملية الاخراج اللاحقة في الملف .فري كرل وقرت عنردما تحردث عمليرة ادخرال او اخرراج ،فران المؤشرر المناسرب سيقدم .استخدام الدوال ()( )seekg(), and seekpسيساعد علرى الوصرول الرى الملرف بطريقة غير تسلسلية. الدالرة ( )seekgتحرر مؤشرر الملرف المشرتر الحرالي (مؤشرر )getبازاحرة مقدرة بعدد من البايتات ضمن المصدر المحدد .الدالة ) )seekpتحر مؤشرر الملرف المشرتر الحرالي (مؤشرر )putpointerبازاحرة مقردرة بعردد مرن البايترات ضررمن المصدر المحدد. 612
د .نضال خضير العبادي /جامعة الكوفة [email protected] . بشركل عرام الوصرول العشروائي للادخرال والاخرراج المفررو ان ينجرز فقرط على تلك الملفات التي فتحت للعمليات الثنائية. • برنامج يوض استخدام الدالة ) ،)seekpويسم ل بتحديد اس ملوف فوي سوطر الاوامر ،متبوع بعدد البايتات ال ي يحدد موقع الأدخال في الملوف والو ي ترغوب ان تبدأ منه بعملية الأدخال .سيقوم البرنامج بعدها بكتابوة Xفوي الموقوع المحودد. لاح بان الملف يجب ان يفت لعمليات القراءة والكتابة الثنائي. // Example 12.15 >#include <iostream >#include <fstream >#include <cstdlib ;using namespace std )] [int main(int argc َchar *argv { { )if(argc!=3 ;\"cout << \"Usage: CHANGE <filename> <byte>\\n ;return 1 } ;)fstream out(argv[1] َios::in | ios::out | ios::binary { )if(!out ;\"cout << \"Cannot open file.\\n ;return 1 } ;)out.seekp(atoi(argv[2]) َios::beg ;)'out.put('X ;)(out.close ;return 0 } • برنوامج يسوتخدم ) . )seekgسويقوم بعورض محتويوات الملوف ،بودءا مون الموقوع ال ي تحدده على سطر الامر )Seekp( .سيحرك مؤشر .put // Example 12.16 >#include <iostream >#include <fstream 613
من البداية إلى البرمجة الكيانيةC++ #include <cstdlib> using namespace std; int main(int argc َchar *argv[]) { char ch; if(argc!=3) { cout << \"Usage: NAME <filename> <starting location>\\n\"; return 1; } ifstream in(argv[1] َios::in | ios::binary); if(!in) { cout << \"Cannot open file.\\n\"; return 1; } in.seekg(atoi(argv[2]) َios::beg); while(in.get(ch)) cout << ch; return 0; } :بامكانك ان تحدد الموقع الحالي لكل مؤشر ملف باستخدام الدالة pos_type tellg(); ( والتي لهرا القابليرة لحمرل اكبررios( ( هو نوع معرف بواسطةpos_type) هنا .قيمة تعيدها دالتة ) التري تحرر مؤشرراتseekg(), and seekp()( هنا نسر متطابقرة لكرل مرن .)tellg(), and tellp()( الملرف الرى الموقرع المحردد بواسرطة القريم المعرادة لكرل مرن :الصيغة العامة لهم هو istream &seekg(pos_type position); ostream &seekp(pos_type position); 614
د .نضال خضير العبادي /جامعة الكوفة [email protected] . 21.24فح حالات الادخال والاخراج Checking I/O Status نمرررام الادخرررال والخرررروج فررري C++يحرررافظ علرررى معلومرررات الحالرررة حرررول المخرجررات لكررل عمليررة مررن عمليررات الادخررال والاخررراج .الحالررة الحاليررة لترردفق المدخلات والمخرجات تكون موصوفة في كيان من نروع ،iostateوالتري هري قائمرة اعداد تعرف بواسطة ( )iosوالذي يحتوي على هذ الاعضاء: ))tellg يعيد موقع getالحالي ))tellp يعيد موقع putالحالي ios::goodbit عدم وجود خطأ بضبط البتات تعيد 1عندما يصل نهاية الملف ،وصفر بخلاف ذلك ios::eofbit تعيد 1عندما لايحدث خطأ في الادخال او الاخراج ،بخرلاف ذلرك يعيرد صرفر ios::failbit يعيرد 1عنردما يحردث خطرأ فري الادخرال او الاخرراج ،و صرفر بخرلاف ذلرك ios::badbit هنرا طريقتران بالامكران ان تسراعد بالحصرول علرى معلومرات حالرة الادخرال والاخرراج .اولا ،بالامكران اسرتدعاء الدالرة ) ،(rdstateوالتري هري عضرو مرن (.)ios ولها الصيغة العامة: ;) (iostate rdstate وهي تعيد الحالة الحالية لبتات الاخطاء .وكما يمكنك ان تخمن مرن النمرر فري قائمة الاعلام (بتات الاخطاء) فران ) (rdstateسرتعيد goodbitعنردما لايحردث خطرأ. بخلاف ذلك فان خطأ سيعاد. الطريقرة الثانيرة بامكانرك ان تحردد اذا ماحردث خطرأ وذلرك باسرتخدام واحرد او اكثر من دوال iosالاعضاء: ;)(bool bad ;)(bool eof 615
من البداية إلى البرمجة الكيانيةC++ bool fail(); bool good(); القراءة والكتابة في الملف النصي21.25 Reading and Writing Text Files او الكتابرة فري ملرف نصري هرو باسرتخدام العوامرل/ان ابسط طريقة للقراءة من .(<< and >>) .test وسلسلة رمزية في ملف يسمى، قي حقيقية، • برنامج يكتب عدد وحي // Example 12.17 #include <iostream> #include <fstream> using namespace std; int main() { ofstream out(\"test\"); if(!out) { cout << \"Cannot open file.\\n\"; return 1; } out << 10 << \" \" << 123.23 << \"\\n\"; out << \"This is a short text file.\"; out.close(); return 0; } وسلسلة رمزية من الملوف الو ي خلوك بالرنوامج، حرفا،• برنامج يقرأ عددا وحيحا 12.17 // Eample 12.18 #include <iostream> #include <fstream> using namespace std; int main() 616
د .نضال خضير العبادي /جامعة الكوفة [email protected] . { ;char ch ;int i ;float f ;]char str[80 ;)\"ifstream in(\"test { )if(!in ;\"cout << \"Cannot open file.\\n ;return 1 } ;in >> i ;in >> f ;in >> ch ;in >> str ;\"cout << i << \" \" << f << \" \" << ch << \"\\n ;cout << str ;)(in.close ;return 0 } ضرع فري ذهنرك بران العامرل )>>( يسرتخدم لأغررا قرراءة الملفرات النصرية، ويحردث هنرا تحويرل لربعض الحرروف .مثرال ،حرروف الفراغرات ( (whitespaceيرتم حرذفها .امرا اذا اردت منرع تحويرل اي حررف ،فأنرك يجرب أن تفرتح الملرف فري طرور الوصول الثنائي ،كذلك تذكر عندما تستخدم العامل (>>) لقراءة سلسلة رمزية ،ضع توقف عندما يصادفك حرف من حروف الفراغات .whitspace 21.26الأدخال والأخراج الثنائي غير المنسك Unformatted Binary I/O ملفات النص المنسقة (مثل تلك المستخدمة في المثال السابق) تكون مفيردة فري حالات مختلفة ،ولكن ليب لها المرونرة التري فري الملفرات الثنائيرة غيرر المنسرقة .لهرذا السربب C++تروفر عردد مرن دوال الأدخرال والأخرراج للملرف الثنرائي (احيانرا يردعى الملف الخام )rawوالتي بامكانها انجاز عمليات غير منسقة. 617
C++من البداية إلى البرمجة الكيانية فعندما تنجز عمل من نوع العمليات الثنائية على الملف ،تاكرد مرن فرتح الملرف باسررتخدام محرردد الطررور ) .(ios::binaryبررالرغم مررن ان دوال الملررف غيررر المنسررق سروف تعمرل علرى الملفرات المفتوحرة لطرور الرنص ،فرأن بعرض تحرويلات الحرروف ربما تحدث .تحويلات الحروف تعطل الغر من عمليات الملف الثنائي. بشركل عرام ،هنرا طريقتران لقرراءة وكتابرة البيانرات الثنائيرة غيرر المنسرقة مرن او الررى الملررف .اولا ،يمكنررك كتابررة بايررت وذلررك باسررتخدام الدالررة العضررو ()(،)put وقراءة بايت وذلك باستخدام الدالة العضرو ))( .(getالطريقرة الثانيرة ،باسرتخدام دوال C++لأدخال وأخرراج كتلرة ()( )read(), and writeكرل مرن هرذ الطررق سروف يرتم تجربتها هنا. 21.26.2استخدام ))( ) get() and put الدالرة ))( )getلهرا عردد مرن الأشركال ،ولكرن النسرخة الأكثرر اسرتخداما هري الموضحة فيما يلي ،مع دالة ))((put ;)istream &get(char &ch ;)ostream &put(char ch الدالة ))( (getتقرأ حرفا مفردا واحدا من حزمرة بيانرات وتضرعها فري المتغيرر ،chفهي تعيرد مرجعيرة الرى الحزمرة .وتكرون القيمرة صرفر او فررا ) (nullأذا مرا ترم الوصول الى نهاية الملف. الدالة ))( (putتكتب chالى الحزمة وتعيد مرجعية الى الحزمة. *برنامج سوف يقوم بعر محتويات اي ملف على الشاشة ،وسوف يستخدم الدالة ( )getالتي تقرأ حرفا من ملف وتكتبه ) (putاي الحرف في ملف. // Example 12.19 >#include <iostream >#include <fstream ;using namespace std )] [int main(int argc َ char *argv { 618
[email protected] . جامعة الكوفة/ نضال خضير العبادي.د char ch; if(argc!=2) { cout << \"Usage: PR <filename>\\n\"; return 1; } ifstream in(argv[1] َ ios::in | ios::binary); if(!in) { cout << \"Cannot open file.\\n\"; return 1; } // ستِوإ طأ عند الواللهول الى نهاية المَفin while(in) { in.get(ch); if(in) cout << ch; } in.close(); return 0; } مسرببا توقرف حلقرة، سريكون الشررط خطرأ،عنرد الوصرول الرى نهايرة الملرف عليه هنا في الحقيقة طرق اكثر رصانه لكتابة شفرة حلقرة التكررار،while التكرار كما في ادنا,التي تقرأ وتعر الملف while(in.get(ch)) cout << ch; وهرذ سرتكون خطرأin ( سرتعيد الحزمرةget) هذا الشكل يعمل وذلك لان الدالة .عند الوصول الى نهاية الملف .( لكتابة سلسلة رمزية في الملفput) • برنامج يستخدم // Example 12.20 #include <iostream> #include <fstream> using namespace std; int main() { char *p = \"hello there\"; ofstream out(\"test\" َios::out | ios::binary); if(!out) { cout << \"Cannot open file.\\n\"; return 1; } while(*p) out.put(*p++); 619
C++من البداية إلى البرمجة الكيانية ;)(out.close ;return 0 } 21.26.1قراءة وكتابة كتل من البيانات Reading and Writing Blocks of Data قراءة وكتابة كتل من البيانات الثنائية ،مستخدما الدوال الأعضاء read() and )(write صيغتها العامة هي: ;)istream &read(char *buf ،streamsize num ;)ostream &write(const char *buf ،int streamsize num الدالة ( )readتقرأ عددا مرن البايترات ( )numمرن الحزمرة المشرتركة وتضرعها فري مكران فري الرذاكرة مؤشرر عليهرا بواسرطة المؤشرر( .)bufوكمرا بينرا سرابقا ،حجرم الحزمة ) (streamsizeمعرفة كشكل مرن الاعرداد الصرحيحة .وهري يمكنهرا مرن حمرل اكبر عدد من البايتات والتري يمكرن ان تنقرل بواسرطة اي عامرل مرن عوامرل الادخرال والاخراج. • برنامج يكتب ث يقرأ مصفوفة من الأعداد الصحيحة // Example 12.21 >#include <iostream >#include <fstream ;using namespace std )(int main { ;}int n[5] = {1, 2, 3, 4, 5 ;register int i ;)ofstream out(\"test\" َ ios::out | ios::binary { )if(!out ;\"cout << \"Cannot open file.\\n ;return 1 } 621
د .نضال خضير العبادي /جامعة الكوفة [email protected] . ;)out.write((char *) &n َsizeof n ;)(out.close for(i=0; i<5; i++) // clear array ;n[i] = 0 ;)ifstream in(\"test\" َios::in | ios::binary { )if(!in ;\"cout << \"Cannot open file.\\n ;return 1 } ;)in.read((char *) &n َsizeof n for(i=0; i<5; i++) // show values read from file ;\" \" << ]cout << n[i ;)(in.close ;return 0 } لاحررظ ان تحويررل الانررواع داخررل الاسررتدعاء ()( )read(),and writeيكررون ضروريا عندما تعمل على الذاكرة ( )bufferوالتي لرم تعررف كمصرفوفة احررف .اذا مرا ترم الوصرول الرى نهايرة الملرف قبرل ان يرتم قرراءة عردد الاحررف المحردد (،)num عنردها ببسراطة فران الدالرة ( )readسررتتوقف ،ومسراحة الرذاكرة سرتحتوي عردد مررن الاحرررف والترري كانررت مترروفرة .بامكانررك ان تجررد عرردد الاحرررف الترري تررم قراءتهررا باستخدام دالة عضو اخرى ،تدعى ))( ،(gcountوالتي لها الصيغة التالية ;)(streamsize gcount الدالرة ))( (gcountعيرد عردد الاحررف التري ترم قراءتهرا بواسرطة اخرر عمليرة ادخال. • مثال لمقارنة ملف Example for File Comparison البرنرامج الترالي يوضرح قروة وبسراطة نمرام ملفرات .C++فهرو يقرارن ملفرين لمعرفة اذا كانا متساويين .هذا ممكن باستخدام دوال الملفات الثنائيرة )(،(read ))( .eof(), and gcountيفررتح البرنررامج اولا الملفررات للعمليررات الثنائيررة( .وهررذا ضرروري لمنرع تحرويلات الاحررف مرن الحردوث) ،بعردها ،تقررا جرزءا واحردا مرن الذاكرة المؤقتة في الوقت الواحد من كل مرن الملفرين وتقرارن محتوياترة مرا .ولتحديرد 621
من البداية إلى البرمجة الكيانيةC++ ) لتحديد بالضربط كرم عردد الاحررف فريgcount( حجم الذاكرة المؤقتة تستخدم الدالة فران القليرل مرن الشرفرةC++ عنرد اسرتخدام دوال ملفرات، كمرا تررى،الرذاكرة المؤقتره .تحتاج لانجاز هذ العملية • برنامج لمقارنة اثنان من الملفات // Example 12.22 #include <iostream> #include <fstream> using namespace std; int main(int argc َchar *argv[ ]) { register int i; unsigned char buf1[1024] َbuf2[1024]; if(argc!=3) { cout << \"Usage: compfiles <file1> <file2>\\n\"; return 1; } ifstream f1(argv[1] َ ios::in | ios::binary); if(!f1) { cout << \"Cannot open first file.\\n\"; return 1; } ifstream f2(argv[2] َ ios::in | ios::binary); if(!f2) { cout << \"Cannot open second file.\\n\"; return 1; } cout << \"Comparing files...\\n\"; do { f1.read((char *) buf1 َ sizeof buf1); f2.read((char *) buf2 َ sizeof buf2); if(f1.gcount() != f2.gcount()) { cout << \"Files are of differing sizes.\\n\"; f1.close(); f2.close(); return 0; } 622
[email protected] . جامعة الكوفة/ نضال خضير العبادي.د // compare contents of buffers for(i=0; i<f1.gcount(); i++) if(buf1[i] != buf2[i]) { cout << \"Files differ.\\n\"; f1.close(); f2.close(); return 0; } } while(!f1.eof() && !f2.eof()); cout << \"Files are the same.\\n\"; f1.close(); f2.close(); return 0; } 623
C++من البداية إلى البرمجة الكيانية 624
[email protected] . جامعة الكوفة/ نضال خضير العبادي.د الملاحك IBM Character Codes ASCII Chart :A الملحك IBMشفرات رموز DEC عشري HEX Symbol Key المفتا Use in C استخدام بلغة سادس الرمز عشر 1 11 (NULL) Ctrl 2 Ctr A 1 11 A Ctrl B Ctrl C 2 12 B Ctrl B Ctrl E 3 13 C Ctrl F Ctrl G 4 14 D Backspace 5 15 E Tab Ctrl J 6 16 F Ctrl K Ctrl L 7 17 G Enter Beep Ctrl N Backspace 8 18 H Ctrl O Tab Ctrl P Linefeed (new line) 9 19 I Ctrl Q Vertical Tab Ctrl R Form Feed 11 A1 J Ctrl S Carriage Return Ctrl T 11 B1 K Ctrl U Ctrl V 12 C1 L Ctrl W Ctrl X 13 D1 M Ctrl Y Ctrl Z 14 E1 N Escape 15 F1 O 16 11 P 17 11 Q 18 12 R 19 13 S 21 14 T 21 15 U 22 16 _ 23 17 W 24 18 X 25 19 Y 26 A1 Z 27 B1 a 625
من البداية إلى البرمجة الكيانيةC++ 28 C1 b Ctrl \\ 29 D1 c Ctrl ] 31 E1 d Ctrl 6 31 F1 e Ctrl – 32 21 SPACE BAR 33 21 ! ! 34 22 “ “ 35 23 # # 36 24 $ $ 37 25 % % 38 26 & & 39 27 ‘ ‘ 41 28 ( ( 41 29 ) ) 42 A2 * * 43 B2 + + 44 C2 , , 45 D2 – – 46 E2 . . 47 F2 / / 48 31 1 1 49 31 1 1 51 32 2 2 51 33 3 3 52 34 4 4 53 35 5 5 54 36 6 6 55 37 7 7 56 38 8 8 57 39 9 9 58 A3 : : 59 B3 ; ; 61 C3 < < 61 D3 = = 62 E3 > > 626
[email protected] . جامعة الكوفة/ نضال خضير العبادي.د 63 F3 ? ? @ 64 41 @ A B 65 41 A C D 66 42 B E F 67 43 C G H 68 44 D I 69 45 E J K 71 46 F L M 71 47 G N O 72 48 H P Q 73 49 I R S 74 A4 J T U 75 B4 K V W 76 C4 L X Y 77 D4 M Z [ 78 E4 N \\ ] 79 F4 O ^ _ 81 51 P ' a 81 51 Q 82 52 R 83 53 S 84 54 T 85 55 U 86 56 V 87 57 W 88 58 X 89 59 Y 91 A5 Z 91 B5 [ 92 C5 \\ 93 D5 ] 94 E5 ^ 95 F5 _ 96 61 ' 97 61 a 627
98 62 b من البداية إلى البرمجة الكيانيةC++ 99 63 c 111 64 d b 111 65 e c 112 66 f d 113 67 g e 114 68 h f 115 69 i g 116 A6 j h 117 B6 k i 118 C6 l j 119 D6 m k 111 E6 n l 111 F6 o m 112 71 p n 113 71 q o 114 72 r p 115 73 s q 116 74 t r 117 75 u s 118 76 v t 119 77 w u 121 78 x v 121 79 y w 122 A7 z x 123 B7 { y 124 C7 | z 125 D7 } { 126 E7 ~ | 127 F7 f } 128 81 Ä ~ 129 81 ü Ctrl ← 131 82 é Alt 128 131 83 É Alt 129 132 84 ä Alt 130 Alt 131 Alt 132 628
[email protected] . جامعة الكوفة/ نضال خضير العبادي.د 133 85 à Alt 133 Alt 134 134 86 å Alt 135 Alt 136 135 87 Ç Alt 137 Alt 138 136 88 ê Alt 139 Alt 140 137 89 ë Alt 141 Alt 142 138 A8 è Alt 143 Alt 144 139 B8 ï Alt 145 Alt 146 141 C8 î Alt 147 Alt 148 141 D8 ì Alt 149 Alt 150 142 E8 Ä Alt 151 Alt 152 143 F8 Å Alt 153 Alt 154 144 91 É Alt 155 Alt156 145 91 æ Alt157 Alt158 146 92 Æ Alt159 Alt160 147 93 ô Alt161 Alt162 148 94 ö Alt163 Alt164 149 95 ò Alt165 Alt166 151 96 ù Alt167 151 97 ù 152 98 ÿ 153 99 Ö 154 A9 Ü 155 B9 õ 156 C9 £ 157 D9 ¥ 158 E9 û 159 F9 ü 161 A0 á 161 A1 í 162 A2 ó 163 A3 ú 164 A4 ñ 165 A5 Ñ 166 A6 a 167 A7 o 629
168 A8 ® من البداية إلى البرمجة الكيانيةC++ 169 A9 © Alt168 Alt169 171 AA ™ Alt170 Alt 171 171 AB ' Alt 172 Alt 173 172 AC .. Alt 174 Alt 175 173 AD ¡ Alt 176 Alt 177 174 AE « Alt 178 Alt 179 175 AF » Alt 180 Alt 181 176 B0 ¤ Alt 182 Alt 183 177 B1 ¤ Alt 184 Alt 185 178 B2 ¤ Alt 186 Alt 187 179 B3 ≥ Alt 188 Alt 189 181 B4 ¥ Alt 190 Alt 191 181 B5 µ Alt 192 Alt 193 182 B6 ð Alt 194 Alt 195 183 B7 ς Alt 196 Alt 197 184 B8 Π Alt 198 Alt 199 185 B9 π Alt 200 Alt 201 186 BA ∫ Alt 202 187 BB a 631 188 BC o 189 BD Ω 191 BE æ 191 BF ™ 192 C0 ¿ 193 C1 ¡ 194 C2 ¬ 195 C3 √ 196 C4 ∫ 197 C5 ≈ 198 C6 Δ 199 C7 « 211 C8 » 211 C9 ... 212 CA g
[email protected] . جامعة الكوفة/ نضال خضير العبادي.د 213 CB À Alt 203 Alt 204 214 CC à Alt 205 Alt 206 215 CD Õ Alt 207 Alt 208 216 CE Œ Alt 209 Alt 210 217 CF œ Alt 211 Alt 212 218 D0 – Alt 213 Alt 214 219 D1 — Alt 215 Alt 216 211 D2 \" Alt 217 Alt 218 211 D3 \" Alt 219 Alt 220 212 D4 Ô Alt 221 Alt 222 213 D5 \" Alt 223 Alt 224 214 D6 ÷ Alt 225 Alt 226 215 D7 ◊ Alt 227 Alt 228 216 D8 ÿ Alt 229 Alt 230 217 D9 Ÿ Alt 231 Alt 232 218 DA / Alt 233 Alt 234 219 DB ¤ Alt 235 Alt 236 221 DC < Alt 237 221 DD > 222 DE fi 223 DF fl 224 E0 α 225 E1 β 226 E2 Γ 227 E3 π 228 E4 ς 229 E5  231 E6 µ 231 E7 τ 232 E8 Ë 233 E9 Θ 234 EA Ω 235 EB Î 236 EC Ï 237 ED ψ 631
238 EE ∈ من البداية إلى البرمجة الكيانيةC++ 239 EF Ô Alt 238 Alt 239 241 F0 ≡ Alt 240 Alt 241 241 F1 + Alt 242 Alt 243 242 F2 ≥ Alt 244 Alt 245 243 F3 ≤ Alt 246 Alt 247 244 F4 Ù Alt 248 Alt 249 245 F5 1 Alt 250 Alt 251 246 F6 ÷ Alt 252 Alt 253 247 F7 ∼ Alt 254 Alt 255 248 F8 ° الكلمات المحجوزة:B الملحق 249 F9 • namespace 251 FA . N 251 FB √ new 252 FC η O operator 253 FD ² Private 254 FE < P protected 255 FF blank public Asm 632 A auto Bool B break case catch C char class
[email protected] . جامعة الكوفة/ نضال خضير العبادي.د const const_cast continue Default delete register D do R reinterpret_cast double return dynamic_cast Short Else signed enum sizeof E explicit S static export static_cast extern struct switch template False this throw float T true F try typedef for friend typeid 633
G Goto من البداية إلى البرمجة الكيانيةC++ If typename I inline Union int U unsigned L Long using virtual Main V void M volatile wchar_t mutable W while 634
[email protected] . جامعة الكوفة/ نضال خضير العبادي.د References 1. Bjarne Stroustrup, “C++ Programming”, 3rd Edition, AT&T , 1997, ISBN 0201889544. 2. Bruce Eckel, President, “Thinking in C++”, 2nd Edition, Volum 1, Prentice Hall, 2000, ISBN 0-13-979809-9. 3. D. Ravichandran, “Program with C++ “, 2nd edition, McGraw- Hill publishing company Limited, 2003. 4. Danny Kalev, \"ANSI/ISO C++ Professional Programmer's Handbook”, Macmillan Computer Publishing, 1999. 5. David Vandevoorde, Nicolai M. Josuttis, “C++ Templates: The Complete Guide”, Addison Wesley, 2002, ISBN 0-201-73484- 2. 6. Francis Glassborow, Roberta Allen, “A Beginner’s Introduction to Computer Programming You Can Do It!”, John Wiley & Sons Ltd, 2004, ISBN 0-470-86398-6. 7. Grady Booch, Robert A. Maksimchuk, Michael W. Engle, and etal, “Object-Oriented Analysis and Design with Application”, 3rd edition, Pearson Prentice Hall, 2007, ISBN 0- 201-89551-X 8. Herb Sutter, Exceptional C++: 47 Engineering Puzzles, Programming Problems, and Solutions”, Addison Wesley, 1999, ISBN 0-201-61562-2. 9. Herbert Schildt, “C++ from the Ground Up”, 3rd Edition, The McGraw-Hill Companies, 2003, ISBN 0-07-222897-0. 10. Jayantha Katupitiya Kim Bentley, “Interfacing with C++ Programming Real-World Applications”, Springer-Verlag Berlin Heidelberg, 2006, Library of Congress Control Number: 2005937895, ISBN-10 3-540-25378-5. 11. Jeff Cogswell, Christopher Diggins, Ryan Stephens, Jonathan Turkanis, “C++ Cookbook”, O'Reilly, 2005, ISBN 0- 596-00761-2 12. Jeffrey S. Childs, “C++ Classes and Data Sructures”, Pearson Prentice Hall, 2008, ISBN 0-13-158051-5. 635
من البداية إلى البرمجة الكيانيةC++ 13. Matthew Telles, “C++ Timesaving Techniques™ For Dummies”, Wiley Publishing, Inc., 2005, ISBN 0-7645-7986- X. 14. Nassir H. Salman, “C++ Programming with 469 Solved Problems”, DAR Wael, 2009, ISBN 978-9957-11-759-7. 15. Nicholas A. Solter , Scott J. Kleper, “Professional C++”, Wiley Publishing, Inc., 2005, ISBN 0-7645-7484-1. 16. Nicolai M. Josuttis, “C++ Standard Library: A Tutorial and Reference”, Addison Wesley, 1999, ISBN 0-201-37926-0. 17. Paulo Franca, “C++: No Experience Required”, Sybex, 1998, ISBN 078212111X. 18. Ray Lischner, “C++ in a Nutshell”, O'Reilly, 2003, ISBN 0- 596-00298-X. 19. Robert Lafore, “Waite Group's Object-Oriented Programming in C++”, 3rd edition, Macmillan Computer Publishing,1998, ISBN 157169160x. 20. Sharam Hekmat, “C++ Programming”, Pragmatix Software Pty. Ltd., 1998. 21. Stanley B. Lippman, Josée Lajoie, Barbara E. Moo, “C++ Primer”, 4th Edition, Addison Wesley Professional, 2005, ISBN 0-201-72148-1 22. Steve Heller , “Learning to Program in C++”, Prentice Hall PTR, 2000, ISBN 0-13-032410-8 23. Steve Oualline, “Practical C++ Programming”, O'Reilly & Associates, Inc, USA, 1995, ISBN. 1-56592-139-9 24. Walter Savitch , “Problem solving with C++”, seven edition, Pearson Prentice Hall, 2009. 636
Search
Read the Text Version
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197
- 198
- 199
- 200
- 201
- 202
- 203
- 204
- 205
- 206
- 207
- 208
- 209
- 210
- 211
- 212
- 213
- 214
- 215
- 216
- 217
- 218
- 219
- 220
- 221
- 222
- 223
- 224
- 225
- 226
- 227
- 228
- 229
- 230
- 231
- 232
- 233
- 234
- 235
- 236
- 237
- 238
- 239
- 240
- 241
- 242
- 243
- 244
- 245
- 246
- 247
- 248
- 249
- 250
- 251
- 252
- 253
- 254
- 255
- 256
- 257
- 258
- 259
- 260
- 261
- 262
- 263
- 264
- 265
- 266
- 267
- 268
- 269
- 270
- 271
- 272
- 273
- 274
- 275
- 276
- 277
- 278
- 279
- 280
- 281
- 282
- 283
- 284
- 285
- 286
- 287
- 288
- 289
- 290
- 291
- 292
- 293
- 294
- 295
- 296
- 297
- 298
- 299
- 300
- 301
- 302
- 303
- 304
- 305
- 306
- 307
- 308
- 309
- 310
- 311
- 312
- 313
- 314
- 315
- 316
- 317
- 318
- 319
- 320
- 321
- 322
- 323
- 324
- 325
- 326
- 327
- 328
- 329
- 330
- 331
- 332
- 333
- 334
- 335
- 336
- 337
- 338
- 339
- 340
- 341
- 342
- 343
- 344
- 345
- 346
- 347
- 348
- 349
- 350
- 351
- 352
- 353
- 354
- 355
- 356
- 357
- 358
- 359
- 360
- 361
- 362
- 363
- 364
- 365
- 366
- 367
- 368
- 369
- 370
- 371
- 372
- 373
- 374
- 375
- 376
- 377
- 378
- 379
- 380
- 381
- 382
- 383
- 384
- 385
- 386
- 387
- 388
- 389
- 390
- 391
- 392
- 393
- 394
- 395
- 396
- 397
- 398
- 399
- 400
- 401
- 402
- 403
- 404
- 405
- 406
- 407
- 408
- 409
- 410
- 411
- 412
- 413
- 414
- 415
- 416
- 417
- 418
- 419
- 420
- 421
- 422
- 423
- 424
- 425
- 426
- 427
- 428
- 429
- 430
- 431
- 432
- 433
- 434
- 435
- 436
- 437
- 438
- 439
- 440
- 441
- 442
- 443
- 444
- 445
- 446
- 447
- 448
- 449
- 450
- 451
- 452
- 453
- 454
- 455
- 456
- 457
- 458
- 459
- 460
- 461
- 462
- 463
- 464
- 465
- 466
- 467
- 468
- 469
- 470
- 471
- 472
- 473
- 474
- 475
- 476
- 477
- 478
- 479
- 480
- 481
- 482
- 483
- 484
- 485
- 486
- 487
- 488
- 489
- 490
- 491
- 492
- 493
- 494
- 495
- 496
- 497
- 498
- 499
- 500
- 501
- 502
- 503
- 504
- 505
- 506
- 507
- 508
- 509
- 510
- 511
- 512
- 513
- 514
- 515
- 516
- 517
- 518
- 519
- 520
- 521
- 522
- 523
- 524
- 525
- 526
- 527
- 528
- 529
- 530
- 531
- 532
- 533
- 534
- 535
- 536
- 537
- 538
- 539
- 540
- 541
- 542
- 543
- 544
- 545
- 546
- 547
- 548
- 549
- 550
- 551
- 552
- 553
- 554
- 555
- 556
- 557
- 558
- 559
- 560
- 561
- 562
- 563
- 564
- 565
- 566
- 567
- 568
- 569
- 570
- 571
- 572
- 573
- 574
- 575
- 576
- 577
- 578
- 579
- 580
- 581
- 582
- 583
- 584
- 585
- 586
- 587
- 588
- 589
- 590
- 591
- 592
- 593
- 594
- 595
- 596
- 597
- 598
- 599
- 600
- 601
- 602
- 603
- 604
- 605
- 606
- 607
- 608
- 609
- 610
- 611
- 612
- 613
- 614
- 615
- 616
- 617
- 618
- 619
- 620
- 621
- 622
- 623
- 624
- 625
- 626
- 627
- 628
- 629
- 630
- 631
- 632
- 1 - 50
- 51 - 100
- 101 - 150
- 151 - 200
- 201 - 250
- 251 - 300
- 301 - 350
- 351 - 400
- 401 - 450
- 451 - 500
- 501 - 550
- 551 - 600
- 601 - 632
Pages: