‫الجمهورية العربية السورية‬

‫جامعة تشرين‬

‫كلية هندسة تكنولوجيا المعلومات واالتصاالت‬

‫تقديم‬

‫اشــراف‬
‫د‪.‬م ‪.‬أليدا آسرب‬

‫م‪ .‬هادي هوال‬

‫‪ 1023‬ميالدي‬
‫‪1‬‬

..................................................................................................... :‬‬ ‫‪ –3–1 –2‬التفاعل بين مكونات الواجهة الرسومية ‪)01 ( ...............................‬‬ ‫برمجة الواجهات الرسومية في الـ ‪: MATLAB‬‬ ‫‪ –2 – 2‬الفكرة العامة عن المشروع ‪) 5 ( .........................................................................................................................................................................:‬‬ ‫‪ –4–1 –2‬الملفات والتوابع الالزمة إلنجاز المشروع ‪)01( .......................................... :‬‬ ‫‪ – 1 – 2‬مقدمة عن برمجة الواجهات الرسومية‪) 5 ( .........‬‬ ‫الـخــالصـة‬ ‫‪) 05 ( ............................................................... ‫المحـتـويـات‬ ‫كلمة شكر ‪) 3 ( ...............................................:‬‬ ‫‪ – 2–1 –2‬تصميم الواجهة ‪) 5 ( ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................‬‬ ‫املــراجــع‬ ‫‪2‬‬ .......................................:‬‬ ‫‪) 04 ( ........ :‬‬ ‫‪ – 1–1 –2‬ادراج المكونات للواجهة‪) 7 ( ...................

‬‬ ‫ونشكرجزيل الشكر كل من ساعدنا وقدم لنا النصيحة سائلين هللا تعالى أن يجزيهم عنا خير الجزاء‪.‬واالستاذ هادي‪ .‬‬ ‫و من دواعي سرورننا وعميق عرفاننا أن نقدم شكرنا وامتناننا للدكتورة أليدا‪ .‬لكل الجهود الكريمة التي‬ ‫بذلوها في االشراف على هذا المشروع طوال فترة التحضير‪.‬‬ ‫وكل اعتزازنا وشكرنا لألسرة الغالية التي أنارت لنا دربنا بالنصيحة والتشجيع والدعاء ‪.. ‫نتوجه أوال بالشكر هلل تبارك وتعالى الذي بلطفه ومنه الكريم ألهمنا ويسر لنا األمر إلنجاز هذا المشروع فأوجد األسباب‬ ‫وقدر االقدار‪.‬‬ ‫‪3‬‬ ..

4 .

..‬‬ ‫حيث ستولد هذه التعليمة واجهة رسومية وسيتم اسناد قيمة (‪ )...‬حيث ستظهر نافذة واجهة خالية من العناصر ودون‬ ‫أي مؤثرات كما هو موضح‪:‬‬ ‫‪.‬‬ ‫‪ – 2 – 0‬مقدمة عن برمجة الواجهات الرسومية ‪:GUI‬‬ ‫يوفر الماتالب آلية لبرمجة الواجهات الرسومية من خالل كتابة التعليمات االزمة والتي سنورد شرحها الحقا حيث يتمكن المستخدم من التعامل مع‬ ‫البرامج في الماتالب مباشرة ودون اللجوء إلى نافذة األوامر ‪:‬‬ ‫‪ – 0–2 –0‬تصميم الواجهة‪:GUI‬‬ ‫إن التعليمة الالزمة إلنشاء الواجهة الرسومية في الماتالب هي ‪:‬‬ ‫‪Figure=figure.‬‬ ‫‪5‬‬ .‬كمخرج عند نجاح العملية‪ . ‫‪ –0 – 0‬الفكرة العامة عن المشروع ‪:‬‬ ‫سنقوم في هذا المشروع ببرمجة الواجهات الرسومية في الماتالب ومن ثم ربط هذه الواجهة مع برنامج يقوم ببناء شبكة عصبونية وظيفتها‬ ‫التعرف على األحرف والرموز من خالل تدريب الشبكة وفق خوارزميات معينة للوصول إلى النتائج المرادة منها‪.

)‪'Position'.‬‬ ‫‪:‬‬ ‫‪6‬‬ ..‬مع العلم أن هناك الكثير من الخصائص ولكن‬ ‫سنكتفي بهذا القدر‪ .‬‬ ‫‪'numberTitle'.‬والتعليمة التي تحقق هذا الغرض هي كالتالي‪:‬‬ ‫‪Figure=figure('color'..‫في هذه الحالة لن نتمكن من تحقيق األهداف التي صممت من أجلها الواجهة الرسومية لذلك يجب إعطاء هذه الواجهة ميزات وخصائص معينة من‬ ‫اجل اضفاء الحيوية والتفاعل مع المستخدم‪ ..‬‬ ‫‪'name'..'off'.‬‬ ‫....30783]..FigureSize‬‬ ‫هنا قمنا بإضافة اللون للواجهة الرسومية وأضفنا لها اسم وحددنا مكان توضعها على الشاشة ‪ .[0...'Abdul Ghani Gomaa'...090196 0..2985 0.‬وعند كتابة هذه التعليمات ضمن نافذة األوامر ستظهر النتيجة التالية‪:‬‬ ‫‪.

'callback'..‬‬ ‫‪'HandleVisibility'..0901960805058479 0...‬‬ ‫..FigureSize‬‬ ‫‪aaaPanel=uipanel('parent'..‬‬ ‫سنسرد اآلن بع التعليمات التي تنشأ واجهة رسومية تحوي على أغلب هذه الكونات المذكورة أعاله‪:‬‬ ‫‪Figure=figure('color'.298039227724075 0..‬‬ ‫‪7‬‬ .‬‬ ‫‪'numberTitle'.'Abdul Ghani Gomaa'..215686276555061 0.301960796117783]...18823529779911]..‬‬ ‫‪'name'..)‪'Position'.'off'.0588235296308994 0.. Figure. ‫‪ – 2–2 –0‬ادراج المكونات للواجهة‪:‬‬ ‫كما تحدثا آنفا بأن الواجهة الرسومية يجب أن تكون تفاعلية أي ان المستخدم سيصل من خالل مكونات الواجهة إلى مبتغاه حيث يهدف‬ ‫برنامجه أو مشروعه ‪..‬‬ ‫كل المكونات التي تحويها الواجهات الرسومية تتشارك بنفس الصفات والخصائص تقريبا حيث يبين الجدول التالي أهم الخصائص لمكونات‬ ‫الواجهة ‪...[0...[0..‬‬ ‫‪'backgroundColor'.'normalized'...‬‬ ‫‪'Units'.

. 'style'. buttton_2=uicontrol('parent'....07]. 'fontSize'..6 0.'Arabic'. 'fontSize'..'‫'أدخل أحد األحرف العربية أو األجنبية للتحقق منها بواسطة الشبكة العصبية الصناعية‬.94].87058824300766 0. 'String'. 'backgroundColor'.3 0.94 0.94 0.. 'callback'. 'Units'.... 'Tag'.4 0.564 0.'t_2'.'bold').'NewknowEnglish()'....9]).8 0..[0...53 0..94]..94 0.'push button'.'NewknowArabic()'...00294122248888]. 'Units'.18... 'style'. 'fontweight'.....734 0.464].aaaPanel..35 0. 'position'....[0.'push button'... 'String'. 8 .95 0... 'style'.95].. 'FontName'. 'callback'. 'backgroundColor'.. 'Units'....'bold'. buttton_1=uicontrol('parent'..'normalized'. 'Position'.[0..1 0. 'position'.... 'backgroundColor'. 'String'...[0.'panel1'..06]. 'Title'.....16 0.''...[1 1 1].. 'ForegroundColor'....3 0.. 'fontSize'. 'fontName'...'English'....'none'. 'callback'..[0.06].165].[0.. 'String'.[0....23.3 0.. 'Units'...5 0.'normalized'...18...95 0..[0.35 0..07 0... 'ForegroundColor'.aaaPanel. 'position'..94 0..[0..16 0..[0......2 0. 'fontweight'.. 'fontweight'. 'FontName'. 'position'..'edit'....'bold'..'Ventilate AOE'.'normalized'.. 'style'... buttton_4=uicontrol('parent'.[0..aaaPanel..[0..aaaPanel...'text'.'centerTop'. 'TitlePosition'.. 'TAG'.'ae_AlMateen')..1 0. 'backgroundColor'..126 0.534313732385635 0.. 'ForegroundColor'. 'ForegroundColor'...490196079015732 0].....'Letters (-*-) Processing'.'Text'...'ae_AlMateen')... 'fontSize'..12]....15....'normalized'..364705884456635 0.. buttton_3=uicontrol('parent'..... 'borderType'.

564 0.165].‬‬ ‫‪'fontSize'..734 0....'bold‬‬ ‫طبعا قمنا بكتابة هذه التعليمات ضمن ملف ذو الحقة ‪ *.‬‬ ‫.‫‪'ForegroundColor'..m:‬وعند تنفيذ هذا الملف سيظهر الخرج التالي‪:‬‬ ‫‪9‬‬ ..18.[0.)'‪'fontweight'.

‫‪ –3–2 –0‬التفاعل بين مكونات الواجهة الرسومية ‪:‬‬ ‫كما شاهدنا في الصورة أننا قمنا بإضافة عدة مكونات ( ‪ ) UIPanel-Text Field-Edit field .m‬‬ ‫حيث يحتوي على مصفوفة مكونة ‪ 84‬سطر و‪ 84‬عمود لكل عنصر من عناصر هذه المصفوفة قيمة معينة (‪ 0‬أو ‪)1‬‬ ‫تمثل هذه المصفوفة االأحرف األبجدية العربية المكونة من ‪ 84‬حرف حيث كل حرف يمثل عند عرضه ضمن شاشة اضهار مكونة من ‪84‬‬ ‫بيكسل وتكون شاشة االظهار على شكل مصفوفة مكونة من ‪ 4‬أعمدة و ‪ 6‬أسطر كما يلي‪:‬‬ ‫‪11‬‬ ...button‬و هكذا‪.‬‬ ‫‪ –4–2 –0‬الملفات والتوابع الالزمة إلنجاز المشروع ‪:‬‬ ‫في هذا المشروع لدينا ‪ 5‬ملفات سنقوم بالربط فيما بينها وربطها مع الواجهة الرسومية من أجل استدعاء التوابع الالزمة وتنفيذ المطلوب‪..‬‬ ‫كل عنصر اومكون من هذه المكونات يؤدي غرض معين من خالل استدعاء دالة معينة من نفس الملف أو من ملف خارجي عبر الخاصية‬ ‫‪ Callback‬حيث سيسند لهذه الخاصية اسم التابع المراد استعدعاؤه عند تنفيذ عملية ما على أحد العناصر في الواجهة كضغط زر أو استعراض‬ ‫مجلد ما أو‪. .‬‬ ‫الملف الثاني هو‪:‬‬ ‫‪NewknowArabic.m‬وهو الملف الرئيسي الذي يحوي الكود الالزم ألنشاء الواجهة الرسومية ‪.‬‬ ‫الملف األول هو‪:‬‬ ‫‪ A_FINAL_MMM_ADD ..

m‬‬ ‫ويحتوي على الكود التالي ‪:‬‬ ‫)(‪function uuu‬‬ ‫.‬‬ ‫‪11‬‬ .'*.)‪fulpathname=strcat(Pathname.)‪imshow(fulpathname‬‬ ‫‪end‬‬ ‫وظيفته استعراض المجلدات ‪ browsing‬من أجل اختيار ملف ما مثل الصور او ‪..'File Selector‬‬ ‫..)'‪[filename.‪global fulpathname‬‬ ‫.m‬‬ ‫حيث يحتوي على مصفوفة مكونة ‪ 84‬سطر و‪ 86‬عمود لكل عنصر من عناصر هذه المصفة قيمة معينة (‪ 0‬أو ‪)1‬‬ ‫تمثل هذه المصفوفة االأحرف األبجدية العربية المكونة من ‪ 86‬حرف حيث كل حرف يمثل عند عرضه ضمن شاشة اضهار مكونة من ‪84‬‬ ‫بيكسل وتكون شاشة االظهار على شكل مصفوفة مكونة من ‪ 4‬أعمدة و ‪ 6‬أسطر كما يلي‪:‬‬ ‫الملف الرابع هو‪:‬‬ ‫‪Uuu.png'}.filename‬‬ ‫.... ‫الملف الثالث هو‪:‬‬ ‫‪: NewknowEnglish.jpg'. Pathname]=uigetfile({'*.‬الخ‪.

‪0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0‬‬ ‫.‪0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0‬‬ ‫.‪0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0‬‬ ‫.‪0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0‬‬ ‫.‪0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0‬‬ ‫.‪0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0‬‬ ‫.‪0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0‬‬ ‫.‪0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0‬‬ ‫.‪0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0‬‬ ‫.‪0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0‬‬ ‫‪12‬‬ .‪0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0‬‬ ‫.‪0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0‬‬ ‫. ‫أما الملف األخير فهو‪:‬‬ ‫‪NewknowImage.‪0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0‬‬ ‫.‪0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0‬‬ ‫.m‬‬ ‫وهو يحتوي على مصفوفتين إحداها مصفوفة مكونة من ‪ 84‬سطر و‪ 84‬عمود كما هي في الصورة أعاله ‪.‪0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0‬‬ ‫.‪0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0‬‬ ‫.‬‬ ‫ومصفوفة أخرى قطرية أيضا بنفس الحجم (‪ )84*86‬حيث يأخذ فيها ترتيب الحرف األبجدي القيمة واحد في العمود والسطر الذي يمثل‬ ‫ترتيب الحرف في األبجدية‪:‬‬ ‫[=‪target‬‬ ‫.‪1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0‬‬ ‫.‪0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0‬‬ ‫.‪0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0‬‬ ‫.‪0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0‬‬ ‫.

(‪[ net.trainParam.)‪output=compet(output‬‬ ‫.))‪answer=find(compet(output==1‬‬ ‫.answer‬‬ ‫‪13‬‬ .tr]=train(net.‪0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0‬‬ ‫.]‪0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1‬‬ ‫هذا ويحتوي هذا الملف أيضا التعليمات الالزمة ألنشاء الشبكة العصبية وتدريبها من اجل التعرف على األحرف الموجودة ضمن الصور ‪.trainParam.L‬‬ ‫.show=1‬‬ ‫.001‬وذلك من أجل ‪ 511‬دورة ‪:‬‬ ‫.{'logsig'.target‬‬ ‫أماعملية اختبار الشبكة للتعرف على حرف مدخل من بيانات التدريب نفسها ستكون‪:‬‬ ‫‪.epochs=500‬‬ ‫. ‪net.‪0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0‬‬ ‫.0‬إنشاء شبكة االنتشار الخلفي بتابع تعلم ‪ traingdx‬و ‪ goal=0.‪0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0‬‬ ‫.[10 28].Letters.‪0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0‬‬ ‫. (‪N=Letters(:.trainParam.‪0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0‬‬ ‫..'traingdx‬‬ ‫.goal=0. )’‪net=newff(minmax(Letters).001‬‬ ‫‪ . ‫. ‪net.'logsig'}.‪0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0‬‬ ‫.‪0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0‬‬ ‫.plotchar2(Letters(:.plotchar2(N‬‬ ‫.2‬أما عملية تدريب الشبكة فتتم وفق التعليمة التالية‪:‬‬ ‫. ‪net.‬‬ ‫وهذه التعليمات هي كالتالي‪:‬‬ ‫‪ .3‬‬ ‫.))‪figure.)‪figure.

‫لقد قمنا في هذا المشروع المتواضع ببرمجة الواجهات الرسومية في الماتالب ‪ GUI‬ومن ثم قمنا بإضافة المكونات الالزمة لهذه الواجهة من‬ ‫أجل التعرف على األحرف العربية واألجنبية ومن ثم قمنا بانشاء الملفات الالزمة لربطها مع الواجهة الرسومية‬ ‫ومن ثم قمنا بإنشاء الشبكة العصبية الصناعية وقمنا بعملية تدريبها من اجل التعرف على االحرف عند استعراضنا لصورة ما‬ ‫تحوي حرف معين ‪. C#‬‬ ‫‪14‬‬ .‬‬ ‫وبعد البحث المطول من اجل تطوير الشبكة العصبونية للتعرف على الكلمات والرموز االخرى قمت بالتوقف في برناج الماتالب‬ ‫عند هذا القدر وتابعت العمل في برمجة الشبكات العصبونية في لغة‪.

Artificial intelligence and expert systems for engineers.com e-mail:abdulghani.com mobile:00963991460037 15 . Contact me: Facebook:abdulghani.‫ ( م‬Matlab ‫ تصميم الواجهات الرسومية بالـ‬.Dr –Eng Hssan ALbustani 3.Artifitial Neural Network .gomaa@yahoo.‫ قسم الذكاء الصنعي‬-‫ويكيبوكس‬-‫ مقدمة في الشبكات العصبية االصطناعية‬-3 :‫األجنبية‬ 1.‫ الشبكات العصبية االصطناعية‬-2 .Neural Network Toolbox™ User’s Guide Of Matlab 2.gomaa /facebook.)‫ بن العيد‬.wikipedia.1 http://en. :‫العربية‬ .org/wiki/Artificial_neural_networ: ‫ موسوعة ويكيبيديا‬.