إعلان
دورة تطوير التطبيقات باستخدام لغة JavaScript في هذه الدورة ستتعلم لغة جافا سكريبت, استخدام مكتبة React.js, بناء API الموقع بواسطة Node.js, تطوير تطبيق جوال باستخدام React Native, و في نهاية الدورة ستتعلم تطوير تطبيق محادثة شبيه بتطبيق WhatsApp. تعلم الآن
دورة تطوير واجهات المستخدم في هذه الدورة ستتعلم لغة HTML و لغة CSS و لغة JavaScript. من ناحية التطبيق العملي ستتعلم طريقة بناء واجهة متجر إلكتروني مكون من ست صفحات, تحويل خمسة تصاميم PSD إلى صفحات ويب, بناء واجهة مستخدم تشبه موقع يوتيوب, بناء لوحة تحكم إحترافية. تعلم الآن
تطوير تطبيقات باستخدام لغة بايثون في هذه الدورة ستتعلم أساسيات البرمجة بلغة بايثون وصولاً إلى التعامل مع أشهر أطر العمل (Flask و Django) و ستتعلم كيف تبني متجر إلكتروني يمكن للمستخدمين البيع و الشراء من خلاله. تعلم الآن
دورة تطوير تطبيقات الويب باستخدام لغة PHP في هذه الدورة ستتعلم لغة PHP من الصفر, استخدام إطار العمل Laravel بشرح مفصّل و عملي, كيفية تطوير شبكة اجتماعية تشبه Instagram, بناء API لتطبيق جوال وفق أسلوب RESTful, تطوير موقع إعلانات مبوبة, تطوير نظام إدارة محتوى CMS كامل. تعلم الآن
دورة تطوير تطبيقات الويب باستخدام لغة Ruby في هذه الدورة ستتعلم البرمجة بلغة Ruby إنطلاقاً من أبسط المفاهيم وحتى بناء تطبيق حقيقي, إستخدام إطار العمل Ruby on Rails بشرح مفصّل و عملي, بناء تطبيق حقيقي عبارة عن شبكة اجتماعية تشبه تويتر, تطوير مجتمع الكتروني يشبه حسوب I/O. تعلم الآن
دورة علوم الحاسوب هذه الدورة معدة لتكون مدخل لعلوم الحاسوب و لغات البرمجة حيث ستتعرف فيها على أنظمة التشغيل و ستتعمق في نظام لينكس و في كيفية التعامل معه من خلال موجه الأوامر, بالإضافة إلى قواعد البيانات و أساسيات الشبكات و الخوادم و مبادئ الحماية والأمان في الويب. تعلم الآن

    خوارزمية لوهن

    في هذا المقال سنتعرف على خوارزمية لوهن ( Luhn Algorithm ) التي تستخدم للتحقق من صحة رقم بطاقة المصرف الإلكترونية.

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


    مبادئ خوارزمية لوهن

    سنشرح مبادئ خوارزمية لوهن بالتفصيل من خلال مثال عملي نقوم فيه باختبار أرقام بطاقة صحيحة هي 5560593098175339.


    1- قم بتعداد أرقام البطاقة من 0 إلى 15.
    التعداد أو الموقع الخاص بكل رقم يسمى index و يبدأ من اليسار إلى اليمين كالتالي.


    2- قم بجمع الأرقام التي يكون التعداد الخاص بها مفرد ( Odd ) كالتالي.

    مجموع هذه الأرقام هو 41.


    3- قم بضرب الرقم الذي يكون التعداد الخاص به زوجي ( Even ) برقم 2 و إذا كان الناتج أقل من 10 أبيه كما هو و إذا كان يساوي أو أكبر من 10 إطرح منه 9 و من ثم إجمع كل النواتج.

    المجموع لهذه الارقام هو 29.


    4- الآن قم بجمع المجموعين السابقين و انظر إن كان الناتج يقبل القسمة على 10 أم لا.

    • في حال كان الناتج يقبل القسمة فهذا يعني أن أرقام البطاقة هي أرقام صحيحة.
    • إن كان لا يقبل فهذا يعني أن أرقام البطاقة ليست صحيحة.

    معلومة: لمعرفة ما إن كان الناتج يقبل القسمة على 10 أم لا فإننا برمجياً نستخدم العامل % لنحصل على الرقم المتبقي من عملية القسمة ( Reminder ). و في حال كان الرقم المتبقي من عملية القسمة هو صفر فهذا يعني أن العدد يقبل القسمة على 10.

    الآن إذا قمنا بحساب مجموع المجموعين السابقين و قسمناه على 10 فالناتج سيكون صفر مما يعني أن أرقام البطاقة صحيحة.


    كود خوارزمية لوهن

    ليس هناك كود محدد لتطبيق هذه الخوارزمية و يمكنك تطبيقها برمجياً بالطريقة التي تريدها طالما أنك تتطبق مبادئها بشكل صحيح.

    في المثال التالي قمنا ببناء دالة إسمها check_card() يمكنك استخدامها لاختبار رقم أي بطاقة تمرره له.
    بعدها قمنا بتجربة الدالة على الرقم 5560593098175339 و طباعة ما إن كان الرقم صحيح أم لا.

    def check_card(card):
        """ Credit Card Test """
        if len(card) != 16 :
            return False
       
        app_comma = ",".join(card).split(",")
        card_list = [int(i) for i in app_comma]
       
        sum_index_odd , sum_index_even = 0 , 0
        check_number_even = []
       
        for index in range(len(card_list)-1,-1,-1):
            if (index % 2 == 1):
                sum_index_odd  += card_list[index]
            else:
                check_number_even.append(card_list[index])
       
        res_even = [i * 2 for i in check_number_even]
        for element_even in res_even :
            if element_even >= 10 :
                element_even = (element_even - 9)
            sum_index_even += element_even
            
        total_sum = sum_index_odd + sum_index_even
        return total_sum % 10 == 0
    
    
    # 5560593098175339 على رقم البطاقة  check_card() هنا قمنا باختبار الدالة
    if __name__=="__main__":
        card = "5560593098175339"
        is_valid = check_card(card)
       
        if (is_valid):
            print("valid card")
        else:
            print("Invalid card!")
    

    يتضمن: Algorithms

    آخر تحديث: 21-4-2022

    الكاتب

    علاء جاسم محمد

    طالب جامعي ، مهتم في البرمجة أحب مشاركة المعلومات البرمجية التي أعرفها بشكل عام هدفي حتى أُعمم الفائدة على الجميع إن شاء الله .

    موقعي: alaa-jassim.blogspot.com/?m=1

    تعليقات 1

    أضف تعليق

    يجب تسجيل الدخول حتى تتمكن من إضافة تعليق أو رد.
    إعلان
    دورة تطوير التطبيقات باستخدام لغة JavaScript في هذه الدورة ستتعلم لغة جافا سكريبت, استخدام مكتبة React.js, بناء API الموقع بواسطة Node.js, تطوير تطبيق جوال باستخدام React Native, و في نهاية الدورة ستتعلم تطوير تطبيق محادثة شبيه بتطبيق WhatsApp. تعلم الآن
    دورة تطوير واجهات المستخدم في هذه الدورة ستتعلم لغة HTML و لغة CSS و لغة JavaScript. من ناحية التطبيق العملي ستتعلم طريقة بناء واجهة متجر إلكتروني مكون من ست صفحات, تحويل خمسة تصاميم PSD إلى صفحات ويب, بناء واجهة مستخدم تشبه موقع يوتيوب, بناء لوحة تحكم إحترافية. تعلم الآن
    تطوير تطبيقات باستخدام لغة بايثون في هذه الدورة ستتعلم أساسيات البرمجة بلغة بايثون وصولاً إلى التعامل مع أشهر أطر العمل (Flask و Django) و ستتعلم كيف تبني متجر إلكتروني يمكن للمستخدمين البيع و الشراء من خلاله. تعلم الآن
    دورة تطوير تطبيقات الويب باستخدام لغة PHP في هذه الدورة ستتعلم لغة PHP من الصفر, استخدام إطار العمل Laravel بشرح مفصّل و عملي, كيفية تطوير شبكة اجتماعية تشبه Instagram, بناء API لتطبيق جوال وفق أسلوب RESTful, تطوير موقع إعلانات مبوبة, تطوير نظام إدارة محتوى CMS كامل. تعلم الآن
    دورة تطوير تطبيقات الويب باستخدام لغة Ruby في هذه الدورة ستتعلم البرمجة بلغة Ruby إنطلاقاً من أبسط المفاهيم وحتى بناء تطبيق حقيقي, إستخدام إطار العمل Ruby on Rails بشرح مفصّل و عملي, بناء تطبيق حقيقي عبارة عن شبكة اجتماعية تشبه تويتر, تطوير مجتمع الكتروني يشبه حسوب I/O. تعلم الآن
    دورة علوم الحاسوب هذه الدورة معدة لتكون مدخل لعلوم الحاسوب و لغات البرمجة حيث ستتعرف فيها على أنظمة التشغيل و ستتعمق في نظام لينكس و في كيفية التعامل معه من خلال موجه الأوامر, بالإضافة إلى قواعد البيانات و أساسيات الشبكات و الخوادم و مبادئ الحماية والأمان في الويب. تعلم الآن
      إعلان

      Eqla3Tech.com

      شروحات مكتوبة حول لغات البرمجة و تقنية المعلومات باللغة العربية مقدمة من إقلاع تك.

      لغة جافا لغة ++C قواعد البيانات نظام ويندوز نظام لينكس الشبكات تقنية المعلومات الأمن السيبراني

      تقييم المقال

      لم تقم بتقييم المقال بعد!

      الدورات

      أدوات مساعدة

      الأقسام

      دورات
      مقالات أسئلة مشاريع كتب