كيف تصبح مبرمجا لغير المبرمجين

منذ يومين و عندما قمت بمراسلة كل من قام بالتسجيل بدورة بناء التطبيقات لأجهزة أيفون قمت بالاعتذار ممن لا يعلم أساسيات البرمجة أو بشكل أصح ممن لم يقم بتعلمها سابقا أو قد برمج سابقا , بناء على ذلك راسلني أحد ممن اعتذرت منهم مبديا رغبته في تعلم أساسيات البرمجة لكي يستطيع الالتحاق بهذه الدورة و قد قمت بإجابته على عجل ,و عليه فإني سوف أطرح بهذه المقالة بشكل مفصل أكثر أهم الأساسيات التي على المبرمج أن يعرفها و يتعامل معها و ذلك تمهيدا للتفكير بمنطق الحاسوب و كيفية بناء التطبيقات

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

في الصورة المقتبسة من موسوعة ويكيبيديا:

” خريطة انسيابية تمثل خوارزم إقليدس لحساب القاسم الأعظمي المشترك (g.c.d.) بين عددين a وb في موضعين يدعيان A وB. يتم الخوارزم عبر سلسلة من عمليات الطرح المتتالية في حلقتين: إذا كان الفحص B ≤ A ينتج عنه “نعم” (أو قضية صائبة) فإن العدد b في الموضع B أقل من أو يساوي العدد a في الموضع A)ثم يعين الخوارزم B ← B – A (بمعنى أن العدد b – a يبدل القيمة السابقة b). بالمثل، إذا كان A > B فإن A ← A – B.حينما تصبح (محتويات) B مساوية لـ 0، وينجم عن ذلك قاسم مشترك أكبر في A.”

بعد التعلم على الخوارزميات يأتي دور تعلم أي لغة برمجة لترجمة أو تطبيق الأشكال الخوارزمية إلى كود برمجي ليقوم بعمل نفس الوظيفة و هناك بعض الأساسيات التي تشترك بها لغات البرمجة لتأدية نفس الوظيفة ولكن لربما بشكل مختلف من ناحية التنسيق أو ما يسمى تركيب اللغة (Syntax)

في البداية دعنا نتعرف على أهم هذه الأساسيات و التي تشترك بمعظم لغات البرمجة و في حال إتقانها بأي لغة برمجة تقريبا من اللغات القوية فأنت ستكون مستعد لتعلم أي لغة برمجة جديدة فما عليك سوى معرفة طريقة هيكلية اللغة الجديدة

  • تركيب بناء اللغة  (Syntax)
  • طريقة حجز و التعامل مع المتغيرات (Variables)
  • طريقة بناء المعاملات / المقارنة (Operators)
  • الجمل الشرطية  (If…Else)
  • جمل الحالات (Switch)
  • جمل التكرار و الدورات الشرطية  (While Loops)
  • جمل التكرار (For Loops)
  • طريقة بناء و مناداة الدوال  (Functions)
  • التعامل مع المحارف و النصوص (String)
  • التعامل وبناء المصفوفات (Array)
  • التعامل مع التاريخ (Date & Calendar)
  • الوصول و استدعاء وظائف النظام  (System Reference)
  • التعامل مع الاخطاء  (Error & Exception)
  • التعامل مع الملفات و المجلدات في النظام  (Filesystem & Directory)
  • التعامل مع قواعد البيانات و جمل الاستعلام (Database SQL)
  • عناصر التحكم و واجهة المستخدم User Interface

 

تركيب بناء اللغة  Syntax

