• 0
nizarnizario

درس : الطوابير في ++C

سؤال

السلام عليكم ورحمة الله تعالى وبركاته

 

هذا أول موضوع مفيد لي في هذا المنتدى و أرجوا ان يفيدكم

 

سنتعرف في هذا الدرس على:

 

1-مفهوم الطوابير وكيفية عملها

 

2-انواع قيم الطوابير و كيفية كتابة طابور ووضع قيم داخله و اخراجها

 

اذا لنبدأ على بركة الله:

 

I-مفهوم الطابور وكيفية عمله

 

ساشرح لكم معنى الطابور في الواقع المعيشي ثم سنربط ذلك بسي بلس بلس

 

 

لنفترض انك تريد التسجيل في مسابقة ما فتخرج باكرا لكي تكون الاول لكن تتفاجئ بالصف الطويل الذي يريد التسجيل ايضا في هذه المسابقة فتنتظر لكنك تريد التسجيل قبل انتهاء الاماكن لذلك تحاول التخطي لكن للاسف المشاركون يمنعونك ويعيدونك الى الخلف حيث كنت

 

اذن ماذا نستنتج

 

انك اذا كنت الاول في الصف فستخرج باكرا لانك تسجلت في المسابقة و انتهيت لكن اذا دخلت انت الاخير ستخرج الاخير لانه يجب عليك ان تنتظر طويلا حتى ينتهي الذين قبلك  ثم ستتسجل وبعدها تخرج.

 

post-264278-0-48388000-1370701706_thumb.

اذن هذه طريقة الطوابير ايضا في سي بلس بلس وهذا عكس المكدسات (الذي يدخل اولا يخرج آخرا لكنني لن اتحدث عن هذا الدرس)

 

هكذا تعمل الطوابير في سي بلس بلس (الادخال)

post-264278-0-10086100-1370702239_thumb.

 

و

 

post-264278-0-45208600-1370702260_thumb.

 

هكذا تعمل الطوابير في سي بلس بلس (الاخراج)

 

post-264278-0-31902500-1370702655_thumb.

 

 

اذن انتهى الجزء الاول امل ان تكونوا قد استفدتم

 

وسنرى في الجزء الثاني ان شاء الله انواع قيم الطوابير و كيفية كتابة طابور ووضع قيم داخله و اخراجها

 

اذن في امان الله اخواني الاعزاء

تم تعديل بواسطه مصطفى 36a2
تنسيق المشاركة
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

19 إجابة على هذا السؤال .

  • 0

اي استفسار ضعه في هذا الموضوع

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم ورحمة الله تعالى و بركاته

 

مرحبا بكم إخواني الأعزاء في الجزء الثاني من هذا الدرس و الذي يتحدث عن انواع قيم

الطوابير (المتغيرات) و كيفية كتابة طابور ووضع قيم داخله و اخراجها

 

سنقسم هذا الجزء على جزئين

الجزء الاول سيتحدث عن انواع قيم الطوابير

الجزء الثاني سيتحدث عن كيفية كتابة طابور ووضع قيم داخله و اخراج هذه القيم

 

 

اذا على بركة الله نبدا بالجزء الاول : انواع قيم الطابور

 

انت كمبرمج لابد ان تعرف القيم مثل int   و bool ....

 

اذا القيم المقبولة في الطوابير

 

Bool   لكن عند اخراج القيم القيمة true   تاخذ رقم 1 و false   تاخذ القيمة 0

Int   العدد

String   كلمة او جملة

Char   غير مقبولة اذا استعملت  char   لن يعمل البرنامج اذا البديل هو string

Float  مقبولة

Double  مقبولة

Long  مقبولة

Short  مقبولة

تم تعديل بواسطه مصطفى 36a2
تنسيق المشاركة
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم ورحمة الله تعالى وبركاته

 

مرحبا بكم في الجزء الثالث و الاخير من هذا الدرس

 

وسنتحدث عن كيفية كتابة طابور اولا ثم وضع المتغيرات واخراجها

 

اذن لنبدأ على بركة الله :

 

هذا هو الشكل العام للطابور

queue<نوع المتغير> اسم المتغير;

مثال

#include <iostream>#include <queue>using namespace std;int main(){   queue<int> q ;}

الشرح

 

هنا استدعينا المكتبة الخاصة بالطوابير لتجنب إعادة كتابة الدوال

 

السطر السادس قمنا بتعريف طابور من نوع int و اسمه q

 

اذن الان سنتجه الى كيفية ادخال القيم و اخراجها

 

ساعطيكم مثالا وسنشرحه حتى تفهمونه

#include <iostream>#include <queue>using namespace std;int main() {   queue<int> q;   q.push(1);   q.push(2);   q.push(3);   cout<<q.front()<<endl;   q.pop();   cout<<q.front()<<endl;   q.pop();   cout<<q.front()<<endl;   q.pop();   if (q.empty()) {     cout<<"Queue Is Empty";   }}

