لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 01/27/24 في كل الموقع
-
def max_product_remainder(nums, modulo): nums.sort(reverse=True) max_product = (nums[0] * nums[1]) % modulo return max_product # الأعداد للسؤال الفرعي 0 numbers_0 = [5, 5, 4, 8, 1, 7] result_0 = max_product_remainder(numbers_0, 998244353) print("سؤال فرعي 0:", result_0) # الأعداد للسؤال الفرعي 1 numbers_1 = [5, 7, 4, 1, 1, 1, 9, 1, 9, 6, 4, 9, 1, 8, 8, 8, 1] result_1 = max_product_remainder(numbers_1, 998244353) print("سؤال فرعي 1:", result_1) # الأعداد للسؤال الفرعي 2 numbers_2 = [3, 1, 4, 8, 4, 2, 8, 6, 6, 1, 6, 5, 5, 3, 4, 6, 1, 3, 7, 1, 6, 1, 9, 1, 3, 3, 3, 6, 5, 1, 5, 1, 8, 1, 6, 6, 8, 4, 9, 7, 3, 8, 4, 8, 2, 3, 3, 1, 4, 7, 8, 4, 9, 1, 9, 2, 1, 3, 6, 2, 8, 2, 1, 5, 6, 6, 6, 5, 7, 7, 7, 7, 3, 1, 8, 7, 6, 2, 8, 9, 1, 2, 3, 8, 2, 2, 1, 7, 1, 4, 5, 5, 8, 7, 9, 1, 8, 9, 3, 6] result_2 = max_product_remainder(numbers_2, 998244353) print("سؤال فرعي 2:", result_2)1 نقطة
-
كيف يمكنني أن اعرف اسم خادم قاعدة البيانات الخاصة بي1 نقطة
-
السلام عليكم اي هي اكادميه ابل المطورين وهل هي البنات فقط وكيف اشارك فيه الااكادميه1 نقطة
-
1 نقطة
-
لاحظ أن دعم الاتجاه من اليمين لليسار ليس متطورًا بالقدر الكافي في مكتبة tkinter، حتى في التوثيق الرسمي لها لم يذكروا شيئًا مفيدًا بخصوص هذا الموضوع، لذلك نستخدم الخصائص المتوافرة للحصول على أقرب النتائج لما نريده، على سبيل المثال السطر التالي لمحاولة جعل الأداة تنحاز لجهة اليمين حتى مع تحجيم النافذة. أما السطر التالي، فإنه يقوم بجعل اتجاه النصوص والأيقونات على الأدوات متجهة من اليمين (بالتأكيد ليس مدعومًا لكل الأدوات)، لذلك أيضًا نستعمل الخصائص المتوافرة لدينا لحل هذه المشكلة على سبيل المثال أداة الإدخال في tk نستخدم خاصية justify لجعل الاتجاه يمين self.entry1 = tk.Entry(self) self.entry1.config(justify=tk.RIGHT) وهكذا نحاول التغلب على القصور الموجود بالمكتبة.1 نقطة
-
for i in range(2 , 10): print(i += 2) هو مش احنا في لغة باثيون بنستخدم العامل =+ لإضافة قيمة ما على قيمة ليه هنا بيظهر خطاء1 نقطة
-
برنامج تعليمي مدته تسعة أشهر يهدف إلى تدريب الطلاب على تطوير تطبيقات iOS و macOS و iPadOS و watchOS و tvOS، وتم إطلاقه في عام 2021، ويتوفر حاليًا في 12 دولة حول العالم، بما في ذلك المملكة العربية السعودية. وهي ليست للإناث فقط، بل لجميع الطلاب الذين لديهم اهتمام بتطوير التطبيقات، وأتفهم سؤالك حيث في الدفعة الأولى من البرنامج في المملكة العربية السعودية، كان 90% من الطلاب من الإناث. وللمشاركة في أكاديمية آبل للمطورين، يجب عليك: أن تكون طالبًا جامعيًا أو خريجًا في أي مجال. أن تجيد اللغة الإنجليزية. أن تمتلك معرفة أساسية بالبرمجة. أن تكون قادرًا على العمل بشكل مستقل وجماعي. وباستطاعتك تقديم طلبك للالتحاق بالأكاديمية عبر الإنترنت، وتُتاح عملية التقديم عادةً في شهر سبتمبر من كل عام. قم بزيارة موقع أكاديمية آبل للمطورين. انقر فوق "التسجيل". أدخل معلوماتك الشخصية، مثل اسمك وعنوانك وبريدك الإلكتروني. أكمل طلبك، بما في ذلك أسباب رغبتك في الانضمام إلى الأكاديمية. تحميل سيرتك الذاتية وخطاب التحفيز. سيتم مراجعة طلبك من قبل لجنة القبول، وإن تم قبولك، فستتلقى دعوة للحضور إلى مقابلة شخصية. إذا تم قبولك في الأكاديمية، فستحصل على تدريب مكثف في تطوير تطبيقات آبل، وستتعلم كيفية استخدام أدوات وتقنيات آبل، كما ستحصل على الفرصة للعمل على مشاريع حقيقية مع طلاب آخرين. وعند الانتهاء من البرنامج، ستحصل على شهادة من آبل. ستساعدك هذه الشهادة على تطوير حياتك المهنية في مجال تطوير تطبيقات آبل.1 نقطة
-
i += 2 ليس عبارة تعبيرية صالحة داخل حلقة for، فتعبيرات الحلقة يجب أن تكون عبارة قابلة للتقييم، مثل i + 2 أو i * 2. أي كالتالي: for i in range(2 , 10): print(i + 2) أو كالتالي: for i in range(2 , 10): i += 2 print(i) أو كالتالي: for i in range(2 , 10): x = 0 x += i print(x ) أي عليك تعيين قيمة جديدة لـ i وزيادة قيمتها في نفس الوقت.1 نقطة
-
let friends = ["Ahmed", "Sayed", "Eman", "Mahmoud", "Ameer", "Osama", "Sameh"]; let letter = "a"; // Output "1 => Sayed" "2 => Eman" "3 => Mahmoud" "4 => Osama" "5 => Sameh"1 نقطة
-
هناك العديد من الطرق والمصادر الجيدة لمراجعة اساسيات جافاسكريبت ولكن الأحب إلى هو الكورس التفاعلي المجاني JavaScript Algorithms and Data Structures (Beta) ، على منصة FreeCodeCamp. وإن لم يكن لديك وقت فيمكنك المرور على أهم مفاهيم الجافاسكريبت من MDN. وأخيراً إن كنت تنوي الاستمرار في طريقك لبناء تطبيقات بالجافاسكريبت فانصحك بالتسجيل في دورة تطوير التطبيقات باستخدام لغة JavaScript ، لأكاديمية حسوب. تمنياتي بالتوفيق.1 نقطة
-
يمكنك الدخول الي https://developer.mozilla.org/en-US/docs/Web/JavaScript شرح واف وبالأمثلة يمكنك الدخول أيضا الي https://learnjavascript.online/ شرح كل جزء في الجافاسكربت مع تطبيق عليه بأمثلة لابد أن تطبق بنفسك وبما انك عندك خلفية برمجية سوف يكون الموضوع سريع بالتوفيق1 نقطة
-
1 نقطة
-
قمت بأخذ نظره على موقع مستقل ورأيت أن اغلب المبرمجين حاصلين على شهادات جامعيه أو لديهم الخبره الطويله مثل 4 سنين فما فوق فكيف لي أن انافس هاؤلاء بخبرتي البسيطه و شهادتي من حاسوب غير أني أمل بان احصل على عمل دائم1 نقطة
-
اين مكان كتابة الكود1 نقطة
-
خوارزمية إقليدس (Euclidean Algorithm) هي طريقة رياضيّة لحساب القاسم المشترك الأكبر بين عددين طبيعيين (يرمز لها بـGCD في المقررات الدراسية الإنجليزية و PGCD في المقررات الفرنسية). مبدأها يقوم على تقسيم العدد الأكبر على العدد الأصغر بقسمة صحيحة و استخدام باقي القسمة في الخطوة التالية عن طريق قسمة العدد الذي كان قاسما على باقي القسمة، وتستمر العملية هكذا حتى يصبح الباقي صفرا. عندما يصبح الباقي صفرا، يكون القاسم في هذه العمليّة هو القاسم المشترك الأكبر. وحتى لا يكون الكلام نظريّا، سأضع دالة مكتوبة مرّة بلغة Python و مرّة بلغة JavaScript تقوم بإيجاد القاسم المشترك الأكبر باستخدام خوارزميّة إقليدس (العامل % يحسب باقي القسمة مباشرة، لذلك ليس علينا أن نحسب حاصل القسمة في لغات البرمجة كما نفعل في الرياضيّات): # دالة بلغة Python def gcd(x, y): # تحقق من أن العددين موجبين if x < 0 or y < 0: return None # استخدم خوارزمية أقليدس باستخدام باقي القسمة while y != 0: # احفظ قيمة y في متغير مؤقت temp = y # اجعل y يساوي باقي قسمة x على y y = x % y # اجعل x يساوي قيمة y السابقة x = temp # ارجع قيمة x كالقاسم المشترك الأكبر return x // دالة بلغة JavaScript function gcd(x, y) { // تحقق من أن العددين موجبين if (x < 0 || y < 0) { return null; } // استخدم خوارزمية أقليدس باستخدام باقي القسمة while (y != 0) { // احفظ قيمة y في متغير مؤقت let temp = y; // اجعل y يساوي باقي قسمة x على y y = x % y; // اجعل x يساوي قيمة y السابقة x = temp; } // ارجع قيمة x كالقاسم المشترك الأكبر return x; }1 نقطة
-
//ملف طبقه وسيطه const jwt = require('jsonwebtoken'); const models = require('../models/index'); const isLogedIn = async (req, res, next)=> { try { //take token form headers and verify it to and use JWT password in env to access the jwt to verify token const token = req.headers.authorization // after take token use verify mothed to compayr the secrt key to make token verifyed const deCoded = jwt.verify(token, process.env.JWT_SECRET); // take the token and add it to req.currentUser to be can use it in any where but should use it as meddilWhere req.currentUser = deCoded; //get req currntUser form deCoded and find the id const auhter = req.currentUser; const userShack = await models.User.findById(auhter) // see if user is exsest im db and see if token exsest in authorization headers if(!token || !userShack){ return res.status(401).json({message: 'error token or user not exsist'}) } next() } catch (e) { res.status(500).json(e); } }; module.exports = isLogedIn; هنا ملف الـتشفير exports.login = async (req, res) => { const { email, password } = req.body; try { const user = await models.User.findOne({email}); // compare the password from register to real password using bcrypt module const authPassword = await bcrypt.compare(password, user.password); // if authPassword is true sgin data useing JWt module and print it in json body if (authPassword) { const token = jwt.sign({_id: user._id, name: user.name, email: user.email}, process.env.JWT_SECRET); // here we take token to save it in loaclStorg res.status(200).json({accessToken: token}); }else { res.status(401).json({ message: "بريد إلكتروني أو كلمة مرور غير صالحة" }); }; }catch (error) { console.error(error); res.status(500).json({ message: "Error during login", error: error.message }); } }; الrouteing router.post('/login', userController.login); الان السؤال لو افترضنا انني لا اريد استعمال jwt ابدا كعمل موقع صفحه هبوط او اي موقع بسيط جدا ,فكيف سيتم حفظ تسجيل المستخدم بدون jwt و كطبقه وسيطه هل سنتعمل req.headers.authorization مستعملا postman لختابر التصال؟1 نقطة
-
انت بحاجة إلى معرفة ال session وكيفية عملها وبعدها يمكنك التفكير فى تطبيق عملى تستطيع تنفيذ ما تعلمته فيه. ال session موضوع طويل شوية بس مستخدم بكثرة وهو سهل التعلم ولكن ال jwt مستخدم أكثر. ويجب عليك التركيز حاليا فى تعلم شئ واحد حتى لا تصاب بالتشتت ومن ثم الانتقال الى الموضوع الآخر.1 نقطة
-
1 نقطة
-
هناك طريقتين لعمل authorization أما عن طريق الtoken أو عن طريق ال session وعند استخدام ال session يمكنك الاستغناء عن ال headers وسوف تستخدم حاجة اسمها cookies ولن تحتاج لإرسالها سواء فى ال body أو ال headers لأنها ستكون محفوظة عند المستخدم فى الجهاز. وأما عن استخدام postman فى حالة الاستغناء عن ال jwt token واستخدام ال session فيمكنك استخدامه أيضا فى تحقيق الاتصال.1 نقطة
-
نعم يمكنك فعل هذه ، تقدم Tkinter خيارًا يسمى direction، يمكن تعيينه إلى "right-to-left" لتمكين التخطيط من اليمين إلى اليسار. يمكنك تعيين هذا الخيار للتطبيق بأكمله أو لعناصر واجهة المستخدم الفردية : root = tk.Tk() root.option_add('*Ttk*direction', 'rtl') # تعيين الاتجاه لجميع عناصر ttk إذا كنت ترغب في تعيينه لعناصر محددة، قم بتبديل *Ttk* بالاسم الأسلوب المناسب (على سبيل المثال، *TButton*direction). مثال على استخدام "CustomTkinter" : import CustomTkinter as ctk root = ctk.CustomTk() root.option_add('*Ttk*direction', 'rtl')1 نقطة
-
1 نقطة
-
أهلًا طارق، الاختبار يهدف إلى التأكد من أن الطالب استطاع فهم جميع التقنيات التي استطع إنهائها. في حال كان لديه ضعف في تقنية ما فسوف يتوجب عليه إعادة القسم الذي لديه ضعف فيه وهذا لفائدة الطالب ولمعرفة قدراته على بناء مشاريع بهذه التقنيات، شكرًا لك،1 نقطة
-
أهلا، أنا أحد المبرمجين وعملت على موقع مستقل وخمسات. أريد أن أخبرك أن الزبائن لا يهتمون عادة لشهاداتك (فهم لا يعرفون كيف حصلت عليها ولا حتى قيمتها في الواقع) ولا خبرتك التي تكتبها عن نفسك (فهم لا يصدقون كلامك بهذه البساطة)، ولكنهم يهتمون بشيئين أساسيين: مشاريعك السابقة، وتقيمك من طرف الزبائن الآخرين. بالنسبة للتقييم من الزبائن، فهذا صعب للحصول عليه، خاصّة أنه يرتبط بكل موقع على حدة. يعني أنك لو حصلت على تقييم في موقع ما، فلن يعني شيئا عندما تذهب للعمل من خلال موقع أو شركة أخرى، لذلك سنتجاوز هذه النقطة في البداية. أما مشاريعك السابقة، فهذه هي حجر الأساس في بدايتك. المشاريع السابقة يقصد بها كل عمل جيد قمت به بحيث يثبت مهارتك. قد تسأل: كيف تحصل على المشاريع السابقة؟ ببساطة بالقيام بها. من سيطلب منك القيام بها ومن سيستلمها منك؟ ببساطة لا أحد. المشاريع السابقة ليس بالضرورة أن تكون موجهة لتلبية طلبات شخص معين، بل يمكن القيام بمشاريع من أجل التدرّب على ما تعرفه ثم عرضها على الزبائن لكي يقتنعوا أنك قادر على إنشاء شيء جيّد. من أين آتي بأفكار لهذه المشاريع؟ ببساطة، من أي مكان، بما في ذلك من آراءك الشخصيّة. لكن إذا كنت تريد إنشاء شيئ مطلوب عند الزبائن، فيمكنك تصفّح ما يطلبونه (على مستقل مثلا) ثم اختيار طلب يبدو متوافقا مع ما تحسن فعله، ثم تقوم به بنفسك كتدريب. في هذه المرحلة، لا تقم بإرسال عرض إلى الزبون ولا تحاول إقناعه باختيارك لأنك ستفشل في غالب الأمر، لكن فقط قم بالمشروع بينك وبين نفسك. كرر هذا الأمر مع عدد من المشاريع (3 على أقل تقدير) ثم بعد ذلك يمكنك وضعها على ملفّك الشخصي واستخدامها كدليل على خبرتك. كيف أقنع الزبون بأني أحسن القيام بما يطلب؟ هنا تجنّب مدح نفسك وذكر خبرتك فقط، فهذا لا يهم الزبون كثيرا. لكن اكتب له جوابا تشرح فيه كيف ستقوم بالعمل وماذا سيكلف وماذا ستحتاج منه، واعرض عليه إضافات قد لا يكون هو نفسه منتبها لها. وكذلك حاول عرض شيء مشابه قمت به من قبل أو حاول إنشاء نسخة مصغرة من متطلباته قبل ارسال العرض حتى تثبت له أنك فهمت المتطلبات وقادر على إنجاز ما يحتاج إليه. أتمنى لك التوفيق.1 نقطة
-
الرقم الفردي هو كل رقم ليس زوجيّا. للتحقق من أن الرقم زوجي يكفي التأكد من أنه قابل للقسمة على 2 (باقي القسمة = 0)، بينما الرقم الفردي خلاف ذلك. يعني: X = 15 # التحقق من قابلية العدد للقسمة على 2 if X % 2 == 0: print(f"{X} عدد زوجي") else: print(f"{X} عدد فردي")1 نقطة
-
بخصوص عالمنا العربي فيتم استخدام مكتبة React مع إطار Next.js بنسبة أكبر سواء في الشركات أو العمل الحر، يأتي بعد ذلك استخدام إطار Angular.js في الشركات أيضًا، ثم يأتي إطار Vue.js. لمعرفة المطلوب في سوق العمل لديك ومستوى الخبرة المطلوب، عليك بتفقد منصات التوظيف مثل LinkedIn وIndeed وغيرهم، وبالنسبة للعمل الحر تفقد منصة مستقل وخمسات وأيضًا منصة بعيد. وبالطبع ما تم ذكره أفضل من jQuery بمراحل، لكن الأخيرة كان يتم استخدامها بكثرة في المشاريع سابقًا لذا عند العمل على تطوير مشاريع تم تطويرها منذ فترة سيتعين عليك التعامل مع jQuery.1 نقطة
-
كثيرًا ما تتردد على مسامعنا عبارة التفكير المنطقي ونسمع نصائح حول أهميته وضرورة تحسينه واستخدامه في حل مشكلات حياتنا اليومية واتخاذ القرارات الصعبة، ولعلك تتساءل ما هو التفكير المنطقي؟ وما أهميته للمبرمج وهل فعلاً كلما كان لديك منطق أفضل ستتمكن من احتراف البرمجة بشكل أسرع؟ وهل التفكير المنطقي هو مَلَكة فطرية تولد مع الشخص أم أنه مهارة مكتسبة وقابلة للتعلم والتحسين؟ إذا كنت مهتمًا بمعرفة الإجابة على كل هذه التساؤلات تابع قراءة المقال إلى النهاية. سنتعرف في مقال اليوم على ماهية التفكير المنطقي وأهميته في مجال البرمجة وأهم الطرق والأدوات التي تساعدك على اكتساب مهارات التفكير المنطقي وتحسين طريقة تفكيرك وحل الخوارزميات المعقدة. ما هو التفكير المنطقي؟ التفكير المنطقي بشكل عام هو مهارة شخصية تكسب المرء القدرة على ضبط تفكيره وتحليل المواقف والمشكلات التي تواجهه وابتكار الحلول المناسبة بناءً على المعلومات والأدلة والحقائق المتوفرة لديه، وهو يتضمن كذلك القدرة على تقسيم المشكلات المعقدة إلى أجزاء أصغر وتقييمها بشكل منهجي للوصول إلى حل. وبما أن البرمجة ما هي إلا عملية التخاطب مع الحاسوب وتوجيهه لإيجاد حل لمشكلة ما والمبرمج هو حلال المشاكل كما يقال، فإن التفكير المنطقي للمبرمج يعزز قدرته على تحليل المشكلات واستنباط الحلول واتخاذ القرارات المناسبة وتطبيق المنطق على الكود الذي يكتبه لإنتاج برامج قادرة على معالجة وتحليل البيانات وإجراء العمليات الحسابية والمنطقية عليها بشكل صحيح. خصائص التفكير المنطقي قد تتساءل ما هي الخصائص التي يجب أن أتمتع بها كي أعتبر نفسي منطقيًا وهل لدي القدرة على التفكير بشكل منطقي من أجل حل أي مشكلة أو اتخاذ أي قرار؟ لأساعدك على الإجابة دعني أعدد لك خصائص التفكير المنطقي: العقلانية وعدم التحيز العاطفي والتأثر بالمشاعر عند اتخاذ قرار ما في أي موقف. على سبيل المثال يفكر الشخص العقلاني قبل شراء منتج ما بكل إيجابياته وسلبياته وهل سيلبي هذا المنتج متطلباته أم لا ثم يتخذ قرار الشراء من عدمه. التنظيم والتخطيط المسبق لكل شيء على سبيل المثال إذا كنت تنوي الذهاب في رحلة هل تفكر مليًا قبل ذلك في كل شيء يتعلق بتفاصيل رحلتك مثل زمان ومكان الرحلة وكيف ستقضي وقتك ومتى ستعود؟ إذا كان الجواب نعم فأنت في الغالب شخص منطقي. الانتباه ودقة الملاحظة لكل ما يحيط بك وأخذه بالاعتبار عند التفكير في حل مشكلة ما فمعظم الأخطاء تنجم عن عدم الوعي والانتباه للتفاصيل الدقيقة. الديناميكية وإيجاد حلول بديلة عند الضرورة. الفضول وحب الاستكشاف وتعلم أشياء جديدة وطرح العديد من الأسئلة لتوسيع أفق التفكير. الاعتراف بالخطأ وتصحيحه فهذا ينم عن نضج فكري لدى الشخص. الاعتماد على الحقائق والمعرفة وليس على الحدس والمعتقدات عند اتخاذ القرارات. بعد قراءة الخصائص الواردة أعلاه، هل تعتقد أنك تملك مهارة التفكير المنطقي أم لا؟ مراحل التفكير المنطقي كي تتمكن من التفكير منطقيًا وحل أي مشكلة تواجهك بطريقة منهجية يمكنك اتباع الخطوات التالية: فهم المشكلة جيدًا فإذا لم نفهم المشكلة تمامًا فلن تتوصل لأفضل حل ممكن لها أو ربما تستغرق الكثير من الوقت لتحلها. تقسيم المشكلة المعقدة وصعبة الحل إلى أجزاء صغيرة وبسيطة يسهل حلها. وضع خطة واضحة لحل كل جزء من المشكلة. البدء بتنفيذ الخطة التي وضعتها في الخطوة السابقة. العودة للخطوة الأولى. أهمية التفكير المنطقي للمبرمج لا شك أن أهمية التفكير المنطقي تبرز في كافة مجالات الحياة الشخصية والعملية، لكننا سنركز في هذه الفقرة على أهمية التفكير المنطقي في مجال البرمجة على وجه الخصوص فهو يعد أحد المهارات التي لا غنى عنها للمبرمجين والمطورين بصفة خاصة. فالبرمجة تحتاج منك للتخاطب مع الآلة، والآلة لا تفهم ولا تنفذ أوامر عامة بل تحتاج إلى تبسيط الأوامر إلى أبسط شكل، وتعد أي مهمة أو مخاطبة مع الآلة مشكلة يجب إيجاد أفضل حل وكتابة الحل الناتج بشكل برنامج، ومن هنا تأتي أهمية التفكير المنطقي في عملية البرمجة. لذا في حال رغبت بأن تصبح مبرمجًا ستكون أول نصيحة توجه لك هو تعلم مهارات التفكير المنطقي والخوارزميات لكونها خطوة أساسية تسبق مرحلة البرمجة وكتابة الأكواد، وبدون امتلاك مهارات التفكير المنطقي ستجد صعوبة كبيرة في حل المشكلات البرمجية المعقدة. وإليك جملة من فوائد التفكير المنطقي للمبرمج: يمنح القدرة على التفكير خارج الصندوق وابتكار حلول إبداعية للمشكلات البرمجية. ينشط الدماغ ويحفز الذاكرة ويساعد على ربط المعلومات ببعضها البعض. يساعد على تقسيم المشكلات إلى خطوات بسيطة ومتسلسلة منطقيًا. يعزز القدرة على تصور حل المشكلات البرمجية وصياغة طريقة الحل الأمثل قبل البدء في كتابة الكود البرمجي. يساعد على كتابة وفهم الخوارزميات وهي مجموعة من التعليمات التي تخبر الحاسوب بما يتوجب عليه القيام به لحل المشكلة بناء على معطيات دخل محددة. يسهل فهم منطق البرمجة وأكوادها واستخدام التعبيرات المنطقية والعبارات الشرطية. والجدير بالملاحظة أن المهارات التقنية ليست وحدها ما يبحث عنه أرباب العمل في المبرمجين والمطورين المرشحين للتوظيف بل تجدهم يحرصون على توافر مجموعة من المهارات والسمات الشخصية مثل التفكير المنطقي ومهارات حل المشكلات ومهارات التواصل الفعال وتنظيم الوقت وغيرها من السمات الأخرى التي يمكنك الاطلاع عليها في هذا الفيديو: التفكير المنطقي لحل المشكلات البرمجية يحتاج أي مبرمج لمهارة التفكير المنطقي لحل المشكلات البرمجية لأن حلها يتطلب طريقة معينة في التفكير ووضع خطوات الحل بطريقة مفضلة ومتسلسلة منطقيًا وقابلة للحل حاسوبيًا. على سبيل المثال إذا طلب منك حل مشكلة صنع شطيرة توست من الزبدة والمربى سيكون عليك أن تفكر بداية بالمواد المطلوبة لصنعها وهل هي متوفرة أم لا وهي الزبدة والمربى والخبز والسكين. بعد التأكد من توافر كل المعطيات اللازمة سيكون عليك التفكير بالخطوات التي تحتاجها لصنع الشطيرة. قد تخبرني أن الأمر بديهي ولا يحتاج لأي تفكير منطقي ضع الزبدة والمربى على الخبز وتناولها لكن انتبه هنا لأن هذا لن يساعدك في حل المشكلة وبناءً على ذلك قد تكون الخطوات المنطقية للعمل كالتالي: افتح كيس الخبز. خذ شريحة الخبز الموجودة في أعلى الكيس وضعها في طبق. افتح علبة الزبدة. اغمس السكين في علبة الزبدة. وزع الزيدة على شريحة الخبز. ضع السكين جانباً. خذ شريحة خبز ثانية من أعلى الكيس وضعها فوق الشريحة الأولى. افتح علبة المربى. اغمس السكين في علبة المربى وزع الزيدة على شريحة الخبز الثانية. ضع السكين جانباً. ضع شريحة الخبز الأولى فوق الثانية. الشطيرة جاهزة. قد يكون هناك أكثر من طريقة لحل المشكلة على سبيل المثال يمكن أن نختصر بعض الخطوات ونفكر في حل المشكلة كالتالي: افتح كيس الخبز وخذ شريحتين من خبز التوست. افتح علبة الزيدة. اغمس السكين في الزبدة. وزع الزبدة فوق شريحة الخبز الأولى. افتح علبة المربى. اغمس السكين في المربى. وزع المربى فوق شريحة الخبز الأولى. ضع الشريحة الأولى فوق الثانية. الشطيرة جاهزة. قد تفكر أيضًا أن الخطوات (افتح العلبة، اغمس السكين، وزع) تتكرر مرة من أجل الزبدة ومرة من أجل المربى فلم لا نحاول دمجها بوظيفة وليكن اسمها مثلًا وضع المادة المطلوبة. تسألك عن المادة التي تريدها وتطبق هذه الخطوات الثلاث دفعة واحدة في كل مرة تريد فيها تنفيذ هذه الخطوة. وقد تفكر في مناقشة بعض الافتراضات والحالات الخاصة التي قد تحدث خلال العمل وتجد حلولًا مناسبة لها كأن تناقش حالة عدم وجود المربى واستبداله بالعسل أو الشوكولا، فالخطوات المتبعة في الحل وطريقة التفكير والتنفيذ والمعالجة قد تختلف من شخص لآخر وهنا تبرز أهمية التفكير المنطقي فالجميع قد يحصل في النهاية على حل لكن بعض الحلول قد تكون أفضل من غيرها وأكثر كفاءة واختصارًا. قس على هذا أي مشكلة معقدة تحاول حلها من خلال الحاسوب. في ختام هذه الفقرة أدعوك لمشاهدة هذا الفيديو اللطيف والشيق لأب يعلم أطفاله كيف يكتبون بدقة التعليمات اللازمة لطريقة صنع شطيرة زبدة الفول السوداني مع المربى، عندما تتعامل مع الحاسوب تعامل معه كأنه ذلك الأب وأخبره بالتعليمات المطلوبة لحل مشكلتك بدقة متناهية. اكتساب التفكير المنطقي في البرمجة بعد أن تعرفت على أهمية التفكير المنطقي في تحسين البرمجة أعتقد أنك تتساءل الآن هل التفكير المنطقي هو موهبة فطرية تولد مع المبرمج وتمكنه من التوصل إلى حلول منطقية مناسبة لحل مشكلات الكود بسهولة وسلاسة، أم أنه مهارة مكتسبة يمكن تنميتها من خلال أدوات وممارسات معينة؟ لحسن الحظ رغم أن التفكير المنطقي هو ملَكَة فطرية يتميز بها البعض ويساعدهم وجودها على تعلم لغات البرمجة أسرع من غيرهم لكنه في نفس الوقت مهارة قابلة للاكتساب والتحسين والتطوير من خلال العديد من الطرق والتقنيات. إليك أهم الطرق والأدوات التي تساعدك على تحسين التفكير المنطقي في البرمجة: حلّ الألغاز والألعاب المنطقية. استخدم الورقة والقلم لوصف أي مشكلة تواجهك. تعلّم الخوارزميات. قسّم المشكلات المعقدة لأجزاء أصغر. تمكّن من أساسيات البرمجة. شارك في المسابقات والتحديات البرمجية. ادرس الشيفرات البرمجية للآخرين. تعلّم نماذج البرمجة وأنماط التصميم. دعنا نناقش كل طريقة من هذه الطرق ونتعرف على أهميتها في تنمية منطقك البرمجي حلّ الألغاز والألعاب المنطقية فحل الألغاز المنطقية وألعاب الذكاء مثل الشطرنج وألغاز الكلمات المتقاطعة وسودودكو و tic-tac-toe أو غيرها من الألغاز الرياضية والألعاب المنطقية وألغاز الذكاء IQ أمر ممتع ومفيد جدًا في تشيط عقلك وتحسين تفكيرك المنطقي وبالتالي تحسين قدراتك البرمجية. فمهارة حل الأحاجي أمر يبحث عنه معظم أرباب العمل لمعرفة مدى قوة تفكيرك وسرعة بديهتك فلا تستغرب حين تطرح عليك في مقابلات العمل مع شركات البرمجيات ألغاز من قبيل الأحجية التالية: كم عدد العملات التي تمتلكها إذا كانت جملة واحدة فقط من الجمل الثلاث التالية صحيحة: لديك عملة واحدة على الأقل. لديك خمس عملات على الأقل. عدد العملات الموجود معك أقل من خمسة. خذ وقتك في التفكير بحل هذه المسألة ويمكن أن تشاركني في التعليقات الجواب الذي توصلت إليه وكيف توصلت إليه. كما يمكن أن تتدرب على الكثير من المسائل والأحاجي المنطقية، ابحث عن ألغاز مثل لغز المئة سجين 100 prisoners problem أو لغز الجمل والموز camel and banana puzzle أو غيرها من الألغاز المشهورة التي تخص مجال البرمجة وعلوم الحاسب فهي متوفرة بكثرة على مواقع الإنترنت ومتاجر التطبيقات. استخدم الورقة والقلم لوصف أي مشكلة تواجهك استخدم الورقة والقلم عند التفكير واكتب كافة المعطيات المتاحة بين يديك كي لا تنسى أحدها فنحن البشر نتذكر الأشياء التي نكتبها بكفاءة أكثر، بعدها ناقش كافة الخيارات التي تخطر ببالك للحل وحاول أن تستنتج الحل الأمثل والأدق لها. ويمكنك أن ترسم مخططات توجيهية توضح لك الأمور بشكل أفضل لاسيما إذا كنت شخصًا بصريًا حينها ستساعدك المخططات والرسوم التوضيحية والمربعات والدوائر والأسهم على تصور المشكلة وفهمها بشكل أفضل وكتابة كود مناسب لحلها لاحقًا. تعلّم الخوارزميات فتعلم الخوارزميات وهياكل البيانات من شأنه أن يعزز التفكير المنطقي التحليلي والتفكير الخوارزمي الذي يغير طريقة تفكيرك في حل المشكلات ويعلمك منهجية التفكير بطريقة تشبه الطريقة التي يعمل بها الحاسوب كما أنه يساعدك لاحقًا في تعلم لغات البرمجة. يمكن أن تبدأ بالخوارزميات الأساسية مثل خوارزميات الفرز والترتيب sorting algorithms وخوازميات البحث search algorithms وخوارزميات فرق تسد divide and conquer وتفهم آلية عملها ثم تتدرج في تعلم خوارزميات أكثر تعقيدًا، كما أن فهم هياكل البيانات مثل القائمة المترابطة linked lists والمكدس stack والشجرة الثنائية binary trees واستخدامها أثناء تنفيذ الخوارزميات يسرع كثيرًا من قدرتك على حل المشكلات المعقدة. قسّم المشكلات المعقدة لأجزاء أصغر عندما تعجز عن حل مشكلة ما لماذا لا تجرب أن تحللها وتقسّمها إلى مشكلات أصغر يسهل التعامل معها، ابدأ بحل كل مشكلة منها وكافئ نفسك على تحقيق كل هدف صغير ثم اجمع كل الأجزاء لتتكامل مع بعضها البعض وتحل المشكلة الأساسية. على سبيل المثال إذا طلب منك إبجاد طريقة أو خوارزمية للبحث عن رقم ما في سلسلة من الأرقام يمكنك تقسيم المشكلة إلى مشاكل أصغر تحلها كالتالي: معرفة من أين أبدأ البحث (من بداية السلسلة أم نهايتها أم من الوسط). معرفة متى وكيف يتم إيقاف عملية البحث. تحديد كيفية مقارنة عنصرين من عناصر السلسلة لتحديد أيهما يأتي قبل العنصر الآخر. تحديد كيفية متابعة البحث عند عدم العثور على الرقم المطلوب. تمكّن من أساسيات البرمجة تأكد من الفهم الجيد لأساسيات البرمجة مثل المتغيرات وأنواع البيانات والتعليمات الشرطية والحلقات التكرارية والدوال وهياكل البيانات بالتوازي مع تطوير تفكيرك المنطقي فالبرمجة والمنطق يعززان بعضهما البعض فمن جهة يساعدك التفكير المنطقي على فهم تعليمات البرمجة ومن جهة أخرى تساعدك كتابة الأكواد البرمجية على تحسين منطقك والتفكير بالطريقة التي يفهمها الحاسوب. وتذكر أنك بدون إتقان المفاهيم الأساسية والتطبيق العملي لها من خلال حل العديد من أسئلة البرمجة وحل مشكلات رياضية بسيطة من البداية إلى النهاية بشكل منتظم فإنك لن تتمكن من تطوير تفكيرك وتعلم المفاهيم المتقدمة لاحقًا وعندما تكون عالقًا في مشكلة معينة لا مشكلة في البحث عن حلول لها على الإنترنت وفهم منطق عملها فهذا يحسن مهاراتك أيضًا. شارك في المسابقات والتحديات البرمجية شارك في المسابقات والتحديات البرمجية فهي تركز على تحديات منهجية ومتسلسلة في الصعوبة وغالبًا ما تكون مقيدة بوقت محدد لذا يساعدك حلها على تحسين وتسريع تفكيرك المنطقي. حتى لو لم تحقق نتائج عالية في هذه المسابقات ستكون التجربة مفيدة لك كما أن مناقشة حلول المشاركين الآخرين تفيدك في توسيع أفق تفكيرك. ادرس الشيفرات البرمجية للآخرين فكما ذكرنا سابقًا قد توجد أكثر من طريقة لحل مشكلة معينة لهذا قد يتبع كل مبرمج طريقة خاصة به لحل المشكلة والتعرف على وجهات نظر مختلفة يفيدك بكل تأكيد ويطور منطقك البرمجي، ستجد الكثير من الأكواد لمبرمجين خبراء في المجتمعات البرمجية ومستودعات المشاريع مفتوحة المصدر مثل GitHub. تعلم نماذج البرمجة وأنماط التصميم إن تعلم نماذج البرمجة مثل البرمجة كائنية التوجه OOP والبرمجة الوظيفية functional programming وأنماط التصميم البرمجي design patterns التي توفر حلول ونماذج للمشكلات البرمجية الشائعة فهي تساعدك في بناء حلول منطقية أكثر وضوحًا وتنظيمًا وأقل أخطاءً وتحسن مهاراتك البرمجية. عادة ما تدرس مادة الخوارزميات وحل المشكلات بما يتعلق بالتفكير المنطقي في بداية أي مسار يُعلم البرمجة تعليمًا صحيحًا، سواءً في الجامعات أو مسارات البرمجة الخاصة، فمثلًا في دورة علوم الحاسوب في أكاديمية حسوب ستتعرف على أهم الخوارزميات وطريقة كتابتها وتحليلها، وتتعرف على أهم بنى المعطيات وتتعلم أساسيات البرمجة وأنماط التصميم وتكتب الكثير من البرامج العملية التي تعزز تفكيرك المنطقي وتحسّن مستواك البرمجي بشكل كبير. نصائح إضافية لتحسين التفكير المنطقي إضافةً للطرق التي ذكرناها سابقًا، إليك قائمة من النصائح السريعة التي من شأنها كذلك أن تحسن مهاراتك وتفكيرك المنطقي وتعزز فهمك للبرمجة: احرص على القراءة فهي تغذي الدماغ وتعزز تفكيرك في الأمور. لا تكن عاطفيًا أو متحيزًا لوجهة نظرك وحاول أن تتفهم آراء الآخرين. اهتم بكل التفاصيل وحلل معنى الكلمات والجمل وافهم مدلولاتها الدقيقة. تعلم لغة جديدة فهذا من شأنه أن يقوي دماغك ويحفزه. مارس نشاطًا إبداعيًا تحبه كالرسم والكتابة. كن فضوليًا واطرح تساؤلات عن مواضيع تثير اهتمامك واستكشف إجاباتها فهذا يوسع أفق تفكيرك المنطقي. حل مشاكل جديدة كل يوم أو جرب طرقًا مختلفة لحل نفس المشكلة. طور علاقات هادفة مع أشخاص آخرين وتناقش معهم حول آراء مختلفة ووسع وجهة نظرك للأمور. تعلم التفكير النقدي من خلال تحليل الحقائق والأدلة بطريقة منطقية لفهم مشكلة أو موضوع ما بدقة. حافظ على هدوءك وتركيزك عند حل مشكلة ما، فالتوتر والاستعجال أكبر عدو للتفكير السليم. كن صبورًا ولا تستسلم بسرعة وضع أهدافًا واقعية لتحسين التفكير المنطقي وابذل جهدك لتحقيقها فتغيير السلوك أمر يستغرق وقتًا. الخلاصة تعرفنا في مقال اليوم على مفهوم التفكير المنطقي الذي يعد أحد المهارات الضرورية لأي مبرمج أو مطور برمجيات، والتي تمكنه من التعامل بكفاءة مع حل المشكلات البرمجية وجمع كل المعطيات الممكنة حولها وتحليلها وفهمها ووضع الحلول المناسبة لها أيًا كانت لغة البرمجة التي يستخدمها، وتعرفنا على مجموعة من الطرق والنصائح التي تساعد المبرمجين على تحسين تفكيرهم المنطقي وبرمجة التطبيقات بكفاءة ومرونة. وتذكر في الختام أن تركيزك على تعلم لغات البرمجة والأمور التقنية على أهميته لا يكفي لجعلك مبرمجًا جيدًا، لذا لا تهمل مهاراتك الناعمة ومن أهمها مهارات التفكير المنطقي والتواصل الفعال فهي سبيلك للتميز والحصول على فرصة العمل التي تطمح لها. اقرأ أيضًا مدخل إلى الخوارزميات المرجع الشامل إلى تعلم الخوارزميات كيف تتعلم البرمجة: نصائح وأدوات لرحلتك في عالم البرمجة برمجة الحاسوب للمبتدئين هل أنا حقا مبرمج؟ متى أسمي نفسي مبرمجًا لماذا يجب أن تعلم طفلك البرمجة؟1 نقطة