بناء تراكيب أغلب اللغات متشابه و خصوصا تلك التي تعتبر من اللغات المشهورة و القوية مثلا (C/C++) أو (Java) أو (C#) أو على مستوى الويب (PHP) أما اللغات الأخرى الأقل بساطة كحال (Visual Basic) أو على مستوى الويب (ASP) فإنها أيضا شبيهة إلى حد ما ولكن الانتقال منها إلى الاخرى قد يكون أصعب بعض الشيء لأنها أسهل أم العكس صحيح

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

طريقة حجز و التعامل مع المتغيرات  Variables

المتغيرات يمكن اعتبارها كمستودعات صغيرة – مناطق في الذاكرة – يتم حجزها لإسناد قيم إليها و التعامل معها و يجب معرفة أنواع المتغيرات المختلفة فهناك نصية و أخرى رقمية و متغيرات خاصة بالتواريخ و أخرى بالمحارف و للتعاملات المنطقية و لكل منها استخدامها و طريقة للتعامل فيما بينها

طريقة بناء المعاملات / المقارنة  Operators

المقارنات هي المفهوم البسيط مثل (>= <) أي (أكبر من أو يساوي أو أصغر من أو لا تساوي) حيث أنها تستخدم لمعرفة قيم المتغيرات أو القيم من العناصر الأخرى و تختلف باختلاف اللغات مثلا في (Visual Basic) في حال أردنا تطبيق مقارنة لا تساوي فإننا نستخدم (<>) أما في (Java) فإننا نستخدم (!=) و كذلك الحال هناك معاملات مثل (And)  و (OR) و التي تعني (و) و (أو)

الجمل الشرطية If…Else

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

if (Mohammed > Ali) { kill Ali 1st; }

جمل الحالات  Switch

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

هل محمد أصغر من 13

إذا محمد طفل

هل محمد أصغر من 17

إذا محمد مراهق

هل محمد أكبر من 50

إذا محمد كهل

أو بشكل برمجي

 

switch (mohammed)

{

case < 13:

mohammed=”kid”;

case < 17:

mohammed=”teen”;

case > 50:

mohammed=”old”;

}

جمل التكرار For Loops

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

أضف إلى المتغير (A) بزيادة (1) في كل مرة على مدى عشر مرات

For i = 1 To i = 10

Print i

Next

جمل التكرار و الدورات الشرطية  While Loops

هذه الجمل شبيهة بجمل التكرار العادية ولكنها تحتوي على شرط للتحقق في بدايتها أو نهايتها و في حال تحقق الشرط يتم الخروج من هذه الدوارة حتى لو لم تتم دورتها الكامل

طريقة بناء و مناداة الدوال  Functions

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

Print Mid(Str, 1, 3)

التعامل مع المحارف و النصوص  String

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

التعامل وبناء المصفوفات  Array

المصفوفات هي عبارة عن متغير لحفظ القيم و لكنها يمكن أن تحتوي على أكثر من قيمة واحدة و بعدد غير محدود و كما يمكن تعريفها لتكون ذات بعد واحد أو ذات بعدين أو أكثر لتحفظ قيم كثيرة بناء على البعد بشكل متداخل مثلا يمكن حفظ مصفوفة متغير باسم (Day) يحوي بداخله أسماء كل الأيام

التعامل مع التاريخ  Date & Calendar

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

الوصول و استدعاء وظائف النظام System Reference

هناك وظائف خاصة بكل نظام تشغيل يدعمها و يمكنك من استخدامها و يمكن تسميتها ب (API) أي لو أردنا معرفة تاريخ الجهاز الحالي فإننا نطلبه من النظام أو حال أردنا معرفة في حال هل تم تحريك الجهاز وتغيير وضعيته كما الحال في الهواتف الذكية فإن النظام يمكننا من معرفة ذلك لنقوم نحن بالتصرف بناء على ذلك

التعامل مع الأخطاء  Error & Exception

من أهم الأشياء التي يحتاجها المبرمج هو معرفة الأخطاء و التعامل معها مثلا في بناء عمليات للتحقق في حال طلبت من المستخدم ان يدخل التاريخ فقام بإدخال التاريخ بالشكل التالي (32/05/2011) حيث لو قمت بتمرير هذه القيمة داخل دوال النظام فانه سيقوم بحصول خطأ حيث أنه لا يوجد ما يسمى يوم (32) في أي شهر و لذا هناك أخطاء من المستخدم يمكن أن تتكهن بها و هناك أخطاء قد تحدث بسبب النظام مثلا انقطاع الانترنت عن الجهاز و كان تطبيقك بحاجة لها و بدلا من انتظار المستخدم أو حصول خطأ يمكنك إخباره بأنه لا يوجد اتصال بالانترنت للمحاولة في وقت أخر

التعامل مع الملفات و المجلدات في النظام  Filesystem & Directory

اغلب التطبيقات تتعامل مع الملفات في نظام التشغيل كالحفظ و التحرير و الاسترجاع و تحتاج بناء على ذلك معرفة أين تخزن الملفات و طريقة التخزين و معرفة حالة الملف في حال كان مستخدم من النظام آو تطبيق أخر على سبيل المثال

التعامل مع قواعد البيانات و جمل الاستعلام Database SQL

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

عناصر التحكم و واجهة المستخدم User Interface

هناك في كل نظام تشغيل عناصر تحكم افتراضية يألفها المستخدم و يتعامل معها و منها مثلا على سبيل المثال (زر الأمر و مربع النص و مربع الخيار) و هنا تأتي المعرفة من معاينة التطبيقات الأخرى و محاكاتها مثلا أو في معرفة وظيفة كل عنصر تحكم و استخدامه في المكان الأمثل بالطريقة التي تتناسب مع وظيفته فمثلا عندما تتعدد لديك الخيارات يمكن ان تستخدم (مربع سرد اختيار) أو تستخدم ما يسمى (دائرة خيار) و كلاهما يؤدي نفس الوظيفة حيث أنه لا يمكن أن يتم اختيار بين هذه المجموعة من الخيارات إلا قيمة وحيدة و لكن بحكم نوع القيمة أو عددها أو شكلها على الشاشة المعروضة تحدد أنت العنصر المناسب , وكلما كنت مستخدما جيدا للتطبيقات كلما استطعت بناء تطبيق جيد

بالنهاية هناك الكثير من الأمور الأخرى الواجب تعلمها في كل لغة برمجة و لكن إتقانك لهذه الأساسيات يؤهلك لسهولة تبني أي لغة برمجة و الانتقال من واحدة إلى أخرى و بالتأكيد التفكير بشكل منطقي لكيفية حل المشكلات و سهولة فهم أي كود برمجي تقوم بقراءته لأي لغة تقريبا

 

Share
label

9 تعليقات

  1. حُسَــامٌ 1 يونيو 2011 رد
  2. مالك عرقسوسي 1 يونيو 2011 رد
  3. عبدالله 1 يونيو 2011 رد
    • محمد بدويAuthor 1 يونيو 2011 رد
  4. saeid 2 يونيو 2011 رد
    • محمد بدويAuthor 2 يونيو 2011 رد
  5. Mohamed 16 نوفمبر 2011 رد
  6. karim 12 يناير 2012 رد
  7. Khalid 30 يونيو 2015 رد

أضف تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

هذا الموقع يستخدم Akismet للحدّ من التعليقات المزعجة والغير مرغوبة. تعرّف على كيفية معالجة بيانات تعليقك.