حسنا لنشرح

 

في السطر الخامس عرفنا طابور من نوع int و اسمه q

 

في السطر السادس لدينا

q.push(1);

هذه هي طريقة الادخال في الطوابير وكلمة push تعني دفع اي ندخل القيمة 1 بامكاننا كتابة اي رقم مكان 1

و السطر السابع ادخلنا القيمة 2

والسطر الثامن ادخلنا القيمة 3

اي الان اصبح الطابور على هذا الشكل

 

post-264278-0-10302500-1370774453.jpg

 

واذا اردنا بامكان المستخدم هو الذي سيدخل القيم وذلك عن طريق تعريف متغير من نوع int ووضع مكان 1 او 2 او 3 اسم المتغير

 

هيا الان الى السطر التاسع و العاشر ماذا لدينا

 

لدينا

q.front()

و

q.pop()

حسنا عند استعمال

cout<<q.front()

فانه يطبع اول قيمة في الطابور

اما

q.pop()

فهو يمسح هذه القيمة من الطابور

 

قد يسأل البعض لماذا نمسحها من الطابور

 

الجواب هو حتى تظهر القيم الاخرى مثلا امسح في الكود السابق جميع الاسطر التي فيها

q.pop()

ماذا سيظهر لنا ستظهر القيمة 1 و في السطر الثاني 1 و السطر الثالث 1

 

لماذا لانه يخرج اول قيمة فقط و اول قيمة هي 1 اذن سيخرج 1 فقط

 

لكن اذا استعملنا

q.pop()

فاننا نخرج القيمة اولا عن طريق

 q.front 

ثم نمسح القيمة 1 من الطابور فتصبح القيمة 2 هي الاولى فنطبعها ثم نمسحها فتصبح القيمة 3 هي الاولى فنمسحها فيخرج لنا البرنامج

 

1

2

3

Queue Is Empty

 

post-264278-0-54175800-1370775230_thumb.

 

لان الطابور اصبح فارغا لكن اذا حذفنا السطرين 13 و 14 فلن يخرج لنا Queue Is Empty

 

لان القيمة 3 و التي ستصبح الاولى بعد حذف 1 و 2 لم نمسحها من الطابور

 

اي سيصبح الطابور مثل هذا الشكل

 

post-264278-0-40134000-1370775441.jpg

 

انتهى الدرس اتمنى ان يفيدكم

 

و السلام عليكم ورحمة الله تعالى و بركاته

تم تعديل بواسطه مصطفى 36a2
تنسيق المشاركة
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

بارك الله فيك أخي ..

لديّ عدة ملاحظات من باب التعاون على تحسين المحتوى وتفادي أي خطأ

1- بالنسبة لتنسيق المشاركة ... هل تسمح لي بتصغير الخط لتصبح المشاركة أقل حجماً وأكثر مقروئية ..

2- عند حديثك عن الفكرة النظرية للطوابير عليك ألا تخلطها بلغة البرمجة .. فالطابور هيكل بيانات مجرّد .. أما الطوابير في ++C فهي تنفيذ لهذا المفهوم النظري ..

3- في شرحك لأنواع المتغيرات لم أفهم !


 

 

Char   غير مقبولة اذا استعملت  char   لن يعمل البرنامج اذا البديل هو string

 

 

Float  مقبولة

 

 

كيف هذا الكلام .؟

4- شرحك لاستخدام المكتبة queue جيد بارك الله فيك

 

بالتوفيق

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكرا لك اخي على قراءة هاذ الموضوع

1-نعم لا أمانع

2-نعم صحيح اتمنى التعديل

3-

يعني استعمال char في الكلمات ينتج عن اخطاء ولاصلاحها يجب وضع بعض الاكواد الاخرى (صغيرة)... لكن استعمال string يبسط العمل وليس به اخطاء

4-شكرا شكرا لك اخي

 

شكرا على هذه الملاحظات المفيدة جدا واتمنى ان تصلح تلك الاخطاء

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

1- درس جيد و شرح جيد 

2- هل يمكن لك أن توضح لي هذه النقطة أكثر يا أستاذ خاصة النقطة المتعلقة بالأكواد التي يجب وضعها ان تم تعريف متغيرات من نوع char 

 

 

يعني استعمال char في الكلمات ينتج عن اخطاء ولاصلاحها يجب وضع بعض الاكواد الاخرى (صغيرة)... لكن استعمال string يبسط العمل وليس به اخطاء

 

3- و أرجو أن تكون هناك دروس أخرى خاصة على القوائم و المكدسات فنحن بصدد دراستها عندنا في الجامعة لذلك أريد لمحة مبدئية عنها

4- و لك بالغ الشكر و العرفان على درسك الماتع

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

1-شكرا جزيلا

