Yehia Amin Elsayed Moquil Mohamed نشر 11 فبراير أرسل تقرير نشر 11 فبراير هل هناك سبب منطقى لبدأ العد من الصفر ؟ سؤال جاء فى عقلى وانا استخدم index string[0] 2 اقتباس
0 عبدالباسط ابراهيم نشر 11 فبراير أرسل تقرير نشر 11 فبراير نعم هناك أسباب منطقية منها أن الـ Index هو إزاحة وليس ترتيب بمعنى عندما تكتب string[0]، فإن الرقم 0 هنا لا يعني "العنصر الأول"، بل يعني "كم خطوة أبتعد عن البداية؟". وأيضاً أسباب تاريخية حيث كان هذا الترتيب يساهم في سرعة الحساب في الذاكرة في لغة مثل ال c ولذلك للتفصيل أكثر يرجى الإطلاع على التعليقات التالية اقتباس
0 عبد الوهاب بومعراف نشر 11 فبراير أرسل تقرير نشر 11 فبراير وعليكم السلام ورحمة الله، السبب الأساسي هو أن الفهرس يمثل المسافة من بداية المصفوفة في الذاكرة تخيل أنه عندك صف من الصناديق بحيث أن أول صندوق موجود عند نقطة البداية بالضبط، يعني المسافة من البداية = صفر أما الصندوق الثاني بعيد عن البداية بمسافة صندوق واحد يعني المسافة = 1، وهكذا. لما الكمبيوتر يبحث عن عنصر في الذاكرة ييحسب موقعه كالتالي: عنوان البداية + الفهرس. لكن لو بدأنا من 1 بدل 0، الكمبيوتر سيضطر أن يطرح 1 في كل مرة لكي يصل للموقع الصحيح، وهذا سيبطئ البرنامج كما أنه عندما تعمل loop مثل for(i=0; i<10; i++) فأنت ستكرر بالضبط 10 مرات من 0 ل 9 وهذا منطقي رياضيا. فاللصفر سيترك الحسابات أبسط وأسرع وهذا السبب الذي جعل معظم لغات البرمجة تستخدمه. اقتباس
0 Mustafa Suleiman نشر 11 فبراير أرسل تقرير نشر 11 فبراير في أغلب الأحيان ستجد السبب هو الذاكرة العشوائية، وهو أمر لا يتضح لك عند دراسة لغات مرتفعة المستوى مثل جافاسكربيت وبايثون والتي تقوم بتجريد الكثير من الأمور أي إخفائها عنك. السبب هو الـ Memory Offset أو إزاحة الذاكرة، حيث الذاكرة RAM شكلها كالتالي تقريبًا: العنوان: 1000 1001 1002 1003 1004 القيمة: 'H' 'e' 'l' 'l' 'o' وذلك عند تخزين المتغير: let str = "Hello"; فالكمبيوتر يحفظ أول حرف في عنوان أساسي base address مثلاً 1000 وللوصول لباقي الأحرف نستخدم الإزاحة: عنوان الحرف = العنوان الأساسي + الإزاحة (offset) أي ما يحدث في الخلفية عند كتابة str[0] : str[0] 1000 + 0 = 1000 str[1] 1000 + 1 = 1001 str[2] 1000 + 2 = 1002 لو بدأنا من 1 كنا نحتاج إلى تنفيذ طرح في كل مرة: str[1] 1000 + (1-1) = 1000 وتلك عملية زائدة لا حاجة إليها. اقتباس
السؤال
Yehia Amin Elsayed Moquil Mohamed
هل هناك سبب منطقى لبدأ العد من الصفر ؟
سؤال جاء فى عقلى وانا استخدم index string[0]
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.