-
المساهمات
3552 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
34
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو سمير عبود
-
مرحباً @محمد احمد42 يُمكنك إستعادة ما دفعت من خلال التواصل مع مركز المساعدة من خلال الرابط التالي و فتح تذكرة لما تريد و سيقوم فريق الدعم الفني بمُساعدتك في أقرب وقت. نصيحتي لك إذا كان تخصصك الجامعي يتقاطع مع مجالات البرمجة أن تُنظم وقتك قليلا و تُخصص الوقت للتعلم الذاتي لأن الجامعة لن تُعلمك أشياء كبيرة، فقط أشياء عامة و سطحية و الإنسان الناجح هو من يعرف كيف يوازن إهتماماته و يُنظم وقته، حتى لو كان تخصصك ليس في البرمجة فهي ستُساعدك. لذلك أدرس قرارك جيداً. بالتوفيق.
-
مرحباً بك، الأسئلة ليست سهلة و ليست صعبة لكنها تحتاج منك بحث لذلك أنصحك بالتمرن عليها و البحث حتى تستطيعي حلها بخصوص السؤال الأول يطلب منك إنشاء class أي قسم جديد داخل المدرسة و قراءة معلومات القسم من ملف txt مع إدخال كافة الطلاب في القائمة المترابطة الخاصة بالطلاب بإمكانك عمل هذا من خلال الدالة التالية: Node* create_class() { ifstream file("file.txt"); // فتح الملف string line; // إنشاء متغير سيحمل مُحتوى كل سطر من الملف Node* node; // إنشاء مؤشر على كائن من النوع قسم int node_id; // إنشاء متغير سيحمل قيمة ID للقسم التي سنقرأها من الملف int i = 0; // عداد if (file.is_open()) { // فحص إذا كان الملف مفتوح while (getline(file, line)) // عمل حلقة و جلب كل مرة سطر من الملف { stringstream ss(line); // نستخدمه لفصل الكلمات التي في السطر الواحد if (i == 0) { // في حالة السطر الأول ss >> node_id; // الخاصة بالقسم وتخزينها في متغير IDأخذ قيمة ال node = new Node(node_id); // إنشاء القسم } else if(i == 1) { // في حالة السطر الثاني ss >> node->NoOfStudents; // أخذ قيمة عدد الطلاب و تخزينها } else { // من هنا نبدأ في قراءة معلومات الطلاب و كل سطر يحوي معلومات طالب long id; // إنشاء بعض المتغيرات لتخزين البيانات string name; string address; ss >> id; // IDأخذ ال getline(ss, name, ','); // أخذ الإسم getline(ss, address); // أخذ العُنوان student* s = new student(id, name, address); // إنشاء طالب بإستخدام المعلومات s->below = nullptr; //NULL جعل مؤشر الطالب الموالي node->add_student(s); // إضافة الطالب للقسم } i++; // رفع قيمة العداد } file.close (); // غلق الملف } else cout << "Unable to open file"; node->Next = nullptr; // NULL جعل مؤشر القسم التالي return node; // إرجاع مؤشر القسم الذي أنشأناه } بإمكانك تجربة المثال من هنا و هذا مُحتوى الملف: و هذه نتيجة المثال: بالتوفيق.
-
الخطأ أنك تستخدم (==) لفحص التساوي و هذا الرمز نستخدمه لفحص إذا كان المرجع هو نفسه، لفحص تساوي سلسلتين نصيتين من حيث القيمة نستخدم الدالة equals و هذه الدالة حساسة للحروف و بالتالي فإن الكود يُصبح بالشكل التالي: if(message.equals(words.get(0))){ System.out.println(reply+"Hi!, how are you "+name); message = sca.next(); } إذا كنت تريد فحص تساوي القيمتين مع عدم أخذ طبيعة الحروف بعين الإعتبار يُمكنك إستخدام equalsIgnoreCase. بإمكانك تجربة المثال من خلال هذا: الرابط بالتوفيق.
- 5 اجابة
-
- 1
-
مرحباً @Mari Carmen الأسئلة الثلاثة الأولى تطلب منك إنشاء الدالة البانية (constructor) لأصناف الثلاثة (School، Node، Student) أما السؤال الرابع لإنشاء مُدمر (destructor) للصنف Student إنشاء School constructor class school { string Name; Node *Head; int n;//number of classes in school public: school(string name) { this->Name = name; this->n = 0; } }; إنشاء Node constructor class Node { int ID; int NoOfStudents; int NoOfExams; student *t;// a linked list of students is allocated dynamically Node *Next; public: Node(int id) { this->ID = id; this->NoOfStudents = 0; this->NoOfExams = 0; this->t = nullptr; this->Next = nullptr; } }; إنشاء Student constructor class student { long ID; string Name; string Address; float grades[3]; student *below; public: student(long id, string name, string address) { this->ID = id; this->Name = name; this->Address = address; } }; إنشاء Student destructor: يقوم فقط بطباعة الجملة المطلوبة: ~student() { cout << "student destructor is called"; } ليُصبح الكود بهذا الشكل: class student { long ID; string Name; string Address; float grades[3]; student *below; public: student(long id, string name, string address) { this->ID = id; this->Name = name; this->Address = address; } ~student() { cout << "student destructor is called"; } }; class Node { int ID; int NoOfStudents; int NoOfExams; student *t;// a linked list of students is allocated dynamically Node *Next; public: Node(int id) { this->ID = id; this->NoOfStudents = 0; this->NoOfExams = 0; this->t = nullptr; this->Next = nullptr; } }; class school { string Name; Node *Head; int n;//number of classes in school public: school(string name) { this->Name = name; this->n = 0; } }; يُمكنك إنجاز بقية الأسئلة كما يُمكنك الإعتماد على هذه الدروس: سلسلة ++c للمحترفين بالتوفيق.
- 4 اجابة
-
- 1
-
مرحباً بك القالب هو قالب ووردبريس مُعدل ليُلائم متطلبات الموقع و إسم القالب هو NewsPlus يُمكنك معرفة ذلك من خلال أدوات المُطور ثم Sources كما هو موضح في الصورة: يُمكنك إستخدام قوالب مدفوعة و إختيار القالب الذي يُعجبك من منصة Themeforest بالتوفيق.
-
مرحباً @Anwar Mohammed بإمكانك إستخدام الخوارزمية التالية إنشاء سلسلة نصية مبدئية تتكون من n محرف من 'X'، مثلاً إذا كان n = 3 تكون هذه السلسلة XXX تبديل كل X بالسلسلة التي نُريد ان نُكررها static string RepeatReplace(string s, int n) { return new String('X', n).Replace("X", s); } يُمكنك تجربة المثال من هنا بالتوفيق.
-
مرحباً @Omar Gaming يُمكنك إرفاق الملفات من خلال الصندوق الذي تكتب فيه التعليق: بحيث يمكنك إما سحب الملف و إفلاته أو يُمكنك الضغط على إختر الملف ثم تختار الملف الذي تريد إرفاقه.
-
مرحباً بك، في تعلمك للبرمجة لن تحتاج إلى فيزياء و لا رياضيات لكن ستحتاج إلى بعض المفاهيم البسيطة (كالعمليات الرياضية بين الأعداد و الأولوية بينهم و بعض الأمور الأخرى)، لكن إذا كان البرنامج الذي تريد بناؤه يتعلق بالرياضيات أو الفيزياء بشكل كبير كحل مُعادلات مُعقدة أو أنظمة أو حل مسائل مُتعلقة بقوانين الفيزياء ستحتاج فهم في هذه الأمور أو على الأقل شخص مُختص، لذلك إن كنت تُحب المجال فأبدأ و لن تواجهك عوائق كثيرة. يُمكنك الإستفادة من بعض المقالات في الأكاديمة حول المجالات الموجودة في البرمجة و ما الذي تحتاج تعلمه في كل مجال. بالتوفيق.
-
مرحباً، أنا لا أنصحك بتشتيت نفسك في تعلم التقنيات و مُشاهدة الدروس تِباعاً فالأفضل لك التركيز على لغة واحدة حالياً. أيضاً تعلم الدروس فقط بدون جمع و توظيف ما تعلمته في مشاريع حقيقية لن يُفيدك في شيء و سيؤدي بك للوقوع في مُشكلة إسمها المعرفة المُزيفة و دوامة الدروس يعني تدخل دورة تشاهد دروسها ثم تدخل دورة ثانية و هكذا بدون الخروج بمشروع كامل مُنفصل يحوي ما تعلمته، شيء طبيعي أن الطالب أو المُتعلم يستطيع التطبيق وراء المُدرب أو الذي يشرح الدورة لكن أنا أتحدث عن مشروع مُنفصل بينك و بين نفسك هنا يظهر مدى إستوعابك للدروس و طريقة تعاملك مع حل المشكلات التي تواجهك ضِفْ على ذلك كل ما قمت بعمل مشروع ما ستزيد خبرتك و سيتطور مُستواك. ضع لنفسك هدف و احرص على تحقيقه مثلاً ولْنَقُل أنك تريد أن تُصبح مُطور تطبيقات أصيلة للأندرويد بالتالي: عليك دراسة أساسيات لغة جافا و تطبيق بعض المشاريع لترسيخ هذه المفاهيم ثم تنتقل إلى فهم مبادئ البرمجة الكائنية و بعدها تنتقل إلى دراسة الأندرويد و تبني تطبيقات فعلية على منصة أندرويد و اهتم بكل ما يخص برمجة الأندرويد من تقنيات و أساليب لأن هذا سيجعلك مُتميز في مجالك و يخدم هدفك الذي وضعته. لا تتعلم كل شيء و لا تتعلم بشكل همجي و إنما ضع خطة و هدف لنفسك، إعرف كل شيء عن شيء و شيئ عن كل شيئ . لا تُضيع وقتك في الإنتقال من تقنية إلى أخرى و من لغة إلى أخرى و إعرف أن التخصص ضرورة حتمية لابد منها و بعد إكتسابك للخبرة اللازمة في مجالك و قيامك بمشاريع إحترافية يُمكنك حينها تعلم تقنية أو لغة جديدة أو الدخول إلى مجال آخر و هذا الشيء أنت من يُقرره بالأخير. بالتوفيق.
- 10 اجابة
-
- 2
-
مرحباً بك ، التقنية المكافئة ل Remote Method Invocation) RMI) في C# هي net remoting. أيضاً WCF أي (Windows Communication Foundation) بالتوفيق.
- 4 اجابة
-
- 1
-
مرحباً بك ، لغات البرمجة هي أدوات تُسهل على المُبرمج كتابة برامجه على شكل أوامر و تعليمات يفهمها الحاسوب مثلها مثل لغات البشر العادية كالعربية، الإنجليزية و غيرها فلغة الحاسوب تُسمى اللغة الثُنائية تتكون فقط من 0، 1 و لغات البرمجة تتكون من تعليمات و أوامر قريبة إلى لغة البشر(الإنجليزية) هذه التعليمات سيتم تحويلها في الأخير إلى لغة الآلة (اللغة الثنائية) تم إبتكار هذه اللغات لتسهيل التعامل مع الحاسوب عِوض التعامل معه بلغته الخاصة نتعامل معه بلغة نفهمها نحن لكن بمعايير و أوامر مُحددة. لكل لغة syntax خاص بها لكن ما يجمع هذه اللغات هو أن المفاهيم البرمجية تبقى نفسها و يمكن تقسيمها إلى نوعين من حيث قربها للغة البشر: لغات عالية المُستوى كجافا و بايثون و غيرها لغات مُنخفضة المُستوى مثل لغة التجميع تحتاج اللغات عالية المُستوى إلى مُفسر أو مُترجم الذي يتولى ترجمة و تحويل هذه الكلمات و الرموز التي يتكون منها البرنامج إلى لغة الآلة. بالتوفيق
- 10 اجابة
-
- 1
-
uml هو اختصار لUnified Modeling Language او ببساطة لغة النمذجة الموحدة تُستخدم في نمذجة التطبيقات و الأنظمة التي تعتمد على البرمجة الكائنية OOP و تُستخدم لعمل نموذج مبدئي للتطبيق أو النظام سهل الفهم و مقروء من قبل المطورين أو المُبرمجين لذلك سُميت لغة النمذجة المُوحدة هناك عدة أنواع من المخططات التي تعتمد عليها Uml يُمكن حصرها في نوعين: Structural Diagrams Behavioral Diagrams و تحت كل نوع يندرج عدة أنواع من المُخططات: يُمكنك قراءة هذا المقال من: هنا الذي يتحدث عن الموضوع بالتفصيل. كما يُمكنك مشاهدة هذا المقطع لأخذ فكرة: إضغط هنا بالتوفيق.
- 6 اجابة
-
- 3
-
مرحباً @مصعب بغلف يُمكنك إنشاء حسابك على منصات العمل الحر و عرض خدماتك التي تريد ان تُقدمها و ذلك في المجال التي تحترفه منصة مستقل منصة خمسات هذه هي المنصات العربية المشهورة كما يُمكنك عرض خدماتك في المنصات الأجنبية و هذه أشهرها: منصة upwork منصة freelancer العقبة الوحيدة التي قد تواجهك بعد إكتساب خبرة في المجال الذي اخترته هي حصولك على أول مشروع لك على المنصة لكن الأمر ليس مستحيل فبعد حصولك على أول عمل و إتمامه كما يريد العميل ستكون قد كسبت أول زبائنك الذي و إذا ما أراد إنجاز مشروع آخر في المستقبل سيتصل بك إن كنت متفرغ لإنجاز مشروعه فبإتمامك للمشاريع التي تستقبلها بجودة عالية أنت تكسب عملاء و زبائن جدد و هذه بعض المقالات التي يُمكن أن تساعدك و تُفيدك: العمل الحر مدونة مستقل دروس و مقالات في العمل الحر أكاديمية حسوب نأتي إلى الجزء الثاني من السؤال ماهي أكثر اللغات البرمجية المطلوبة الآن ؟ العالم الآن يتجه إلى إستعمال لغة بايثون و لغة جافاسكربت بشكل كبير لكن هذا لا يعني أن اللغات الأخرى غير مطلوبة بالعكس فكل لغة يتم إستعمالها و مطلوبة و هذه اللغات ماهي إلا أدوات يستخدمها المبرمج لذلك عليك التركيز على مفاهيم البرمجة و تعلمها و طبيعة العمل هي التي تفرض عليك أي أداة تستخدم و إن كنت فاهم للبرمجة و مفاهيمها بشكل جيد ستتمكن من تعلم لغة جديدة في وقت قصير. يُمكنك أيضاً متابعة منصة بعيد فهي منصة تسمح للشركات بتقديم عروض للعمل عن بعد بالتوفيق.
- 7 اجابة
-
- 2
-
مرحباً عبد الواحد ، الواجهة التي قمت بها ممتازة و مُستواك في التصميم يتطور بإستمرار أنصحك بالمواصلة على هذه الطريقة. لدي تعليق بسيط بخصوص الألوان خصوصا الألوان البرتقالية غير متناسقة مع بعضها البعض، لكن العمل في المُجمل جيد. بالتوفيق.
- 9 اجابة
-
- 1
-
مرحباً ياسين ، يمكنك إستخدام إضافة select2 مع خيار التعدد (multiple) و هذا مثال بسيط عن إستخدامها. و بخصوص الbackend سيتم إرسال مصفوفة مع الطلب تضم القيم التي إختارها المُستخدم. بالتوفيق.
- 3 اجابة
-
- 1
-
مرحباً @Ahmed Edress هناك العديد من المجالات التي يُمكنك العمل فيها على منصات العمل الحر سواء الأجنبية أو العربية لكن أنصحك في بداية الأمر الدخول إلى المنصات العربية و أشهرها منصة مستقل و خمسات لكن تأكد أن المنافسة على المشاريع شديدة و فُرصة الحصول على مشروعك الأول صعبة لكن الأمر ليس مُستحيل فكما حصل المستقلين السابقين على أول عمل لهم يُمكنك أنت أيضاً، لكن هناك بعض النقاط ضرورية تزيد من فرصك للحصول على أول مشروع لك: إختيار مجال على المنصة هناك عدة مجالات: أعمال وخدمات استشارية، برمجة، تطوير المواقع والتطبيقات، تصميم وأعمال فنية وإبداعية، تسويق الكتروني ومبيعات،كتابة ، تحرير، ترجمة ولغات، دعم، مساعدة وإدخال بيانات، تدريب وتعليم عن بعد ... عليك إكتساب خبرة كافية تُخولك لإنجاز مشاريع بالجودة التي يريدها صاحب المشروع في المجال الذي اخترته و هذا الشيء ضروري يُمكنك إلقاء نظرة عن عينة من المشاريع و التأكد من ذلك هل أنت فعلاً قادر على إنجازها أم لا؟ الإهتمام بملفك الشخصي و معرض أعمالك لأنه واجهتك بالنسبة لصاحب المشروع و هو الدليل على خبرتك في المجال تقديم عروض إحترافية و مُقنعة و غير مبالغ فيها على المشاريع و عند وتقديمك للعرض ضع نفسك مكان صاحب المشروع و اسأل نفسك هل صاحب هذا العرض هو الشخص المُناسب أم لا. ستجد على مدونة مُستقل و مدونة خمسات العديد من النصائح و المقالات التي ستكون مفيدة لك أذكر منها: نصائح للمستقلين العمل الحر أتمنى لك التوفيق
- 5 اجابة
-
- 1
-
مرحباً @الشيخ المختار الشنقيطس أنماط التصميم (Design Patterns) هي عبارة أساليب أو طرق مٌبتكرة يتم إستخدامها لحل مشاكل مُتكررة أي صادفت العديد من المُطورين من قبل. ويُمكن تقسيم هذه الأنماط إلى عدة أنواع يُمكن إختزالها في ثلاثة أنواع: أنماط التصميم الإنشائية أنماط التصميم الهيكلية أنماط التصميم السلوكية لكن قبل الدخول و الغوص في هذا المجال عليك معرفة أن هذه الأنماط ليست متعلقة بلغة برمجة مُعينة و إنما يُمكن تطبيق النمط بأي لغة برمجة. أيضا حتى تستطيع فهم النمط و أين تستخدمه و ماهي الحالات التي تستعمل فيها النمط عليك أن تدرس و تفهم البرمجة الكائنية جيدا وتفهم الأسس الأربعة التي بُنيت عليها: Abstraction Encapsulation Inheritance Polymorphism بعد فهم هذه المبادئ جيداً أدرس العلاقات بين الكائنات ك Association ، Composition Aggregation و ماهو الفرق بينها، بعدها أدرس مبادئ التصميم و هي 5 و تُسمى SOLID principles بعد الفهم الجيد لهذه الأشياء ستتمكن من فهم أنماط التصميم و كيفية تطبيقها و متى تُطبقها. يُمكنك متابعة هذه السلسلة من خلال هذا الرابط: SOLID Principles بالعربى ثم هذه السلسلة: Creational Design Patterns بالعربى ثم هذه السلسلة: Structural Design Patterns بالعربى إذا كنت تستخدم لغة PHP فستُفيدك هذه السلسلة جيداً كما قلت سابقاً فالأنماط ليست تابعة للغة مُحددة يُمكنك تطبيقها بأي لغة كانت: إضغط هنا كما يُمكنك الإعتماد على توثيق موسوعة حسوب بخصوص أنماط التصميم من: هنا كما يوجد بعض المقالات حول أنماط التصميم على الأكاديمية يُمكنك الوصول لها من خلال هذا الرابط: إضغط هنا بالتوفيق.
- 4 اجابة
-
- 1
-
مرحباً بك المطلوب منك إكمال شيفرات التوابع الموجودة في الصنف ConcordanceBuilderC هذا الصنف سيقوم بإنشاء فهرس كامل للكلمات المُكونة لجُملة ما لذلك ستقوم بتمرير الجُملة التي تريد أن تعمل لها فهرس كمُعامل أو كوسيط للدالة البانية لهذا الصنف. و ذلك عند إنشاء كائن من الصنف ConcordanceBuilderC و بعدها تقوم بتنفيذ التابع buildConcordance على الكائن الذي أنشأته، هذا التابع المفروض يقوم بالمرور على كلمات الجُملة كلمة تلو الأخرى و يقوم بإضافتهم إلى الArrayList المُسماة concordance بشرط عدم تكرار الكلمة و إذا وجد أن الكلمة تمت إضافتها من قبل يقوم برفع عدد تكرار الكلمة ب 1 أو عدد تواجد الكلمة في الجُملة كما يقوم بإضافة موضع الكلمة إلى الArrayList المُسماة whereOccurence و هكذا حتى إنتهاء كلمات الجُملة. و في الأخير يقوم بطباعة الفهرس و ذلك من خلال إستدعاء التابع displayConcordance على الكائن المنشأ و هذا ما تم كتابته في الصنف ConcordanceMain و عند تنفيذ البرنامج سيتم تنفيذ الدالة main الموجودة في هذا الصنف و يوجد خطأ في الدالة main فالمفروض تكون بهذا الشكل: public class ConcordanceMain { public static void main(String[] args) { // TODO Auto-generated method stub String sentence1 = "Hello dear I am a student and I love Programming " + "My name is Ahmed " +"Ahmed likes java and Programming"; String sentence2 = "Hi Hi"; ConcordanceBuilderC con = new ConcordanceBuilderC(sentence2); // كان لديك خطأ في إسم الكلاس هنا con.buildConcordance(); con.displayConcordance(); } } قم بمحاولة إكمال الشيفرات البرمجية بنفسك و إذا لم تستطع يُمكنك البحث أكثر أو طلب المُساعدة بطرح إستفساراتك هنا و سنقوم بمُساعدتك للوصول إلى المطلوب. بالتوفيق.
-
مرحباً @عبد الواحد الحدادي يُمكنك مُشاهدة هذا الفيديو لإنشاء قائمة جانبية تتحرك من اليسار إلى اليمين: و مع بعض التعديلات في التنسيقات كتغيير قيمة الخاصية float من left إلى right و أيضا التعديل في قيم تموضع بعض العناصر ستتمكن من تغيير تحرك القائمة من اليمين إلى اليسار إذا لم تتمكن من ذلك يُمكنك مُشاهدة هذه الpen: بإمكانك مشاهدة المثال التالي: إضغط هنا فيه ستجد قائمة جانبية تم إنشاؤها بإستخدام bootstrap و مكتبة jQuery كما يُمكنك الإطلاع على الأكواد البرمجية الخاصة بها. بالتوفيق.
- 7 اجابة
-
- 1
-
مرحباً @Barmaja Barmaja نحن كمربمجين أو كمطورين لسنا مُلزمين بحفظ الأكواد أو الشيفرات البرمجية إنما علينا إيجاد حلول برمجية للمشاكل وفهم الأسس و المبادئ على سبيل المثال يُمكننا نسيان طريقة كتابة حلقة for في لغة جافاسكربت لكن لا يُمكننا نسيان مفهوم الحلقة و ماهي فائدتها و لماذا نستخدمها فإذا نسينا طريقة الكتابة يُمكننا ببساطة الرجوع إلى توثيق اللغة أو درس من دورة ما أو مقال و سنتذكر طريقة الكتابة لكن إن نسينا المفهوم في حد ذاته هنا المشكلة. بما أنك في بداية المشوار فهذا الأمر طبيعي لكن بالممارسة و التطبيق العملي و إنشاء مشاريع كثيرة ستتعود على كتابة الشيفرات البرمجية حتى و إن نسيت يُمكنك المراجعة حينها فنحن لسنا في إمتحان. الخلاصة ببساطة يمكنك أن تنسى طريقة تطبيق المفهوم، لكن لا يليق بك أن تنسى المفهوم نفسه. بالتوفيق.
- 7 اجابة
-
- 3
-
مرحباً @salahkr نعم بإمكانك الإعتماد على إطار Bootstrap أو أحد الأطر الأخرى ك Foundation أو Bulma أو Materialize ... أو يُمكنك إستخدام tailwind الذي يُعتبر أيضاً إطار عمل من المستوى المنخفض خاص بالcss فعِوض أن تكتب خصائص css ستقوم بكتابة مجموعة من الأصناف (classes) تُعبر عن كل خاصية في كل عنصر و هذا التوثيق الخاص بكل إطار: Tailwind Materialize Bootstrap Bulma Foundation لكن قد تجد نفسك أحياناً في حالات تُحتم عليك تعديل بعض الأشياء و في هذه الحالة سيتوجب عليك كتابة css العادي أحياناً المشروع ككل عبارة عن صفحة واحدة لعرض مُنتج أو صفحة نزول لتطبيق إلكتروني يُمكنك في هذه الحالة إستخدام الcss العادي لأنك بطبيعة الحال لن تحتاج لكافة الكلاسات و الخصائص التي يُوفرها إطار العمل. عند إستخدامك لإطار العمل ستجد نفسك مقيد بالقيم التي يوفرها بعكس عند إستخدامك للcss العادي فستكون لديك الحُرية الكاملة لإستخدام القيم التي تريد. بالتوفيق.
- 7 اجابة
-
- 2
-
العداد coun يبدأ من 0 إلى الإرتفاع بمعنى إذا كان hgt == 3 فسيكون تكرار الحلقه الخارجية 3 لأن العداد يبدأ من 0 و سيأخذ القيم 0، 1، 2 و هو ما يوافق عدد الصفوف أو الإرتفاع 3 العداد w يأخذ قيما متعلقة ب coun فعندما يكون coun == 0 سيتم الدخول إلى الحلقة الداخلية و تنفيذ محتواها و هذا إذا كان الشرط فيها أقل أو يساوي و بالتالي سيتم طباعة # مرة واحدة. أما عندما يكون coun == 2 فتكرار الحلقة الداخلية سيكون 3 و w سيأخذ القيم 0، 1، 2 و بالتالي سيتم طباعة ### 3 مرات و بهذا الشكل نكون قد حققنا الهرم المطلوب: hgt == 3 coun == 0, 1, 2 : ثلاثة لفات تقابلها 3 صفوف في الهرم w في اللفة الأولى للحلقة الخارجية سيكون 0 و بالتالي طباعة # مرة واحدة ثم الإنتقال إلى سطر جديد w في اللفة الثانية للحلقة الخارجية سيكون 0 ثم 1 و بالتالي طباعة ## مرتين ثم الإنتقال إلى سطر جديد w في اللفة الثالثة للحلقة الخارجية سيكون 0 ثم 1 ثم 2 و بالتالي طباعة ### ثلاث مرات ثم الإنتقال إلى سطر جديد و في هذا الوقت سيكون coun == 2 و عند رفع قيمته ب 1 سيُحقق شرط الخروج من الحلقة الخارجية لأن hgt == 3 ثم إنهاء البرنامج و النتيجة ستكون # ## ### بالتوفيق.
- 8 اجابة
-
- 1
-
نعم هذا صحيح فالدورات تبدأ معك من البداية لكن أنا نصحتك بدراسة مسار مدخل إلى علوم الحاسوب لأنه سيُسهل عليك فهم دروس لغة روبي كثيراً . اتمنى لك التوفيق
- 11 اجابة
-
- 1
-
مرحباً @هشام عثمانيه إذا كنت مبتدئ و مهتم بلغة روبي أنصحك قبل كل شيء بدراسة المسار الأول من دورة علوم الحاسوب لأنه عند إشتراكك في أي دورة من دورات الأكاديمية ستستطيع الوصول إلى المسارات الأولى من بقية الدورات الأخرى. لذلك عند إشتراكك في دورة روبي إبدأ بمسار مدخل إلى علوم الحاسوب لأنه يشرح أساسيات البرمجة و الخوارزميات و التفكير المنطقي بأسلوب سهل و مُبسط وشيق. بعد إنهاء هذا المسار ستتمكن من فهم مسار أساسيات لغة روبي و ذلك بمساعدة المدربين أيضاً لأن الأكاديمية توفر لك مجموعة من المدربين لمساعدتك و الرد على إستفساراتك في أي وقت من خلال طرحها في صندوق التعليقات المخصص لكل درس. بالتوفيق.
-
أولا عليك فهم طريقة كتابة الحلقة for: for ( init; condition; increment ) { // code here } init: يتم تنفيذه مرة واحدة في البداية ويتم فيه تهيئة المتغيرات condition: هو شرط يتم التحقق منه في كل لفة إذا كان الشرط صحيح يتم تنفيذ ما بداخل الحلقة من تعليمات إذا كان خاطئ يتم الخروج من الحلقة. increment: في هذا الجزء يُمكنك تغيير قيمة متغيرات التحكم في الحلقة و يتم تنفيذه كل مرة بعد تنفيذ التعليمات التي بداخل الحلقة و بعده يتم التحقق من الشرط ثانية. لذلك فمقدار التكرار مُعتمد على هذه الأجزاء الثلاثة لكن وجودها ليس ضروري لكن وجود الفاصلة المنقوطة التي تفصل بين هذه الأجزاء ضروري فمثلاً يُمكن أن نجد شيء هكذا: #include <stdio.h> int main() { int i = 2; // init for( ; ; ) { if(i >= 10) { // condition break; } printf("%d\n", i); i += 2; // increment } return 0; } و هذا المُخطط يُوضح طريقة عمل حلقة for: بالتوفيق.