2-لست استاذا انا مجرد هاو :)

اذا عرفنا مثلا char

علينا

1-تعريف الطابور سيكون بهذا الشكل

queue<char*> char

هنا عندما نريد استعمال الطابور بشكل متقدم سنواجه بعض المشاكل نحن في غنى عنها

2-تعريف متغير من نوع char وكتابة معلوماته

3-ادخال القيمة.........

اما string فلن تكون فيه اي مشاكل

1-ادخال القيمة مباشرة

هذا مثال لاستعماال char

#include <iostream>#include <queue>using namespace std;int main() {queue<char*> chare;char ch[50] = "Arabteam";char ch1[50] = "Arabteam1";chare.push(ch);cout<<chare.front();chare.push(ch1);cout<<chare.front();}

وهذا باستعمال string

#include <iostream>#include <queue>#include <string>using namespace std;int main() {queue<string> str;str.push("Arabteam");cout<<str.front();str.push("Arabteam1");cout<<str.front();}
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

1- لا شكر على ذلك فهذا واقع

2- لكن سأظل أناديك أستاذا طالما استفدت من معلوماتك

3- توضح الفرق الآن لكن أمر آخير و هو أنني عندما حاولت أن أنفذ الكود الأول الخاص بحالة تعريف متغير char لم يعمل و كان هناك خطآن و تحذيران 

YIbgA.jpg

 

ملاحظة استخدمت borland C++ 5.02 لأنني لم أستطع استخدامه في code::blocks لأنه مثبت على العمل مع لغة الـ C فالمترجم (compilateur) الذي ثبته معه هو gcc 

تم تعديل بواسطه tantie L
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

البرنامج يشتغل عندي

استعملي برنامج Dev-cpp

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

للأسف ليس عندي هذا البرنامج .... :(  :(

لكن لا بأس ما دام اشتغل عندك فهذا جيد...

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

مشكور تم تثبيت البرنامج يا أستاذ سأجرب الكود فيه الآن كافتتاحية 

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أستاذ نزار هل كانت نتيجة الكود بعد تطبيقه هكذا 

 

9dufB.jpg

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أجل :) :) :) :) :) :) :) :)

هذا تعديل على الكود

#include <iostream>#include <queue>using namespace std;int main() {queue<char*> chare;char ch[50] = "Arabteam";char ch1[50] = "Arabteam1";chare.push(ch);cout<<chare.front();chare.pop();chare.push(ch1);cout<<chare.front();system("pause");}
تم تعديل بواسطه nizarnizario
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

رائع  :lol:  :D  :lol:  :D  :lol:  :D  :lol:  :D

مشكوووووووووووووووووووووورعلى الدرس و البرنامج 

و في انتظار المزيد منك أستاذ

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

لاحظت أخي أنك تخلط بين char* وبين char ... فلا توجد مشكلة من انشاء طابور للنوع char ( اي حرف واحد )

كما أرغب بإضافة أمر هام ..

إن جميع هيكال البيانات في STL يمكننا استخدامها مع أي نوع سواء طان من الأنواع الأساسية في اللغة , أو كان فئة classمن تعريفنا ..

وحتّى يمكنك أن تقوم بعمل طابور لمكدّسات مثلاً والمكدّس يكون بالأصل لنوع ما ..

إنها templates حيث يمكنك وضع أي نوع

 

بالتوفيق

___________________

أختي الكريمة طلبك عن

 

القوائم و المكدسات

تجدينه لدى الأستاذ Snack3r في هذه السلسلة الرائعة ..

 

بالتوفيق

تم تعديل بواسطه مصطفى 36a2
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

جيد جيد تم التحميل بنجاح...

هل هناك كتب أخرى تنصحنوني بدراستها حتى أنمي معارفي بلغة C ؟

أشكركم كثيرا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

لاحظت أخي أنك تخلط بين char* وبين char ... فلا توجد مشكلة من انشاء طابور للنوع char ( اي حرف واحد )

كما أرغب بإضافة أمر هام ..

إن جميع هيكال البيانات في STL يمكننا استخدامها مع أي نوع سواء طان من الأنواع الأساسية في اللغة , أو كان فئة classمن تعريفنا ..

وحتّى يمكنك أن تقوم بعمل طابور لمكدّسات مثلاً والمكدّس يكون بالأصل لنوع ما ..

إنها templates حيث يمكنك وضع أي نوع

 

بالتوفيق

___________________

أختي الكريمة طلبك عن

تجدينه لدى الأستاذ Snack3r في هذه السلسلة الرائعة ..

 

بالتوفيق

Merci pour ces explications

est-ce que tu peux me donner un livre pour ça

وحتّى يمكنك أن تقوم بعمل طابور لمكدّسات مثلاً والمكدّس يكون بالأصل لنوع ما ..

merci

(pardon ,je ne suis pas dans mon pc)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .