أهلا ومرحبا.
أريد أن أتحدث في هذه المحاضرة حول المصفوفات متعددة الأبعاد.
حتى هذه النقطة ، إذا كنت فكرت في مصفوفة ، لقد قلت للتو أن المصفوفة
متغير يمكنه تخزين العديد من أنواع البيانات.
يمكن أن يصبح الأمر أكثر تعقيدًا من ذلك.
يمكن أن يكون لديك في الأساس الكثير أبعاد المصفوفة.
لذلك إذا كان لديك مصفوفة خطية فقط وهو ما ناقشناه حتى الآن ، وهذا
ما يسمى بعد واحد.
ونعلم أنها أغنية واحدة البعد لأنه يحتوي
فقط على قوسين بحجم واحد.
تسمح لغة c للمصفوفات من أي بعد إلى أن يتم تغريمه.
لذلك هذا نوع من التفكير مثل أ مصفوفة متداخلة ، مصفوفة من مصفوفة.
لذلك فإن المصفوفات ثنائية الأبعاد هي الأكثر شيوعًا.
لكن يمكنك فعلاً فعل ذلك المصفوفات ثلاثية الأبعاد
، المصفوفات رباعية الأبعاد ، المصفوفات خماسية الأبعاد ، ولكن
لا توجد حالات استخدام كثيرة لـ 3 4 و 5.
حقًا ، إما أن تقوم بذلك لديك مصفوفة أحادية البعد تستخدمها
في برنامجك أو مجموعة ثنائية الأبعاد.
المصفوفات ثنائية الأبعاد شائعة لأنها تمثل
بشكل أساسي صفوفًا وأعمدة في جدول بيانات ، هذه هي الطريقة
التي يمكنك تصورها نوعًا ما أو مصفوفة أو جدول.
هذه مصفوفة ثنائية الأبعاد ، لديك صفوف ولديك أعمدة.
حتى تتمكن من تخزين المزيد من البيانات من مصفوفة
ذات بعد واحد عن طريق تحديد الأحجام.
لكنها قابلة للتطبيق للغاية لأنها تبدو وكأنها مصفوفة.
وهناك تطبيقات قد ترغب في كتابة هذا المفهوم للمصفوفة ، على وجه
التحديد سيكون التطبيق الرياضي هو الأكثر
صلة هنا.
ولكن يمكنك أن تفعل ذلك ثنائي الأبعاد المصفوفات للعديد من الأشياء المختلفة.
أحد الأمثلة على ذلك هو المصفوفة.
لكن مرة أخرى ، تصورها كجدول.
المصفوفات ثنائية الأبعاد أعلن بنفس طريقة
المصفوفة أحادية البعد.
الاختلاف الوحيد هو أنت الآن مجموعة أخرى من الأقواس.
إذن في هذا المثال ، نعلن مصفوفة تسمى مصفوفة من النوع
int تحتوي على 4 صفوف و 5 أعمدة.
هذا يعني أنه يمكنك تخزين 20 عنصرًا داخل تلك المجموعة ثنائية الأبعاد.
لذلك يجب أن تعرف كيف كل يتم تحديد البعد بزوج
الأقواس المربعة الخاص به.
هذه هي الطريقة التي يمكنك اكتشافها بسهولة كم عدد أبعاد المصفوفة.
إذا كان لديك 3 أقواس هناك ، فهذا سيكون مصفوفة ثلاثية الأبعاد.
إذا كان لديك 4 ، سيكون أربعة.
هذا واحد به 2 لذا فهو 2.
وحتى وقت سابق كان للمحاضرات واحدة فقط ، لذلك علمنا أن ذلك
كان بعدًا واحدًا.
لذا انظر إلى الأقواس ، انتبه لذلك.
مرة أخرى 4 صفوف ، 5 أعمدة ، إجمالي 20 عنصرًا.
لتهيئة مصفوفة ثنائية الأبعاد ، سيتم تهيئته بنفس طريقة البعد
الواحد المصفوفة ، نفس النوع من بناء الجملة ، ستضيف
المزيد.
لذلك عندما تقوم بإدراج العناصر للتهيئة ، سيتم
سرد القيم حسب الصف.
والفرق هنا هو ذلك عندما تضع القيم الأولية
لكل صف ، ستفعل بين الأقواس ، والأقواس المتعرجة ، ثم ستقوم بإرفاقها
كل الصفوف بين الأقواس.
لذلك سوف ننظر شيء من هذا القبيل.
إذا أنشأنا مجموعة من الأرقام ، وهو ذو بعدين و 3
صفوف و 4 أعمدة ونريد ذلك تهيئته ، كل ما عليك فعله هو وضع
أقواس متعرجة داخل ملف مجموعة كاملة ثم قم بإضافة أقواس متعرجة متداخلة
داخلية لكل صف.
لذلك نحن هنا بصدد تهيئة القيم 0 sub-0 إلى 10 ، 0 sub-1 إلى 20 ، 0 sub-2
إلى 30 و 0 sub-3 إلى 40.
وهذه هي الطريقة التي يمكنك الوصول إليها المصفوفات متعددة الأبعاد أيضًا.
يمكنك الوصول إليهم باستخدام الصف في العمود.
عليك فقط أن تتذكر أنه قائم على 0.
وبالتالي فإن اليد اليسرى العليا التي سيكون الصف 1 والعمود 1 يساوي 00 وهذا
يساوي 10.
الصف 1 العمود 2 سيكون يساوي 20 ، لكن يمكنك
الوصول إليه كأرقام 0 فرعية.
لأن المصفوفة الأولى تحتوي على 3 من الصفوف التي تصل إليها هذا هو الرقم الذي تحدده لرقم الصف
و ثم رقم العمود هو المواصفات التالية للوصول
إلى المصفوفة.
لكن الفردية جميلة بسيط ، فقط افصل الأشياء
عن طريق التعليقات ذات الأقواس.
والوصول إليها ، يمكنك الوصول إليها تمامًا كما لو كنت تصل إلى مصفوفة عادية
إلا أنك تقوم بالوصول إليه الآن هذا مفهوم صف في عمود.
لذا فإن استخدام الأزواج الداخلية من الأقواس اختيارية بالفعل ، ولكن يجب
استخدامها لسهولة القراءة.
إذا لم تقدم هذه الأقواس ، يمكنك في
الواقع تقديم 10 20 30 40 15 25 35 فقط على التوالي ، ولكن من الصعب جدًا تصور ما تقوم
بتهيئته.
كمبرمج ، المقروئية مهم جدًا جدًا لأنه يزيد من جودة
الكود من الأسهل الحفاظ على الشفرة.
عندما أنظر إلى هذا هنا ، يمكنني بسهولة تحديد ما أنا عليه
، خاصة مع التعليقات التهيئة إلى ما هي القيم وما الصفوف التي سيتم
التهيئة إليها.
إذا كان لدي ذلك كسطر واحد مجرد أرقام متتالية ، سأضيع
سريعًا حقًا.
على الرغم من أن الأقواس الداخلية ليست ضرورية ، استخدمها.
كما هو الحال مع مصفوفة أحادية البعد ، ليس مطلوبًا أن تتم
تهيئة المصفوفة بالكامل.
يمكنك فقط تهيئة مناطق معينة.
إذن في هذا المثال ، نحن إنشاء مصفوفة ثنائية الأبعاد
تتكون من 4 صفوف و 5 أعمدة.
نحن فقط بصدد تهيئة أول 3 عناصر من كل صف.
إذن ، الصف 1 العمود 1 هو 10 ، صف العمود الأول 2 يساوي 5 ، والصف 1 العمود 3 هو سلبي 3 ، و نفس
الشيء بالنسبة للعمود الثاني
وما إلى ذلك 900 32 31 008.
لتلك التي لم نضعها القيمتين الرابعة والخامسة
من كل صف ، ستذهبان بالفعل ليتم ضبطها على 0 تلقائيًا لأننا تركناها.
وفي هذه الحالة ، أنت في الواقع يجب أن توفر الأقواس
المجعدة الداخلية.
لأنه إذا فعلنا هنا ذلك ، فإن التهيئة
ستكون كلها معطلة.
لأنه إذا لم يكن لديك الأقواس المتعرجة ، ستفعل
ذلك على التوالي.
إذن ما سيحدث هو هذا ستبدأ
بالفعل في تهيئة أول 12 عنصرًا.
لذلك سيتم تهيئة كل ملفات العناصر الموجودة في الصف الأول ، كل العناصر
الموجودة في الصف الثاني ثم أول عنصرين في الصف الثالث
ثم باقي العناصر في الصف الثالث ، ستكون بقية العناصر
في الصف الرابع 0.
مرة أخرى ، هذا ثنائي الأبعاد صفيف من 4 صفوف و 5 أعمدة.
سوف تفعلها فقط على التوالي.
لذلك لا تنسى الأقواس إذا أنت إذا كنت تريد
فقط تحديد بعض عناصر التهيئة.
يمكنك أيضا أن تفعل التهيئة المعينة.
تذكر ، هذا هو مفهوم C99.
هذا اختياري في C11 حيث يمكنك تحديد
فهارس معينة ليتم تهيئتها.
لذلك يمكنك استخدام الرموز في ملف قائمة التهيئة ، تمامًا كما هو
الحال في مصفوفة أحادية الأبعاد إذا كنت تريد ذلك لعمل مُهيئ معين
، ستفعل شيئًا كهذا.
إذن نحن هنا نعلن عن المصفوفة مصفوفة من 4 صفوف و 3 أعمدة ،
لكننا في الواقع نحدد أن 0 0 يساوي 1 ، 1 1 يساوي
5 و 2 2 يساوي 9.
لذا عندما نقول 2 2 مرة أخرى ، ماذا نقول إنه الصف 2 وهو في الحقيقة
الصف 3 لأننا نبدأ من 0 ، العمود 2 وهو بالفعل العمود 3.
مرة أخرى ، تصور هذا على أنه جدول أو جدول بيانات.
والوصول إلى العناصر يبدأ في الزاوية العلوية اليسرى.
ولكن إذا فهمت أن ملف 4 يمثل الصفوف ويمثل الرقم
3 الأعمدة ، إنه حدسي بعد ذلك.
إذن ما يفعله هذا هو تهيئة العناصر الثلاثة المحددة
للمصفوفة إلى قيم محددة.
لكن ما يجب عليك لاحظ هنا بناء الجملة.
كل القيم غير المحددة هنا ستكون 0 افتراضيًا.
لذلك هذا فقط يذهب لتهيئة 3 قيم.
كل مجموعة من القيم التي لديك هل التهيئة ستكون العناصر
الموجودة في صف بين الأقواس.
ثم التهيئة بالكامل يتنقل بين زوج آخر من الأقواس.
لذلك ترى أن لدينا الأقواس المتعرجة على الخارجيين تمامًا
مثل التهيئة العادية ثم لدينا الأقواس للوصول
إلى المصفوفة بالداخل.
ثم لدينا فاصلات افصل كل صف ويتم فصل كل مجموعة من قيم
الصف من المجموعة التالية بفاصلة.
لذلك يتم فصل القيم وكذلك فهارس الصفوف.
الآن فقط لأننا قلنا ذلك لدينا بعدين وكنا نتحدث عن
ذلك ؛ تستطيع في الواقع العديد من الأبعاد الأخرى.
كل ما تحدثت عنه أبعاد 2 تنطبق أيضا على
3 أبعاد 4 أبعاد 5 أبعاد.
لذلك إذا كنت تريد التصريح عن ملف مصفوفة
ثلاثية الأبعاد ، ستفعلها بثلاثة أقواس مربعة.
لذلك هذا هو المصفوفة المسمى مربع من النوع int 10 20 و 30.
قد ترغب في استخدام ملف مصفوفة
ثلاثية الأبعاد ربما إذا كنت تخزن قيم xyz من نوع ما ، ربما لن تحتاج إلى القيام بذلك.
المصفوفات ثلاثية الأبعاد و ما يصل حقا ليست شائعة.
كملخص ، يمكنك تصور ملف صفيف أحادي البعد كصف
بيانات ، صف واحد ، ثنائي الأبعاد مصفوفة كجدول مصفوفة
أو جدول بيانات ثلاثي الأبعاد صفيف ، يمكنك تصور ككدسة من جداول البيانات
، وبالتالي كومة من الجداول.
إذا كنت بحاجة إلى هذا القدر من البيانات ، سيكون من الصعب
حقًا الوصول إليه وربما مربكًا.
وأي شخص يحافظ على هذا برنامج لصفيف ثلاثي الأبعاد
أو أعلى ، من المحتمل أن يكون لتضيع في محاولة
اكتشاف ما يحدث ، ولكن يمكنك القيام بذلك مرة أخرى وإذا كنت ستحتاج في أي وقت
إلى تكرار أي من هذه مصفوفة واحدة ، ثنائية ، ثلاثية الأبعاد ، ربما
ستستخدم حلقة.
وكلما زادت الأبعاد لديك في الحلقة ، ستحصل على المزيد من الحلقات
المتداخلة.
لذلك إذا كنت تريد معالجة ملف مصفوفة ثلاثية الأبعاد ، سيكون
لديك 3 حلقات متداخلة.
وإذا كنت تريد معالجة ملف مصفوفة رباعية الأبعاد ،
سيكون لديك 4 حلقات متداخلة.
وبقدر ما يتم تهيئة المصفوفة هذا أعلى من بعدين ، مرة أخرى ،
ستطبق نفس النوع من الأشياء ، ستمددها
قليلاً.
إذاً مصفوفة ثلاثية الأبعاد سيكون لها 3 مستويات
من الأقواس المتداخلة مع المستوى الداخلي يحتوي على مجموعة من قيم التهيئة
لكل صف ، لذلك سيكون تبدو مثل شيء من هذا القبيل.
هنا لدينا ثلاثي الأبعاد صفيف ، 2 3 و 4 ، مكدس من جداول البيانات
بشكل أساسي.
والكتلة الأولى من 3 صفوف ، سنقوم بالتهيئة
والكتلة الثانية المكونة من 3 صفوف سنقوم بالتهيئة.
لذا فإن ما يقوله هذا هو مرة أخرى الكتلة الأولى والكتلة الثانية لأننا لم
نبدأ الكتلة الثالثة والرابعة ، الأولى
والثانية فقط.
لذلك لدينا 4 كتل وأنت يمكن اعتبار كل كتلة كومة من جداول
البيانات ، كل منها كتلة بها صفوف وأعمدة.
لذا فإن الكتلة الأولى ستكون تهيئة الصفوف الثلاثة الأولى فقط ، وهذا
كل ما لدينا هو 3 صفوف.
ثم تبدأ الكتلة الثانية لتهيئة الصفوف الثلاثة التالية ، لكن الكتلتين الثالثة
والرابعة لن تتم تهيئتها.
إذا كنت تريد تهيئة ملف الكتل الثالثة والرابعة
، سيكون لديك المزيد من الأقواس الداخلية ، الأقواس المتعرجة وما إلى ذلك.
نفس الشيء ينطبق على الرغم من تلك التي لم تقم بتهيئتها
، سيتم تهيئتها إلى 0.
لكن مرة أخرى ، يمكنك أن ترى كيف يصبح الأمر مملًا
جدًا ويصعب أيضًا متابعته.
عندما تريد معالجة العناصر في مصفوفة الأبعاد ، كما ذكرت
، ستستخدم حلقات متداخلة.
مرة أخرى ، سوف تتوافق مباشرة إلى عدد الأبعاد.
وستذهب كل حلقة إلى التكرار على بعد صفيف واحد.
لذلك سوف ننظر شيء من هذا القبيل.
هذا مثال على أ مجموعة ثلاثية الأبعاد.
لديك حلقة خارجية و ثم لديك 2 حلقات داخلية.
الحلقة الخارجية ستكون أول مجموعة خارجية ، لذلك ستمر الحلقة الخارجية بشكل أساسي الصفوف
، والثاني يمر عبر الأعمدة والثالث
سوف يمر المرء عبر الكتل.
مرة أخرى ، ما يجب أن تلاحظه إنه رائع ، هذا يصبح مشعرًا
حقًا ومملًا حقًا ، سريعًا حقًا.
لذا حاول تجنب الأبعاد الثلاثية المصفوفات رباعية الأبعاد
ولا أرى حتى استخدامات كثيرة حالات لذلك ، واحد واثنان
هي كل ما ستستخدمه حقًا.
لكن فهم متعدد الأبعاد المصفوفات هي إمكانية في c ، وهي طريقة لتخزين المزيد من البيانات والوصول
إليها نفس الاسم مع العديد من عناصر البيانات. شكرًا لك.