[{"data":1,"prerenderedAt":559},["ShallowReactive",2],{"article-\u002Farticles\u002F65c3418591a5eed01d707835":3},{"id":4,"title":5,"articleId":6,"body":7,"cover":543,"coverThumb":543,"created":544,"date":545,"description":546,"extension":547,"meta":548,"navigation":549,"path":550,"seo":551,"stem":552,"tags":553,"updated":557,"__hash__":558},"articles\u002Farticles\u002F65c3418591a5eed01d707835.md","مفاهيم برمجية بأسلوب مُبسَّط للمُبتدئين","65c3418591a5eed01d707835",{"type":8,"value":9,"toc":536},"minimark",[10,14,17,20,23,26,29,34,41,44,89,106,110,115,118,154,161,170,174,179,182,185,273,296,300,305,308,311,395,410,414,419,422,425,499,508,514,517,520,529,532],[11,12,13],"p",{},"الحمد لله الذي علَّم بالقلم، علَّم الإنسان ما لم يعلم، والصلاة والسلام على خير معلِّم الناس الخير سيدنا محمد - صلَّى الله عليه وسلم … أما بعد ،،",[11,15,16],{},"عندما قررت أن أتعلم البرمجة واجهتني مشكلتين، الأولى أنى كنت أكره الأرقام والمعادلات الحسابية ولم أكن أفهمها وكان اعتقادي أن البرمجة قائمة على هذه المبادئ، ولعل هذا هو السبب أنى اتجهت في البداية لمجال التصميم وليس البرمجة.",[11,18,19],{},"المشكلة الثانية أنى لم أستطع فهم البرمجة لأن طريقة الشرح نفسها كانت تقدم المفاهيم بطريقة منعزلة عن التطبيق العملى لهذه المفاهيم، كأن يُعطى المعلم للطالب معادلة إحصائية لحساب قيمة ما دون أن يعرف الطالب التطبيقات العملية لهذه المعادلة الإحصائية، فتتحول العملية التعليمية إلى حفظ وتلقين وليس فهم واستيعاب حقيقى.",[11,21,22],{},"فى البداية يجب التوضيح أن البرمجة ليست مبنية على الأرقام والمعادلات - كما كنت أعتقد، صحيح أن جزء كبير منها يعتمد على الرياضيات والحسابات لكن الجزء الأهم هو (المنطق وطريقة التفكير)، فالأمر أشبه بإعادة ترتيب عناصر المشكلة بشكل منظم مع تقديم أبسط وأدق الحلول، لأن البرمجة ما هي إلا طريقة تفكير قائم على الفهم الصحيح للمتغيرات.",[11,24,25],{},"بالتالى أي شخص لديه عقل سليم ومنهجية صائبة في التفكير يمكنه في الغالب أن يتعلم البرمجة بكل سهولة، ولا يتبقى إلا فهم قواعد اللغة البرمجية المستخدمة، ثم تطويع هذه القواعد بحيث تخدم الهدف المطلوب من حل المشكلات أو تنفيذ المهام المطلوبة.",[11,27,28],{},"فيما يلي سنتناول مجموعة مفاهيم في لغة \"جافا سكريبت\" مع شرحها بشكل مبسط وتوضيح أمثلة لتطبيقات عملية لها.",[30,31,33],"h2",{"id":32},"المتغيرات-variables","المتغيرات (Variables)",[11,35,36],{},[37,38],"img",{"alt":39,"src":40},"","\u002Fimages\u002F65c3427b91a5eed01d707855.jpg",[11,42,43],{},"يمكنك أن تتخيل المتغير على أنه مجرد صندوق عليه ملصق - مكتوب عليه اسم لهذا الصندوق - ثم تم حفظه في ذاكرة الحاسب الآلي، وبداخل هذا الصندوق يمكنك أن تحفظ أى معلومة، ثم إذا احتجت هذه المعلومة يكفى أن تذكر اسم الصندوق ليقوم الحاسب باسترجاع الصندوق الذي تريده.",[45,46,50],"pre",{"className":47,"code":48,"language":49,"meta":39,"style":39},"language-javascript shiki shiki-themes github-dark","var name = ‘Ahmed’;\nconsole.log(name); \u002F\u002F 'Ahmed'\n","javascript",[51,52,53,72],"code",{"__ignoreMap":39},[54,55,58,62,66,69],"span",{"class":56,"line":57},"line",1,[54,59,61],{"class":60},"snl16","var",[54,63,65],{"class":64},"s95oV"," name ",[54,67,68],{"class":60},"=",[54,70,71],{"class":64}," ‘Ahmed’;\n",[54,73,75,78,82,85],{"class":56,"line":74},2,[54,76,77],{"class":64},"console.",[54,79,81],{"class":80},"svObZ","log",[54,83,84],{"class":64},"(name); ",[54,86,88],{"class":87},"sAwPA","\u002F\u002F 'Ahmed'\n",[11,90,91,92,95,96,99,100,102,103,105],{},"في الكود السابق أخبرنا الحاسب أن يقوم بعمل صندوق اسمه ",[51,93,94],{},"name"," وبداخله معلومة قيمتها تساوي ",[51,97,98],{},"Ahmed","، ولاحقا إذا ذكرنا اسم المتغير ",[51,101,94],{}," سيفهم الحاسب تلقائيا أننا نقصد القيمة ",[51,104,98],{},".",[30,107,109],{"id":108},"المصفوفات-arrays","المصفوفات (Arrays)",[11,111,112],{},[37,113],{"alt":39,"src":114},"\u002Fimages\u002F65c3434891a5eed01d707864.jpg",[11,116,117],{},"يمكنك أن تفكر في المصفوفة على أنها دولاب كبير يحتوى على مجموعة من الصناديق المتصلة ببعضها وفق ترتيب محدد، يمكنك أن تضع في كل صندوق المعلومة التي تريدها، وبناء على ترتيب الصناديق يمكنك بسهولة أن تخبر الحاسب عن الصندوق الذي تقصده.",[45,119,121],{"className":47,"code":120,"language":49,"meta":39,"style":39},"var users = [‘Ahmed’, ‘Ali’, ‘Mostafa’];\nconsole.log(users[0]); \u002F\u002F Ahmed\n",[51,122,123,135],{"__ignoreMap":39},[54,124,125,127,130,132],{"class":56,"line":57},[54,126,61],{"class":60},[54,128,129],{"class":64}," users ",[54,131,68],{"class":60},[54,133,134],{"class":64}," [‘Ahmed’, ‘Ali’, ‘Mostafa’];\n",[54,136,137,139,141,144,148,151],{"class":56,"line":74},[54,138,77],{"class":64},[54,140,81],{"class":80},[54,142,143],{"class":64},"(users[",[54,145,147],{"class":146},"sDLfK","0",[54,149,150],{"class":64},"]); ",[54,152,153],{"class":87},"\u002F\u002F Ahmed\n",[11,155,156,157,160],{},"في الأمر السابق طلبنا من الحاسب عمل دولاب اسمه ",[51,158,159],{},"users","، وبداخله قمنا بوضع ثلاثة صناديق كل منها يحتوى على اسم مستخدم من المستخدمين.",[11,162,163,164,167,168,105],{},"لاحظ هنا أن ترتيب أول عنصر في المصفوفة هو (صفر) وليس (واحد)، بالتالى عندما نطلب من الحاسب إحضار الصندوق الذي ترتيبه ",[51,165,166],{},"users[0]"," سيفهم تلقائيا أننا نريد المعلومة ",[51,169,98],{},[30,171,173],{"id":172},"الحلقات-التكرارية-loops","الحلقات التكرارية (loops)",[11,175,176],{},[37,177],{"alt":39,"src":178},"\u002Fimages\u002F65c343ea91a5eed01d70786a.png",[11,180,181],{},"الفكرة في الحلقات التكرارية أنك تطلب من الحاسب تنفيذ مهمة ما إلى أن يتحقق شرط معين وقتها يتوقف عن تنفيذ هذا الأمر بمجرد تحقق الشرط، أو بعبارة أخرى تخيل معي أن أحد الأشخاص يقوم بالجري في مضمار السباق حول الملعب بشكل دائري، وبجانب المضمار توجد لوحة رقمية تقوم بحساب عدد الدورات التي يقوم بها هذا الشخص.",[11,183,184],{},"إذا أخبرت هذا الشخص أن يقوم بالدوران حول الملعب 3 دورات، بالتالى بمجرد أن تظهر على اللوحة رقم (3) سيتوقف عن الجرى.",[45,186,188],{"className":47,"code":187,"language":49,"meta":39,"style":39},"var users = [‘Ahmed’, ‘Ali’, ‘Mostafa’];\nfor (var index = 0; index \u003C users.length; index++) {\n  console.log(users[index]);\n}\n\u002F\u002F Ahmed\n\u002F\u002F Ali\n\u002F\u002F Mostafa\n",[51,189,190,200,239,250,256,261,267],{"__ignoreMap":39},[54,191,192,194,196,198],{"class":56,"line":57},[54,193,61],{"class":60},[54,195,129],{"class":64},[54,197,68],{"class":60},[54,199,134],{"class":64},[54,201,202,205,208,210,213,215,218,221,224,227,230,233,236],{"class":56,"line":74},[54,203,204],{"class":60},"for",[54,206,207],{"class":64}," (",[54,209,61],{"class":60},[54,211,212],{"class":64}," index ",[54,214,68],{"class":60},[54,216,217],{"class":146}," 0",[54,219,220],{"class":64},"; index ",[54,222,223],{"class":60},"\u003C",[54,225,226],{"class":64}," users.",[54,228,229],{"class":146},"length",[54,231,232],{"class":64},"; index",[54,234,235],{"class":60},"++",[54,237,238],{"class":64},") {\n",[54,240,242,245,247],{"class":56,"line":241},3,[54,243,244],{"class":64},"  console.",[54,246,81],{"class":80},[54,248,249],{"class":64},"(users[index]);\n",[54,251,253],{"class":56,"line":252},4,[54,254,255],{"class":64},"}\n",[54,257,259],{"class":56,"line":258},5,[54,260,153],{"class":87},[54,262,264],{"class":56,"line":263},6,[54,265,266],{"class":87},"\u002F\u002F Ali\n",[54,268,270],{"class":56,"line":269},7,[54,271,272],{"class":87},"\u002F\u002F Mostafa\n",[11,274,275,276,278,279,282,283,285,286,289,290,292,293,105],{},"في الكود السابق أخبرنا الحاسب أن يقوم بعمل مصفوفة اسمها ",[51,277,159],{}," وبداخلها قمنا بحفظ أسماء المستخدمين، ثم عرفنا متغير اسمه ",[51,280,281],{},"index"," قيمته تبدأ بالرقم ",[51,284,147],{},"، وتزداد قيمة هذا الرقم في حلقة تكرارية ",[51,287,288],{},"++index"," مع استمرار تنفيذ الأمر المطلوب طالما أن قيمة ",[51,291,281],{}," أقل من عدد عناصر المصفوفة ",[51,294,295],{},"users.length",[30,297,299],{"id":298},"الحالات-الشرطية-if-conditions","الحالات الشرطية (if … conditions)",[11,301,302],{},[37,303],{"alt":39,"src":304},"\u002Fimages\u002F65c344e091a5eed01d707874.jpg",[11,306,307],{},"في \"جافا سكريبت\" تستخدم \"الحالات الشرطية\" عندما نريد من الحاسب تطبيق أمر أو أكثر إذا تحقق شرط معين.",[11,309,310],{},"مثلا عندما يقوم المستخدم بتسجيل دخوله في الموقع، إن قام بإدخال كلمة مرور صحيحة في هذه الحالة يتم يمكنه الدخول لحسابه بنجاح، أما لو لم يتحقق الشرط يمكن مثلا أن تظهر له رسالة خطأ أن كلمة المرور غير صحيحة.",[45,312,314],{"className":47,"code":313,"language":49,"meta":39,"style":39},"var score = 8;\nif (score >= 5) {\n  console.log(\"Success\");\n} else {\n  console.log(\"Fail\");\n}; \u002F\u002F Success\n",[51,315,316,331,347,363,374,387],{"__ignoreMap":39},[54,317,318,320,323,325,328],{"class":56,"line":57},[54,319,61],{"class":60},[54,321,322],{"class":64}," score ",[54,324,68],{"class":60},[54,326,327],{"class":146}," 8",[54,329,330],{"class":64},";\n",[54,332,333,336,339,342,345],{"class":56,"line":74},[54,334,335],{"class":60},"if",[54,337,338],{"class":64}," (score ",[54,340,341],{"class":60},">=",[54,343,344],{"class":146}," 5",[54,346,238],{"class":64},[54,348,349,351,353,356,360],{"class":56,"line":241},[54,350,244],{"class":64},[54,352,81],{"class":80},[54,354,355],{"class":64},"(",[54,357,359],{"class":358},"sU2Wk","\"Success\"",[54,361,362],{"class":64},");\n",[54,364,365,368,371],{"class":56,"line":252},[54,366,367],{"class":64},"} ",[54,369,370],{"class":60},"else",[54,372,373],{"class":64}," {\n",[54,375,376,378,380,382,385],{"class":56,"line":258},[54,377,244],{"class":64},[54,379,81],{"class":80},[54,381,355],{"class":64},[54,383,384],{"class":358},"\"Fail\"",[54,386,362],{"class":64},[54,388,389,392],{"class":56,"line":263},[54,390,391],{"class":64},"}; ",[54,393,394],{"class":87},"\u002F\u002F Success\n",[11,396,397,398,401,402,405,406,409],{},"في المثال السابق إن افترضنا أن أحد الطلاب قد حصل على درجة في الامتحان ",[51,399,400],{},"8"," من ",[51,403,404],{},"10","، بناء ذلك يقوم الحاسب بالتحقق من الشرط إن كانت الدرجة أكبر من أو تساوى 5 يعتبر الطالب ناجحا أما لو لم يتحقق الشرط ",[51,407,408],{},"score >= 5"," يعتبر الطالب راسبا.",[30,411,413],{"id":412},"المهام-أو-الدوال-functions","المهام أو الدوال (Functions)",[11,415,416],{},[37,417],{"alt":39,"src":418},"\u002Fimages\u002F65c3457191a5eed01d70787d.jpg",[11,420,421],{},"في \"جافا سكريبت\" تساعدك \"الدالة\" فى تنفيذ وظيفة محددة أو مجموعة أكواد برمجية، بحيث تنادى فقط على اسم الدالة فيتم تنفيذ هذه الأكواد بدون الحاجة لكتابتها من جديد في كل مرة تحتاج تنفيذها.",[11,423,424],{},"وهو ما يساعدك على عدم تكرار كتابة نفس الكود البرمجي في كل مرة تحتاجه، كما يساعد على جعل الكود البرمجى أكثر تنظيما ووضوحا.",[45,426,428],{"className":47,"code":427,"language":49,"meta":39,"style":39},"\u002F\u002F Example function\nfunction greet(name) {\n  console.log(\"Hello, \" + name + \"!\");\n}\n\u002F\u002F Using the function\ngreet(\"Ahmed\"); \u002F\u002F Hello Ahmed !\n",[51,429,430,435,450,474,478,483],{"__ignoreMap":39},[54,431,432],{"class":56,"line":57},[54,433,434],{"class":87},"\u002F\u002F Example function\n",[54,436,437,440,443,445,448],{"class":56,"line":74},[54,438,439],{"class":60},"function",[54,441,442],{"class":80}," greet",[54,444,355],{"class":64},[54,446,94],{"class":447},"s9osk",[54,449,238],{"class":64},[54,451,452,454,456,458,461,464,466,469,472],{"class":56,"line":241},[54,453,244],{"class":64},[54,455,81],{"class":80},[54,457,355],{"class":64},[54,459,460],{"class":358},"\"Hello, \"",[54,462,463],{"class":60}," +",[54,465,65],{"class":64},[54,467,468],{"class":60},"+",[54,470,471],{"class":358}," \"!\"",[54,473,362],{"class":64},[54,475,476],{"class":56,"line":252},[54,477,255],{"class":64},[54,479,480],{"class":56,"line":258},[54,481,482],{"class":87},"\u002F\u002F Using the function\n",[54,484,485,488,490,493,496],{"class":56,"line":263},[54,486,487],{"class":80},"greet",[54,489,355],{"class":64},[54,491,492],{"class":358},"\"Ahmed\"",[54,494,495],{"class":64},"); ",[54,497,498],{"class":87},"\u002F\u002F Hello Ahmed !\n",[11,500,501,502,504,505,507],{},"في المثال السابق قمنا بتعريف دالة اسمها ترحيب ",[51,503,487],{},"، وبداخل الأقواس يوجد مُعامل أو وسيط (Parameter) اسمه ",[51,506,94],{}," نقوم بتمريره إلى داخل الدالة.",[11,509,510,511,513],{},"وبالتالي عند استدعاء هذه الدالة وتمرير اسم المستخدم ",[51,512,98],{},"، يفترض أن يقوم الحاسب بطباعة الجملة كاملة وبداخلها اسم الشخص الذي تم تمريره.",[11,515,516],{},"والميزة هنا أنك تستطيع استخدام نفس الدالة مع تغيير اسم المستخدم في كل مرة، فيقوم الحاسب بتنفيذ نفس الأوامر دون الحاجة لكتابتها من جديد.",[11,518,519],{},"تذكر أن الدوال في \"جافا سكريبت\" أداة قوية جدا يمكنك استخدامها في تنظيم الكود البرمجي، بحيث يكون أكثر بساطة وأسهل في القراءة.",[11,521,522,523,528],{},"في نهاية المقال أحب أن أنوه أن هذه الأمثلة بدائية جدا وتم تبسيطها لدرجة كبيرة بهدف الفهم، لكنها في ذات الوقت غير كافية لتوضيح الصورة بشكل كامل، لذا إن أردت مزيد من الفهم والدراسة أنصحك بالبحث على جوجل أو يوتيوب، ويمكنك أن تقرأ مقالي السابق (",[524,525,527],"a",{"href":526},"\u002Farticles\u002F65b7b7821d50740dab371d48\u002F","ما أنسب دورة تدريبية تبدأ بها تعلم البرمجة؟",").",[11,530,531],{},"ختاما، أرجو أن يحوز المقال على إعجابك، ولا تحرمنى من ملاحظاتك وتعليقاتك البناءة على المقال، وفقنى الله وإياك إلى كل خير ،،",[533,534,535],"style",{},"html pre.shiki code .snl16, html code.shiki .snl16{--shiki-default:#F97583}html pre.shiki code .s95oV, html code.shiki .s95oV{--shiki-default:#E1E4E8}html pre.shiki code .svObZ, html code.shiki .svObZ{--shiki-default:#B392F0}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}html pre.shiki code .s9osk, html code.shiki .s9osk{--shiki-default:#FFAB70}",{"title":39,"searchDepth":74,"depth":241,"links":537},[538,539,540,541,542],{"id":32,"depth":74,"text":33},{"id":108,"depth":74,"text":109},{"id":172,"depth":74,"text":173},{"id":298,"depth":74,"text":299},{"id":412,"depth":74,"text":413},"\u002Fimages\u002F65c341ab91a5eed01d707840.jpg","2024-02-07T08:38:29.709Z","2024-02-07T09:02:40.440Z","شرح وتبسيط لبعض المفاهيم البرمجية بشكل تعريفي لمن يريد تعلم البرمجة.","md",{},true,"\u002Farticles\u002F65c3418591a5eed01d707835",{"title":5,"description":546},"articles\u002F65c3418591a5eed01d707835",[554],{"id":555,"label":556},"6593a0f940b5c90e5410e0a3","البرمجة","2024-05-08T07:31:21.700Z","SarNaVgIts8SQYuwPBd8_QdlsLCPKZemg7iJehRck8k",1788209571270]