جميع الأنشطة

يتم تحديث محتوى هذا السجل تلقائيا   

  1. اليوم
  2. أمس
  3. اساسيات التعامل مع الصور - درس 4 فى هذا الدرس سنتحدث عن الأوامر imcrop bwselect bwareaopen bwdist bwperim imadd imsubtract imlincomb لا تنسوا دعم صفحة البرمجة فى المسابقة https://goo.gl/DWQvFO
  4. الاسبوع الماضي
  5. بسم الله الرحمن الرحيم السلام عليكم ورحمة الله وبركاته عودة بعد انقطاع بعدما شرحنا المرحلة الاولى من مراحل التحليل في المُترجم ، وهي مرحلة التحليل المعجمي ويتم فيها قراءة الـمُدخل و تقسيمه الى كلمات tokens وحفظة في جدول الرموز ، نبدأ اليوم بشرح المرحلة الثانية من التحليل و هي تحليل بناء أو تركيب الجملة syntax Analysis. تحليل بناء الجملة ( syntax analysis ) أو مايسمى ايضاً بـ ( Parser ) تقوم مهمته على التأكد من أن المُدخل متوافق مع القواعد المخصصة بلغة البرمجة و تكون قواعد اللغة محددة إما بـ (context-free-Grammer (CFG أو بـ BNF) Backus-Naur Form) وهي طرق لوصف قواعد اللغة. وتحليل بناء الجملة (syntax analysis ) من مهامه ايضاً اخراج الـtokens بشكل شجري وما يسمى ايضا بـ parsing tree وذلك بعد التاكد من أن الـ tokenn مطابق للشكل العام لقاعدة اللغة. هناك عدة انواع للمحلل ( parser ) : ١- المحلل العام ( universal ) وهو محلل عام لأي قاعدة لغة ، ولها عدة طرق أو خوارزميات مثل خوارزمية Cocke-Younger-Kasami و خوارزمية Earley. ولكن تعتبر طريقة غير فعالة جدا لتنفيذ المترجم. بالنسبه للنوع الثاني والثالث تعتبر هي الانواع الشائعة للمحلل ( parser ). ٢- محلل يعرف بـ الاعلى – الاسفل ( top-down parsing ) وهو اسم يصف العملية التي يقوم بها وهي بناء الشجرة tree parser ويبدأ ببنائها من الاصل/الجذر ( root ) انتهائا لـ الاطراف/الاوراق ( leaves ). ٣- محلل الاسفل-الاعلى ( bottom-up parsing ) وهو عكس النوع الذي قبله ، فهو يبني الشجرة من الاسفل ( leaves ) الى ان يصل لأعلى نقطه وهي الـ (roott). ولنفهم طريقة عمل المحلل ( parser ) يجب قبل ذلك ان نحدد ونعرف طريقة وصف قواعد اللغة الذي سيتبعه المحلل. وهنا سنعطي شرح عام وبسيط عن وصف اللغة بـ (context-free-Grammer (CFG. #context-free-Grammer هي طريقة لوصف اللغة وتحتوي على : - Variable/non-Terminal وهي المتغيرات التي تُحدد كيف تُبنى اللغة. - Terminal هي كلمات او الـ tokens - قاعدة التوليد production rule وهي التي تستبدل المتغير non-Terminal بإحدى/مجموعة من المتغيرات non-trminals أو الـكلمات terminalss. - رمز البداية start symbol و هو الرمز الذي نبدأ به عملية التبديل أو الاشتقاق ، ويعتبر ضمن مجموعة المتغيرات non-Terminall. #مثال : S → a B c B → d S و B هي متغيرات [non-terminal] a و d و c هي الكلمات [terminal] أو ماتسمى token S => a B c => a d c في الخطوه الاولى استبدلنا الـS بـ a B c وذلك باتباع القاعدة الأولى وفي الخطوة التي تليها استبدلنا الـB بـ الـ d وذلك بإتباع القاعدة الثانية #الاشتقاق ( Derivation ) : هي مجموعة من الخطوات المتسلسلة تبدأ من رمز البدء start symbol، ويتم استخدام قواعد التوليد production rule لاستبدال جميع المتغيرات non-terminal بـ ( terminals ). وهذه الطريقة تساعدنا في بناء الرسم الشجري بطريقة صحيحة. وللاشتقاق طريقتين : - اشتقاق اقصى اليسار ( left-most derivation ): بحيث يكون اختيار المتغير لتبديلة دائما هو المتغير المتواجد في اقصى اليسار. - اشتقاق اقصى اليمين ( right-most derivation ): بحيث يكون اختيار المتغير لتبديلة دائما هو المتغير المتواجد في اقصى اليمين. مثال : E → E + E E → E * E E → id اشتقاق اقصى اليسار ( left-most derivation ) E => E + E => E * E + E => id * E + E => id * id + E => id * id + id اشتقاق اقصى اليمين ( right-most derivation ) E => E + E => E + E * E => E + E * id => E + id * id => id + id * id نعود حاليا لموضوعنا الأساسي ، المحلل ( parser ) يأخذ المدخل من المرحلة التي قبله – مرحلة التحليل المعجمي – على شكل token و يتأكد من خلوها من الاخطاء المخصصة بتركيب وبناء الجملة بناءاً على قاعدة اللغة ، ومن بعد ذلك يبنى parser tree أو مايسمى ايضا بالـ syntax tree - ولها مسمى آخر أيضا هو semantic structure – وهو النتيجة من مرحلة تحليل بناء أو تركيب الجملة والتي ستذهب مباشرة للمرحلة التي بعدها وهي مرحلة التحليل الدلالي semantic analysis التي من خلالها يتم تصدير اللغة المتوسطة intermidiate code. *ملاحظة: مرحلة تحليل بناء الجملة syntax analysis فيها تفصيلات كثيرة ولا استطيع ذكرها جميعا في هذه التدوينة ، لمن يريد الاستزادة ، انصح بكتاب (Compilers Principles Techniques and Tools (2nd Edition .
  6. لنفرض انه لدينا مجموعة من النقاط لا يمكن الحصول على معادلة دقيقة بحيث تمر على جميع القيم و نريد إيجاد القيم الوسيطة او ما يعرف بإسم InterPolation فى هذا الفيديو بإذن الله سنشرح الأمر السريع بالماتلاب و ما هى مشاكله و حلول لبعض مشاكله حتى نوصل إلى الخطأ الذى لا يستطيع حله بطريقة سريعة و فى الفيديو القادم إن شاء الله سنشرح القانون و من ثم نحل تلك المشكلة https://www.youtube.com/watch?v=Leq1jHmeoMk&t=3s
  7. Earlier
  8. أهلا أخي , وعليكم السلام ورحمة الله وبركاته , أولاََ يجب ان تعلم ان php عبارة عن لغة برمجة وان الـورد بريس نظام ادارة محتوي وهو مبني علي php . ويمكن الخوض في الورد بريس لو كانت اساسياتك جيدة في الphp ولكن لو اردت احتراف الورد بريس وبناء البلوجن وما شابه عليك ان تحترف ال php , وهذه عبارة عن كورس php مبتدىء جدا ولكن يوجد بها كمية معلومات جميلة جدا جدا جدا كورس php  للمبتدئين ويوجد ايضاََ في نفس هذه القناة كورس php من الصفر وفيه معلومات ايضاََ , ويوجد ايضا في نفس القناة كورس php oop .. وفي حال الانتهاء منهم ان شاءالله امكانك ان تسأل سؤال اخر وسأحاول الارفاق به كورسات متقدمه وباللغة العربية .. بالتوفيق.
  9. https://www.youtube.com/watch?v=eRZ3nOelRDI المراجع التى تضمنها الفيديو ( ليس بالضرورة ترتيب الفيديو ) Ordinary and Partial Differential Equation Routines - H.J. Lee & W.E. Schiesser https://armaths.wordpress.com/2017/02... POWER SYSTEM ANALYSIS THIRD EDITION HADI SAADAT https://armaths.wordpress.com/2017/02... Electronics and Circuit Analysis Using MATLAB – John O. Attia ( First ) https://armaths.wordpress.com/2017/02... Electronic Devices and Amplifier Circuits with MATLAB Applications – Steven T. Karris (Second ) https://armaths.wordpress.com/2017/02... DIGITAL CIRCUIT ANALYSIS AND DESIGN WITH SIMULINK MODELING – STEVEN T. KARRIS https://armaths.wordpress.com/2017/02... ADVANCED MATHEMATICS AND MECHANICS APPLICATIONS USING MATLAB – HOWARD B. WILSON https://armaths.wordpress.com/2017/02... Circuit Analysis II with MATLAB - Steven T. Karris https://armaths.wordpress.com/2017/02... Solving ODEs with Matlab Instructors Manual - L.F. Shampine https://armaths.wordpress.com/2017/02... Engineering Analysis Interactive Methods and Programs with MATLAB - Y. C. Pao https://armaths.wordpress.com/2017/02... [David_Koenig]_Practical_Control_Engineering_Guid(BookSee.org) https://armaths.wordpress.com/2017/02... Essential MATLAB for Engineers and Scientists - Brian D. Hahn & Daniel T. Valentine https://armaths.wordpress.com/2017/02... Classical Feedback Control with MATLAB - Boris J. Lurie and Paul J. Enright https://armaths.wordpress.com/2017/02... Introduction to Simulink with Engineering Applications - Steven T. Karris https://armaths.wordpress.com/2017/02... Embedded Control Systems in C C++ Using MATLAB - Jim Ledin https://armaths.wordpress.com/2017/02... Intuitive Probability and Random Processes Using MatLab - Steven M. Kay https://armaths.wordpress.com/2017/02... Passive Income 30 Strategies and Ideas To Start an Online Business https://armaths.wordpress.com/2017/02...
  10. السلام عليكم هذه ليست مسابقة لكنها محاولة امس سألت لماذا لا توجد مراجع عربية قوية و للاسف اغلب الاجابات كانت ان العرب لا يحبون المساعدة و لكن اكثر اجابة اثرت فى لماذا لا تكتب مرجع إذن أقر انا حفيد أبو الرجال ( أحمد رأفت أبو الرجال ) انى هكتب مرجع بإذن الله بحيث ان انهيه اخر هذا العام بإذن الله اما عنكم اعزائى المتابعين إذا كنتم فريق فى مشروع تخرج لا تبخله و شاركه بين زملائك انا لا استطيع ان اعرض مالا عليك لكن أستطيع أن أعرض جزء بسيط من خير و شهرة و الباقى عليك #الامر_يستحق
  11. سؤال للمناقشة ليه اغلب المراجع بتكون اجنبية ليه مفيش مراجع عربية بقوة الأجنبية و متكنش ترجمة اه معاكم ان فى كتب بس اغلبها بتبقى كورسات محدودة و اعتمادنا على الفيديوهات و اه فى قنوات قوية على اليوتيوب فى البرمجة بس المراجع مش قوية ليه؟؟
  12. فى هذا الدرس سنشرح الأوامر الاتية imadjust imhist histeq imopen strel imresize imrotate اتمنى ان يعجبكم الشرح https://www.youtube.com/watch?v=P16XfRYXlgg
  13. السلام عليكم ورحمة الله وبركاته في هذه المقاله سنناقش انواع الInner classes في الجافا في الجافا، كتابة class داخل class آخر مسموح، الكلاس الداخلي يسمى Nested class والخارجي يسمى Outer class. كمثال على الNested class: class Outer { class Nested { } } يمكن تقسيم الNested classes الى نوعين: Non-static nested classes Static nested classes نبدأ أولا بالInner classes Inner Classes (Non-static Nested Classes) يمكن التفكير ب الInner classes كحماية اضافية للكلاس الداخلي. من المعروف أن الكلاس لا يمكن ربطه باحد الaccess modifiers مثل (public, private, etc...)، ولكن يمكننا فعل ذلك اذا كان Inner class للInner classes ثلاثة أنواع: Inner classes Method-local inner classes Anonymous inner classes 1- Inner classes انشاء Inner class بسيط جدا، كل ما عليك فعله هو أن تعرف كلاس بداخل كلاس آخر كما رأينا بالأعلى سنعرف Private inner class بالمثال التالي: class Outer { int num; // inner class private class Inner { public void print() { System.out.println("This is an inner class"); } } // Accessing he inner class from the method within void display_Inner() { Inner inner = new Inner(); inner.print(); } } public class My_class { public static void main(String args[]) { // Instantiating the outer class Outer outer = new Outer(); // Accessing the display_Inner() method. outer.display_Inner(); } } Output: This is an inner class. في هذا المثال استعملنا method اضافية [()display_Inner] لعمل object من الprivate inner class ومن ثم استدعاء الميثود بداخله. باختصار، الطريقة الصحيحة لعمل Instantiating للInner class كالتالي: Outer outer = new Outer(); Outer.Inner inner = outer.new Inner(); 2- Method-local Inner Classes في الجافا، يمكننا أيضا ان نعرف كلاس داخل ميثود معينة، ولكن هذا الكلاس لا يمكن تعريفه أو استخدامه الا داخل نفس الميثود. المثال التالي يشرح كيفية استخدام الmethod-local inner class: public class Outer { // instance method of the outer class void my_Method() { int num = 23; // method-local inner class class MethodInner { public void print() { System.out.println("This is method inner class "+num); } } // end of inner class // Accessing the inner class within the same scope MethodInner inner = new MethodInner(); inner.print(); } public static void main(String args[]) { Outerclass outer = new Outerclass(); outer.my_Method(); } } Output: This is method inner class 23 3- Anonymous Inner Class هو كلاس يتم انشاؤه بدون اسم محدد له (Anonymous). عموما نستخدم هذا النوع من الكلاسات عندما نريد أن نعمل override لميثود في كلاس او انترفيس. مثال لكيفية انشاء Anonymous inner class: AnonymousInner an_inner = new AnonymousInner() { public void my_method() { ........ ........ } }; البرنامج التالي يوضح استخدام الAnonymous inner class لعمل override لميثود موجودة بabstract class: abstract class AnonymousInner { public abstract void mymethod(); } public class Outer_class { public static void main(String args[]) { AnonymousInner inner = new AnonymousInner() { public void mymethod() { System.out.println("This is an example of anonymous inner class"); } }; inner.mymethod(); } } Output: This is an example of anonymous inner class 4- Static Nested Classes عندما نعرف الInner class ك Static، يمكننا أن ننشئ object منه بدون الحاجه لإنشاء object من الouter class كذلك الStatic inner class لا يمكنه الوصول او استخدام الinstance variables or methods الموجودة بالouter class مثال لهذا النوع من الinner classes: class MyOuter { static class Nested { } } البرنامج التالي يوضح الفروقات بين انشاء object من static inner class و inner class: public class Outer { static class Nested { public void my_method() { System.out.println("This is my nested class"); } } public static void main(String args[]) { Outer.Nested nested = new Outer.Nested(); nested.my_method(); } } output: This is my nested class الى هنا نصل الى ختام موضوعنا. وفق الله الحميع لما يحبه ويرضاه.
  14. بسم الله الرحمن الرحيم السلام عليكم ورحمة الله وبركاته ستحتاج إلى قراءة الموضوع السابق الخاص بـالـ Hashing Algorithm لكي تستطيع المتابعة من خلال الرابط التالي هنا Hashing سنتعرف معاً في هذا المقال على : - طريقة الـ Open Addressing. - طريقة التطبيق في لغة برمجة Java. تكلمنا في المقالة السابقة عن الـ Hashing Algorthim وكيف يمكننا حل مشكلة تكرار الـ Data وتم مناقشة فكرة واحدة وهي الـ Separate Chaining . وللتذكير فإن طريقة الـ Separate Chaining هي طريقة تعتمد على بناء ArrayList بشكل خاص أو أي Structure آخر بشكل عام داخل كل خلية في الـ Hash Table. ومن ثم يتم تخزين القيم اللي تمتلك نفس قيمة الـ Index في هذا الـ Structure. ولكن !!! طريقة الـ Separate Chaining لها العديد من الميزات والعيوب مثل : الميزات : 1 - مطلق الحرية في استخدام الـ Structure الذي يناسبك سواء كان Tree أو ArrayList على سبيل المثال. 2 - سهولة تطبيق فكرة الـ Separate Chaining داخل أي لغة برمجة. العيوب : 1 - ماذا لو أدخل المستخدم 10 أرقام على سبيل المثال والتي تملك نفس الـ Index. فـ على سبيل المثال لنقل بأننا نريد ملئ HashTable بحجم خليتين بالأرقام التالية : 2-4-6-8-10-12. عند تطبيق الدالة Index = number % arrayLength سنجد بأن كل الأرقام ستوضع في خانة 0 في الجدول كما في الصورة التالية : ولكن لحظة !! الـ ArrayList الموجودة بالصورة هي عبارة عن Array عادية موضوعة داخل Index 0 والفكرة الاساسية من الـ Hashing لم يتم تطبيقها للأسف لأننا في حال أردنا البحث عن رقم 12 مثلاً سنضطر للبحث داخل كل الـ Array داخل Index 0. تخيل بأنك أضفت أكثر من الف Record وجميع هذه الـ Records تمتلك نفس الـ Index ستستغرق نفس الفترة الزمنية المستغرقة في حال إضافة هذه الـ Records في Array عادية بدون التطرق لفكرة الـ Hashing. لذلك نستطيع القول بأن فكرة الـ Separate Chaining ليست ممتازة في جميع الأحوال. فما الحل ؟ الحل يتمثل في الطريقة الثانية وهي Open Addressing. الطريقة الثانية : Open Addressing. ميزة هذه الطريقة بأن كل الـ Records سيتم توزيعها على كل الخانات الفارغة داخل الـ Table. وفكرتها تعتمد على إضافة رقم معين يتم نقل الـ Record المتكرر إلى خلية ثانية بمقدار هذا الرقم. هذا الرقم يعتمد على عدة دوال وهي : 1 - Linear probing وهذه الطريقة التي سنناقشها في هذه المقالة. 2 - Quadratic probing وهي زيادة بمقدار مربع i كل مرة. بحيث i = 0 , 1 , 2 , etc بالشكل التالي i^2 +/- . بمعنى آخر سنقوم في البداية بالتحرك بمقدار i إلى اليمين ومن ثم بمقدار i إلى اليسار. 3 - Double hashing وهي زيادة بحسب دالة أخرى. Linear probing أو زيادة خطية بمعنى زيادة عدد معين تختاره أنت من البداية يطلق عليه i على كل Record متكرر. لكي تتوضح الصورة لنأخذ المثال التالي: نريد إضافة هذه الأرقام 5 - 10 - 21 - 31 إلى جدول مكون من 5 خانات. ونريد تحديد الـ i لكي تكون 1 في حالة التكرار. سيكون المخرج النهائي كالتالي : 1 - عند إضافة 5 .. لن يكون هناك أي مشاكل لأن الجدول يفتقر لوجود أي Data وسيتم وضعه في Index 0. 2 - عند إضافة 10 .. سنلاحظ وجود 5 في خانة Index 0 ولذلك لا يمكننا وضع 10 أيضاً فنقوم بزيادة الـ Index بـ قيمة i المختارة سابقاً وهي 1 فيصبح الـ Index هو Index 1. 3 - عند إضافة 21 .. يجب علينا إضافتها إلى Index 1 ولكنه ممتلئ بالقيمة 10 .. فنقوم بالزيادة بـ 1 ونقوم بوضعها بخانة Index 2. 4 - عند إضافة 31 .. يجب علينا إضافتها إلى Index 1 ولكنه ممتلئ بالقيمة 10 .. نقوم بزيادة 1 ونضيف 31 إلى Index 2 ولكنه ممتلئ أيضاً بالقيمة 21 فنقوم بزيادة 1 مرة أخرى ونضع 31 في Index 3. المخرج النهائي : ولكن طريقة الـ Open Addressing فتحت لنا الباب لظهور مشكلة جديدة وهي مشكلة الحذف. ماذا لو أردنا في المثال السابق حذف الرقم 21. ومن ثم نريد إيجاد الرقم 31. سنقوم بالبحث بداية داخل Index 1 ولكننا سنجد 10 فـ سننتقل إلى Index 2 لنفاجئ بأن القيمة هي Null لأننا سبق وحذفنا الرقم 21. وهذا خطأ .. لأننا اتفقنا في البداية بأن الـ Index إذا كان Null "فارغ" يجب علينا ملء هذا الـ Index قبل الانتقال إلى Index جديد. ستخبرني بأنه من الممكن إكمال البحث حتى العودة للـ Index الذي بدأنا عنده للتأكد بأن 31 غير موجودة ولكن ماذا لو كان 31 غير موجود فعلاً و Index 2 فارغ بسبب إنه لم يتم إضافة 31 بعد .. في هذه الحالة ستقوم بتضييع الكثير من الوقت رغم علمك المسبق بأن 31 غير موجود. تبدو الفكرة محيرة فعلاً فما الحل؟ الحل يتمثل بإضافة " حالة " أو Status إلى الجدول الموجود في المثال السابق. سنقوم بتغيير حالة الـ 21 في حالة الحذف إلى D دلالة إلى Deleted بدون حذفها بشكل نهائي. في هذه الحالة لن يتعطل البحث أو يتوقف وستحل المشكلة. في البداية ستكون الـ Status الخاصة بكل الخلايا E دلالة إلى Empty او فارغ. إذا تم وضع عنصر جديد داخلها سيتم تغيير حالتها إلى O دلالة إلى Occupied او ممتلئ. الآن في حالة البحث عن 31 بعد حذف 21. سنقوم بالذهاب إلى Index 1 لنجد 10 فننتقل إلى Index 2 لنجد 21 فننتقل إلى Index 3 فنجد 31. ماذا لو أردنا البحث عن 21 بعد حذفها ؟ لا يمكنك عمل return true في حالة البحث إلا في حالة واحدة فقط إذا كان القيمة الموجودة في الخلية = القيمة المبحوث عنها + الحالة أو الـ Status = O. لو كانت D كما في مثالنا يجب علينا عمل return false. - التطبيق بلغة Java. سنتحتاج إلى عمل 3 كلاسات. الكلاس الأول Cell والكلاس الثاني HashTable والثالث عبارة عن TestClass. كلاس Cell : الخلية هنا تتكون من القيمة وحالتها كما أسلفنا سابقاً بالإضافة إلى بعض الـ Methods المهمة. public class Cell { Object dataObject ; // value String status ; // status E for empty, D for deleted, or O for occupied public Cell(){ status = "E"; // default value for a null cell } public Cell(Object obj){ status = "O"; dataObject = obj ; } public String toString(){ return "Object : "+dataObject.toString()+"\t\t "+status+"\n" ; } public int getHash(){ // we are going to use hashCode() method that exists in Object class return dataObject.hashCode(); } public void setStatus(String s){ status = s ; } } كلاس HashTable : يتكون من كل ماله علاقة بالجدول المراد إنشائه من Methods. أولا: Instance Variables and Constructors private int size ; private Cell [] list ; public HashTable(){ // default size for empty hash table size = 0 ; } public HashTable(int i){ // creating hash table with a desired value list = new Cell[i]; size = i ; for (int j = 0 ; j<i ; j++) // NullPointerException !! list[j] = new Cell(); } ثانياً : Insert method " إضافة " public void insert(Object obj){ Cell tmp = new Cell(obj); int index = obj.hashCode()%size ; if (list[index].status.equals("E") || list[index].status.equals("D")){ // empty or deleted cell list[index] = tmp ; }else{ // status = occupied int counter = 0 ; index++; while(counter <list.length){ if (list[index].status.equals("E")){ // empty cell list[index] = tmp ; list[index].setStatus("O"); break ; } counter++; index = (index+1)%size; } } } ثالثاً : retrieve method " بحث " هذه الميثود تعطيك قيمة الـ Index الموجود فيها العنصر المراد البحث عنه أو -1 إشارة إلى عدم وجوده public int retrieve(Object obj){ // get index of obj int index = obj.hashCode()%size ; if (list[index].status.equals("E")) return -1 ; // not found int counter = 0 ; while(counter < list.length){ // till the end of the table if (list[index].status.equals("D") && list[index].dataObject.equals(obj)) return -1 ; if (list[index].status.equals("O") && list[index].dataObject.equals(obj)) return index; index = (index+1)%size; counter++ ; } return -1; // not found } رابعاً : Delete Method " حذف " public void delete(Object obj){ int index = retrieve(obj); if (index != -1){ // if found list[index].setStatus("D"); } } خامساً وأخيراً : ميثود الطباعة. public String toString(){ String str = ""; System.out.println("Value\tStatus"); for (int i = 0 ; i<list.length ; i++){ if (list[i].dataObject == null){ str = str+" - "; }else str = str+" "+list[i].dataObject.toString(); str = str+"\t "+list[i].status+"\n"; } return str ; } كلاس TestClass وسنقوم بعمل التالي : سنقوم بعمل جدول مكون من 13 خانة ونقوم بعمل التالي: 1 - إضافة 18 - 26 - 35 - 9 من " اليمين إلى اليسار " 2 - البحث عن 15 - 48 " قيم غير موجودة " 3 - حذف 35 4 - البحث عن 9 " الخانة الصحيحة 10 " 5 - إضافة 64 - 47 " من اليمين إلى اليسار " 6 - طباعة الجدول public class test { public static void main(String [] args){ //create new hashTable HashTable hashTable = new HashTable (13); //insert 18 26 35 9 hashTable.insert(new Integer(18)); hashTable.insert(new Integer(26)); hashTable.insert(new Integer(35)); hashTable.insert(new Integer(9)); // get index of element 15 , 48 System.out.println(hashTable.retrieve(new Integer(15))); // -1 System.out.println(hashTable.retrieve(new Integer(48))); // -1 //delete element 35 " change status to D " ; hashTable.delete(new Integer(35)); // get index of element 9 System.out.println(hashTable.retrieve(new Integer(9))); // 10 //insert 64 47 hashTable.insert(new Integer(64)); hashTable.insert(new Integer(47)); //printing System.out.println(hashTable); } } المخرج النهائي :
  15. السلام عليكم ورحمه الله وبركاته. ساتحدث اليوم عن الارافيل فريمورك. فما هي الفريمورك ؟ وما هي الارافيل؟ اولا الفريمورك هي عبار عن دوال جاهزة قام بعملها عدة اشخاص لتسهل كتابة الكود بحيث انت تسخدم هذه الدوال وانه لا تضطر الى كتابة الكود من الصفر فلو جئت تعمل على مشروع على بي اتش بي وكان يحتاج الى شهر فجاءت لفريمورك لتعطيك عمل قوي ويدعم الامان باستخدام نظام MVC مثلا وتجعل المدة اقصر واسرع بحيث انها تستخدم لعمل مواقع ضخمة جدا. فما هو نظام MVC ؟ M تعني Model وهو الذي يمكننا من التعامل مع الداتا بيس من تخزين وحذف وغيرها من الامور. V تعني view وهو الذي يعرض للمستخدم من صفحات ويب . C تعني Controller وهو عبارة عن حلقة وصل بين model وview . فمثلا لدي صفحة ويب ويوجد فيها حقل نص بحيث اريد ان ادخل معلومات بهذا الحقل ومن ثم تخزينها بالداتا بيس . بالبداية المتخدم يدخل النص بالحقل بعدها controller يأخذ هذا النص ومن ثم controller يستخدم model لتخزينها بالداتا بيس. فما هي الارافيل؟ الارافيل عبارة عن بي اتش بي فريمورك وجدت لتعيد الحياة الى بي اتش بي بعد ان الناس ظنوا بأنها قد ماتت . - الارافيل تستخدم نظام MVC وهو نظام يجعل الكود سهل القراءة ويدعم الامان بشكل كبير وهو ما يميز الارافيل انها تدعم الامان بشكل كبير جدا. - الارافيل سهلت التعامل مع الداتا بيس بأسهل الطرق للتخزين والتعديل والحذف وغيرها من الامور . - سهلت ايضا المصداقية والتأكد من هوية المستخدم بما يسمى authntication . - وفرت ايضا سيرفر داخلي معها يعمل على بورت 8000. - وفرت خاصية pagination وسهلتها قدر الامكان لمن لا يعرف هذه الخاصية انه لو كان عندك 100 مستخدم وتريد ان تعرضهم في صفحة سيكون طول الصفحة كبير جدا جدا لذلك هذه الخاصية تسمح لك بان توضع عدد معين داخل الصفحة الاولى والجزء الثاني من الاسماء بالصفحة الاخرى بحيث يكون بالصفحة زر التالي والسابق. - وفرت خاصية master page بحيث اذا كان لديك ثلاث صفحات فبالغالب سيكون الجزء العلوي والسفلي ثابتان لجميع الصفحات والمحتوى الذي بالوسط هو الذي يتغير لذلك تدعم هذه الخاصية بأنه يتم تثبيت الجزء العلوي والسفلي والتحكم بالمحتوى الذي بالوسط مما يجعل الاداء الخاص بالموقع عالي جدا. فأذا اردت ان تبدأ بها تحتاج الى معرفة بي اتش بي. الارفيل كل فترة واخرى تخرج نسخة جديدة منها بحيث تضيف ميزات اخرى على الميزات السابقة واخرها حاليا هي لارافيل 5.4 التي اعلن عنها قبل ايام . فأن كنت تريد ان تبدأ بالارافيل حمل لارافيل5.3 لانه نسخة 5.4 ليس ثابتة حاليا. رابط تحميل لارافيل 5.3 : https://laravel.com/docs/5.3 لمن يريد تعلم الارافيل هذا افضل كورس انجليزي: https://laracasts.com/skills/laravel وهذا كورس عربي يعلمك اساس الارافيل من الصفر : https://www.youtube.com/playlist?list=PLpRNkmPv_dKFNANfkRA0d22d-tA9tEO1e اتمنى الفائدة للجميع وان ينال اعجابكم لاي ملاحظات اتمنى ذكرها حتى بالمقالات القادمة اخذها بالحسبان. واي استفسار سأرد عليه ان شاء الله .
  16. السلام عليكم ورحمة الله وبركاته طرحنا مسابقة عالم البرمجة للنقاش الهادف ، و هدفنا إثراء المحتوى العربي في مجال البرمجة ، فاز معنا الطرح المتميز و المفيد حيث قام بتقييم المقالات وترقيتها من قبل فريق عالم البرمجة سنذكر بهذه المقالة الفائزين معنا ، و مقالاتهم ، و نشكرهم على ماقدموا من فائدة للجميع ، و إثراء المحتوى العربي في البرمجة. الفائزون في شهر Januray-2017 @3zcs المقال الفائز: @3zcs المقال الفائز: @AMR0T المقال الفائز: @وضاح العوني المقال الفائز: @يعرب المصطفى المقال الفائز: @Abdulrahman Hasan Agha المقال الفائز: @Omnyyah المقال الفائز: في الختام: هدفنا في موقع عالم البرمجة إثراء المحتوى العربي في مجال البرمجة ، و تعزيز حب المساعدة بين المبرمجين تستطيع كتابة ماتحب في ساحات النقاش ، و يمكن تكون احد الفائزين معنا بمسابقة عالم البرمجة للنقاش الهادف فهي مازالت مستمره ايضا تستطيع مساعدة المبرمجين بالإجابة عن أسئلتهم ، و حل المشاكل التي تواجههم بقسم سؤال وجواب ؛ لتكون مرجع لبقية المبرمجين شعارنا في عالم البرمجة "إن في قضاء حوائج الناس لذة لا يَعرفها إلا من جربها، فافعل الخير مهما استصغرته فإنك لا تدري أي حسنة تدخلك الجنة." -ابن القيم- وممكن تستفيد من حبيبي القارئ اعلم ان فريق عالم البرمجة يصب كل جهودة لمساعدة المبرمجين الذين يخصصون من وقتهم لنشر العلم المفيد ويساعدون الغير ويارب يقدرنا نوقف معكم ونساعدكم قد مانقدر.
  17. فى هذا الدرس سنشرح سويا الطريقة العامة لكتابة خوارزمية Curve Fitting و من ثم مقارنة الخوارزمية التى قمنا بتصميمها مع الامر السريع بالماتلاب polyfit و منها سنستخرج العديد من الأمور الهامة و الشيقة أتمنى أن ينال الدرس إعجابكم
  18. السلام عليكم لو سمحتم انا تعلمت اساسيات لغة PHP وعايز احترف اللغة واقدر احول الثيم من HTML الى ورد بريس واتعلم تصميم موقع تجاري بشكل كامل يريت حد يفيدني بلينك لكورسات كويسة للمجال ده وازاى اقدر احترف اللغة * لو المحتوي عربي يفضل لانى مش كويس فى اللغة الانجليزية شكراً جزيلاً
  19. https://youtu.be/1_BzOYySdu0 لينكات المراجع التى تم ذكرها فى الفيديو A Guide to MATLAB Object-Oriented Programming - Andy H. Register https://armaths.wordpress.com/2017/02/04/book-11/ Applied Statistics Using SPSS, STATISTICA, MATLAB and R - Joaquim P. Marques https://armaths.wordpress.com/2017/02/04/book-13/ arabic matlab book simlink https://armaths.wordpress.com/2017/02/04/book-12/ Business Economics & Finance with Matlab GIS and Simulation Models - Patrick L.Anderson https://armaths.wordpress.com/2017/02/04/book-6/ C++ for Financial Mathematics (2017) https://armaths.wordpress.com/2017/02/04/book-8/ Computational Physics using MATLAB https://armaths.wordpress.com/2017/02/04/book-14/ Graphics and GUIs with MATLAB - Patrick Marchand and O. Thomas Holland https://armaths.wordpress.com/2017/02/04/book-15/ Numerical Analysis Using MATLAB and Excel - Steven T. Karris (3rd) Numerical Analysis Using MATLAB and Spreadsheets - Steven T. Karris (2nd) https://armaths.wordpress.com/2017/02/04/book-5/ Numerical Analysis https://armaths.wordpress.com/2017/02/04/book-9/ Optics Learning by Computing with Examples using MATLAB - K.D. Moller https://armaths.wordpress.com/2017/02/04/book-2/ Radar Systems Analysis and Design Using MatLab - Mahafza Bassem R https://armaths.wordpress.com/2017/02/04/book-4/ Scientific Computing with Matlab and Octave - Alfio Quarteroni & Fausto Saleri https://armaths.wordpress.com/2017/02/04/book-3/ Thomas L. Floyd Digital Fundamentals https://armaths.wordpress.com/2017/02/04/book-10/ What Every Engineer Should Know About MATLAB® and Simulink® https://armaths.wordpress.com/2017/02/02/book-1/ كتاب_احترف_الأردوينو_-_القرية_الهندسية https://armaths.wordpress.com/2017/02/04/book-7/
  20. اللهم بارك لنا فى علمنا و نفع به الاخرين فى هذا الدرس سنشرح الجزء الاول من الرياضة العددية و هو ايجاد معادلة المنحنى لمجموعة من النقاط الصور الفيديو برجاء كتابة الكود فى التعليقات او وضع اللينك سأكتب الكود الأسبوع المقبل إن شاء الله المقالة من مدونتى الرياضيات العربية https://armaths.wordpress.com/2017/01/30/ايجاد-معادلة-لمجموعة-من-النقاط-جزء1/
  21. اللهم بارك لنا فيما رزقتنا بعد ان انهينا الاوامر البسيطة بالدرس الأول و الفرق بين أنواع الصور و كيف نحول الصور الى الأبيض و الأسود اليوم سنتحدث اكثر عن الصور الأبيض و الأسود و الحصول على العناصر من الصورة أتمنى ان يعجبكم الشرح الفيديو المقالة مقتبسة من مدونتى الرياضة بالعربى https://armaths.wordpress.com/2017/02/01/media-2/
  22. اللهم بارك لنا فى علمنا يا رب العالمين فى هذا الدرس بإذن الله سنتكلم عن الصور و انواعها و كيف نقرأ الصور و كيف نحول ما بين الانواع و ما الفروقات بين تلك الانواع ما مشكلة الINDEX ما الفرق بين BLACK & WHITE و GRAY رابط الفيديو اساسيات التعامل مع الصور درس 1 تم الاقتباس من مدونتى رابط المقالة الأصلية http://armaths.wordpress.com/2017/01/23/اساسيات-التعامل-مع-الصور-درس-1/
  23. السلام عليكم اسف جدا لانقطاعى بسم الله نبدأ المستويات الأعلى ان شاء الله Media Processing + Numerical لكن فى المقالة دى بإذن الله اوار بسيطة للماتلاب بإذن الله المقالات الاتية استفادة من الماتلاب
  24. موضوع مهم مميز خصوصا لمن اراد تصميم اللغات في انتظار الباقي
  25. عذراً لكن أليس بإمكانك القيام بشيء مشابه عن طريق الـ class func ؟ class BankManager { class func handleBankThing(id: Int) { return id; } } class Main { BankManager.handleBankThing(id: 3); }
  26. مؤخرا نسمع كثيرا عن مصطلح البيانات الضخمة Big Data و سرعة انتشار هذا المجال في سوق العمل. و لكن هل تساءلنا ما هي البيانات الضخمة Big Data؟ لكي نتفق مبدئيا هناك اكثر من تعريف لمصطلح البيانات الضخمة Big Data وكما أوضح الاتحاد الدولي للاتصالات بأنه لا يوجد تعريف دقيق للبيانات الضخمة . و بشكل عام فإننا حين نتحدث عن البيانات الضخمة فنحن نتحدث عن بيانات متعددة الأنواع والمصادر والأحجام. تعريف: قبل ان نتطرق لتعريف البيانات الضخمة، يجب علينا معرفة ما هي البيانات؟ البيانات Data: هي الصورة الخام للمعلومات قبل عمليات الفرز والترتيب والمعالجة ولا يمكن الاستفاده منها بصورتها الأولية قبل المعالجة. و يمكن ان تقسم البيانات الخام الى ثلاثة انواع: بيانات مهيكلة: وهى البيانات المنظمة فى جداول او قواعد بيانات. بيانات غير مهيكلة: تشكل النسبة الأكبر من البيانات، وهى البيانات التى يولدها الأشخاص يوميا من كتابات نصية وصور وفيديو ورسائل ونقرات على مواقع الانترنت... الخ. بيانات شبه مهيكلة: تعتبر نوعا من البيانات المهيكلة الا ان البيانات لا تكون فى صورة جداول او قواعد بيانات. و الآن ما هي البيانات الضخمة؟ يعرف الخبراء البيانات الضخمة بأنها أي مجموعة من البيانات التي هي بحجم يفوق قدرة معالجتها باستخدام أدوات قواعد البيانات التقليدية من إلتقاط، ومشاركة ونقل، وتخزين، وإدارة و تحليل في غضون فترة زمنية مقبولة لتلك البيانات؛ و من وجهة نظر مقدمي الخدمات، هي الأدوات والعمليات التي تحتاجها المنظمات للتعامل مع كمية كبيرة من البيانات لغرض التحليل. الطرفان إتفقا على إنها بيانات هائلة لا مككن معالجتها بالطرق التقليدية في ظل تلك القيود المذكورة آنفاً. إليكم بعض التعاريف لمنظمات وجهات عالمية والتي تصف البيانات الضخمة: تعريف شركة جارتنر (Gartner Inc) المتخصصة في أبحاث واستشارات تقنية المعلومات الأصول المعلوماتية كبيرة الأحجام وسريعة التدفق وكثيرة التنوع، والتي تتطلب طرق معالجة مجدية اقتصادياً ومبتكرة من أجل تطوير البصائر وطرق اتخاذ القرارات. تعريف شركة (IBM) " تنشأ البيانات الضخمة عن طريق كل شيء من حولنا وفي كل الأوقات كل عملية رقمية وكل تبادل في وسائل التواصل الاجتماعي ينتج لنا البيانات الضخمة، تتناقلها الأنظمة، وأجهزة الاستشعار، والأجهزة النقالة البيانات الضخمة لها مصادر متعددة في السرعة والحجم والتنوع ولكي نستخرج منفعة معنوية من البيانات الضخمة نحتاج إلى معالجة مثالية، وقدرات تحليلية، ومهارات ". تعريف المنظمة الدولية للمعايير(ISO) " مجموعة أو مجموعات من البيانات لها خصائصها الفريدة (مثل الحجم، السرعة، التنوع، التباين، صحة البيانات... إلخ) ، لا يمكن معالجتها بكفاءة باستخدام التكنولوجيا الحالية والتقليدية لتحقيق الاستفادة منها" . ويعرفها الاتحاد الدولي للاتصالات (ITU) "يشير مصطلح البيانات الضخمة إلى مجموعات البيانات التي تتميز بأنها فائقة حجماً وسرعة أو تنوعاً، بالقياس إلى أنواع مجموعات البيانات المعهودة الاستخدام" . بسبب الوقت والجهد والتكلفة الكبيرة التي تحتاجها البيانات العملاقة لتحليلها ومعالجتها اضطر التقنيون على الاعتماد على أنظمة الذكاء الاصطناعي Artificial Intelligence التي لديها القدرة على التعلم والاستنتاج ورد الفعل على أوضاع لم تبرمج في الآلة باستخدام خوارزميات معقدة للعمل عليها، بالإضافة إلى استخدام تقنيات الحوسبة السحابية لإتمام عملها. عادة يكون المقصود به البيانات الضخمة هي البيانات التي تقاس بالبيتا بايت petabyte (ألف تيرا بايت) أو الايكسا بايت exabyte (مليون تيرابيات)؛ ووفقاً لــ IBM فأنهابتداءاً من العام 2012 الميلادية فإننا يومياً ننشأ ما يقارب 2.5 كوينتيليون بايت من البيانات الضخمة (كوينتيليون هو الرقم واحد متبوعاً بثمانية عشرة (18)صفر ). و للمعلومية تمت اضافة كلمة Big Data الى قاموس Oxford ككلمة انجليزية مستحدثة. تصنيف البيانات الضخمة: كثير منا يعتقد بأن البيانات الضخمة تصنف وفقا للحجم فقط، في الحقيقة هي تصنف وفقا لمبدأ (3V's) و يتكون من: الحجم Volume: و هي حجم البيانات المستخرجة من مصدر ما، وهو ما يحدد قيمة وامكانات البيانات لكي تصنف من ضمن البيانات الضخمة؛ و قد يكون الخاصية الأكثر أهمية في تحليل البيانات الضخمة .كما أن وصفها بالضخمة لا يحدد كمية معينة؛ فكما ذكرنا آنفا بأن الحجم يقاس عادة بالبيتا بايت او بالإكسا بايت. و للمعلومية بحلول العام 2020 سيحتوى الفضاء الإلكرةوني على ما يقرب من 40.000 ميتابايت من البيانات الجاهزة للتحليل واستخلاص المعلومات؛ ويقدر أن %90 من البيانات الموجودة في العالم اليوم قد استحدثت خلال السنتين الأخيرتين، بواسطة أجهزة وعلى أيدي بشر ساهم كلاهما في تزايد البيانات. التنوع Variety: و يقصد بها تنوع البيانات المستخرجة، والتي تساعد المستخدمين سواء كاموا باحثين أو محللين على اختيار البيانات المناسبة لمجال بحثهم و تتضمن بيانات مهيكلة في قواعد بيانات و بيانات غير مهيكلة تأتي من طابعها غير الممنهج، مثل: الصور ومقاطع وتسجيلات الصوت وأشرطة الفيديو والرسائل القصيرة وسجلات المكالمات وبيانات الخرائط (GPS)... وضيرها الكثير؛ وتتطلب وقتاً وجهداً لتهيئتها في شكل مناسب للتجهيز والتحليل. السرعة Velocity: و يقصد بها سرعة إنتاج وإستخراج البيانات لتغطية الطلب عليها؛ حيث تعتبر السرعة عنصراً حاسماً في اتخاذ القرار بناء على هذه البيانات، وهو الوقت الذي نستغرقه من لحظة وصول هذه البيانات إلى لحظة الخروج بالقرار بناء عليها. سابقا كانت الشركات تستخدم لمعالجة مجموعة صغيرة من البيانات المخزنة في صورة بيانات مهيكلة في قواعد بيانات عملية تسمى بال ” Batch Process“ حيث كان يتم تحليل كل مجموعة بيانات واحدة تلو الأخرى في انتظار وصول النتائج. مع الازدياد الضخم في حجم البيانات وسرعة تواترها أصبحت الحاجة أكثر إلحاحا الى نظام يضمن سرعة فائقة في تحليل البيانات الضخمة في الوقت اللحظي “Real Time“ أو سرعة تقارب الوقت اللحظي. أدت تلك الحاجة الى ابتكار تقنيات وحلول مثل Apache و SAP HANA و Hadoop وغيرها الكثير. كما أضيف مؤخراً لتلك المبادئ الثلاث وفقاً لخصائص البيانات الضخمة "مبدأ صحة البيانات الضخمة": فيمثل التمتع بالقدرة على تقييمها عنصراً جوهرياً في وضع الأساس لاتخاذ القرارات الهامة بناءً عليها. ويجب الأخذ بالاعتبار تباين هذه البيانات وعدم التأكد من صحتها في عملية اتخاذ القرار. مصادر البيانات الضخمة: قامت اللجنة الاقتصادية لأوروبا، بتقديم تقرير بعنوان ”ماذا تعنيه البيانات الضخمة للإحصاءات الرسمية“ آذار مارس و قد أوردت فيه تصنيفا لمصادر البيانات الضخمة على النحو التالي: المصادر الناشئة عن إدارة أحد البرامج، سواء كان برنامجا حكوميا أو غير حكومي، كالسجلات الطبية الإلكترونية وزيارات المستشفيات وسجلات التأمين والسجلات المصرفية وبنوك الطعام. المصادر التجارية أو ذات الصلة بالمعاملات، الناشئة عن معاملات بين كيانين، على سبيل المثال معاملات البطاقات الائتمانية والمعاملات التي تجرى عن طريق الإنترنت بوسائل منها الأجهزة المحمولة. مصادر شبكات أجهزة الاستشعار، على سبيل المثال، التصوير بالأقمار الصناعية، وأجهزة استشعار الطرق، وأجهزة استشعار المناخ. مصادر أجهزة التتبع، على سبيل المثال تتبع البيانات المستمدة من الهواتف المحمولة والنظام العالمي لتحديد المواقع. مصادر البيانات السلوكية، على سبيل المثال، مرات البحث على الإنترنت عن منتج أو خدمة ما أو أي نوع آخر من المعلومات، ومرات مشاهدة إحدى الصفحات على الإنترنت. مصادر البيانات المتعلقة بالآراء، على سبيل المثال، التعليقات على وسائط التواصل الاجتماعي. أمثلة من الواقع على البيانات الضخمة: لدى واتس آب أكثر من مليار مستخدم، و يتم تداول اكثر من 42 مليار رسالة و حوالي 1.6 مليار صورة بشكل يومي. فيسبوك تتعامل مع أكثر من 50 مليار صورة من مستخدميها. جووجل Google تتعامل مع حوالي 100 مليار عملية بحث في الشهر. أهمية البيانات الضخمة: للبيانات الضخمة اهمية عالية فهي تقدم ميزة تنافسية عالية للشركات اذا اسطاعت الأستفادة منها ومعالجتها لانها تقدم فهما أعمق لعملائها ومتطلباتهم ويساعد ذلك على اتخاذ القرارات المناسبة و الملائمة داخل الشركة بطريقة أكثر فعالية و ذلك بناء على المعلومات المستخرجة من قواعد بيانات العملاء وبالتالى زيادة الكفاءه والربح وتقليل الخسائر. فبستخدام تقنيات و أدوات تحليل البيانات الضخمه استطاعت وول مارت تحسين نتائج البحث عن منتجاتها عبر الأنترنت بنسبة 10-15% بينما فى تقرير لماكينزى-وهى شركة رائده فى مجال أستشارات الاعمال- ان القطاع الصحى بالولايات المتحدة لو كان يستخدم تقنيات تحليل البيانات الضخمة بفاعليه وكفاءه لكان قد أنتج أكثر من 300 مليون دولار أمريكى كفائض سنوى من ميزانيه الصحة ثلثيها بسبب خفض تكاليف الانفاق بنسبة 8%(1). الخاتمة: في زمننا هذا نشهد انفجارا ضخما في البيانات فتحليل و معالجة هذه البيانات يزيد بشكل رئيسي في فهم و استيعاب متطلبات العملاء و بالتالي زيادة الكفاءة و الانتاجية و تقليل الخسائر بالنسبة للشركات. إلا أن هنالك العديد من التحديات والمعوقات التي تعيق استخدام البيانات الضخمة أو التوسع في استخدامها والتي ممكن تناولها في مقال آخر بإذن الله تعالى . ومع مرور الوقت والتقدم التكنولوجي، فمن المتوقع إحراز تقدم كبير فيما يتعلق بمعالجة تحديات ومعوقات استخدام البيانات الضخمة بشكل أوسع. و في النهاية اتمنى ان تكون هذه المقالة قد لاقت اعجابكم و اثرت المحتوى العربي على الانترنت. المصادر: 1- Mckinsey&Company: Big Data: The next frontier for innovation,competition and productivity. May 2011
  27. في هذه السلسلة – ان شاء الله – سأشرح أهم المواضيع في منهج نظرية الحوسبة في أكثر من مقالة ولمن أراد الاطلاع أكثر فمرجعي الرئيسي هو كتاب An Introduction to FORMAL LANGUAGES and AUTOMATA للكاتب PETER LINZ المنهج مهم جداً لطلاب علوم الحاسب فهو يناقش مجموعة من المفاهيم النظرية البحتة والتي ساعدت في انشاء علوم الحاسب والخوارزميات وعلم المنطق والتي يجب على كل طالب استيعابها وفهمها . هناك ٣ محاور رئيسية لا بد من التحدث عنها قبل أن نسترسل في شرح أنواع القواعد والآلات الموجودة . أولاً : اللغات : أغلب القواميس في جميع اللغات تعرف لنا اللغة بأنها نظام من التعبيرات لمجموعة من الأفكار والمفاهيم والحقائق وتضم عدداً من الرموز والقواعد لإنشاء الجمل والكلمات بشكل صحيح تحت هذه اللغة . نبدأها بمجموعة منتهية غير فارغة نسميها آلفابت Alphabet ويرمز لها برمز سيجما ∑ ومن خلال رمز واحد من الآلفابت يمكننا تكوين كلمة String والكلمة عبارة عن سلسلة منتهية من الرموز في الآلفابت . مثال : لدينا الآلفابت التالية ∑ = {a, b} فيمكننا انشاء كلمة ( نرمز لها بالرمز w ) تسمى abba أو a أو ba لأنها كلمات ضمن الألفابت الموجودة ، اذاً يمكننا عمل مجموعة لانهائية من الكلمات تحت آلفابت معينة . طول الكلمة يرمز له بالرمز |w| وهو رقم يساوي عدد الحروف في تلك الكلمة واذا كان طول الكلمة يساوي الصفر فيعني ذلك أن تلك الكلمة تسمى (ايبسلون أو لمدا ) ونرمز لها بالرمز λ . λ|=0| . ثانياً : القواعد : تُعرَف القاعدة Rule عن طريق الرموز التالية G =(V, T, S, P) 1- V : مجموعة من المتغيرات . 2- T : مجموعة من الرموز المنتهية التي ننهي بها الكلمة . 3- S : رمز البداية وهو ضمن T . 4- P : القواعد التي نتبعها في صنع أي كلمة ضمن آلفابت معينة وهي قلب وأساس أي قاعدة . نفرض أن كل القواعد تأتي بهذا الشكل x -> y بحيث أن x تعني جميع المتغيرات والرموز المنتهية و y تحتوي على الرموز المنتهية والمتغيرات + الكلمة الفارغة λ . مثال توضيحي : G = { {S},{a,b},S,P} و القواعد في هذه اللغة P S -> aSb S -> λ أمثلة على الكلمات التي يمكننا اشتقاقها من هذه القاعدة ab , aabb , aaabbb وهكذا ، اذاً اللغة الخاصة بهذا القاعدة عباره عن مجموعة من a تتبعها مجموعة من b بنفس العدد . يمكننا كتابة اللغة بهذه الصيغة : ثالثاً : الآلات : الآلات Automata هي عبارة عن نموذج نظري للكمبيوترات الرقمية ، كل آلة لها ميكانيكا خاصة لقراءة المدخلات لكن لا تغيرها ويمكنها أيضاً تحديد نهاية وبداية كل كلمة أو مُدخل ويمكن أن يكون لها أجهزة تخزين وتحتوي على مجموعة من وحدات التحكم التي تتغير حالتها ومجموعة من دوال التغير المرتبطة بالمدخل والحالة الحالية للمدخل . بإذن الله في المقالات التالية سوف نناقش ٤ أنواع من الآلات وطريقة عملها والقواعد التي تقبلها ومايخصها بشكل مخصص .
  28. مقالة جداً جميلة وواضحه يعطيك العافيه
  29. في هذه السلسلة – ان شاء الله – سأشرح أهم المواضيع في منهج نظرية الحوسبة في أكثر من مقالة ولمن أراد الاطلاع أكثر فمرجعي الرئيسي هو كتاب An Introduction to FORMAL LANGUAGES and AUTOMATA للكاتب PETER LINZ المنهج مهم جداً لطلاب علوم الحاسب فهو يناقش مجموعة من المفاهيم النظرية البحتة والتي ساعدت في انشاء علوم الحاسب والخوارزميات وعلم المنطق والتي يجب على كل طالب استيعابها وفهمها . هناك ٣ محاور رئيسية لا بد من التحدث عنها قبل أن نسترسل في شرح أنواع القواعد والآلات الموجودة . أولاً : اللغات : أغلب القواميس في جميع اللغات تعرف لنا اللغة بأنها نظام من التعبيرات لمجموعة من الأفكار والمفاهيم والحقائق وتضم عدداً من الرموز والقواعد لإنشاء الجمل والكلمات بشكل صحيح تحت هذه اللغة . نبدأها بمجموعة منتهية غير فارغة نسميها آلفابت Alphabet ويرمز لها برمز سيجما ∑ ومن خلال رمز واحد من الآلفابت يمكننا تكوين كلمة String والكلمة عبارة عن سلسلة منتهية من الرموز في الآلفابت . مثال : لدينا الآلفابت التالية ∑ = {a, b} فيمكننا انشاء كلمة ( نرمز لها بالرمز w ) تسمى abba أو a أو ba لأنها كلمات ضمن الألفابت الموجودة ، اذاً يمكننا عمل مجموعة لانهائية من الكلمات تحت آلفابت معينة . طول الكلمة يرمز له بالرمز |w| وهو رقم يساوي عدد الحروف في تلك الكلمة واذا كان طول الكلمة يساوي الصفر فيعني ذلك أن تلك الكلمة تسمى (ايبسلون أو لمدا ) ونرمز لها بالرمز λ . λ|=0| . ثانياً : القواعد : تُعرَف القاعدة Rule عن طريق الرموز التالية G =(V, T, S, P) 1- V : مجموعة من المتغيرات . 2- T : مجموعة من الرموز المنتهية التي ننهي بها الكلمة . 3- S : رمز البداية وهو ضمن T . 4- P : القواعد التي نتبعها في صنع أي كلمة ضمن آلفابت معينة وهي قلب وأساس أي قاعدة . نفرض أن كل القواعد تأتي بهذا الشكل x -> y بحيث أن x تعني جميع المتغيرات والرموز المنتهية و y تحتوي على الرموز المنتهية والمتغيرات + الكلمة الفارغة λ . مثال توضيحي : G = { {S},{a,b},S,P} و القواعد في هذه اللغة P S -> aSb S -> λ أمثلة على الكلمات التي يمكننا اشتقاقها من هذه القاعدة ab , aabb , aaabbb وهكذا ، اذاً اللغة الخاصة بهذا القاعدة عباره عن مجموعة من a تتبعها مجموعة من b بنفس العدد . يمكننا كتابة اللغة بهذه الصيغة : ثالثاً : الآلات : الآلات Automata هي عبارة عن نموذج نظري للكمبيوترات الرقمية ، كل آلة لها ميكانيكا خاصة لقراءة المدخلات لكن لا تغيرها ويمكنها أيضاً تحديد نهاية وبداية كل كلمة أو مُدخل ويمكن أن يكون لها أجهزة تخزين وتحتوي على مجموعة من وحدات التحكم التي تتغير حالتها ومجموعة من دوال التغير المرتبطة بالمدخل والحالة الحالية للمدخل . بإذن الله في المقالات التالية سوف نناقش ٤ أنواع من الآلات وطريقة عملها والقواعد التي تقبلها ومايخصها بشكل مخصص .
  1. عرض المزيد من النشاطات

عالم البرمجة

عالم البرمجة مقالات برمجة و دورات مجانية لإحتراف البرمجة هدفنا تبسيط البرمجة ونشرها بيد الكل بشكل ممتع ومتطور ومحدث بإستمرار لمواكبة جديد تطورات البرمجة الحديثة و المتقدمة بدون مقابل