أهلا ومرحبا.
في هذه المحاضرة أريد أن أتحدث حول مفهوم المصفوفة.
المصفوفة هو مفهوم يسمح يمكنك تخزين العديد من القيم المختلفة
في متغير واحد بشكل أساسي.
المصفوفات شائعة في معظم لغات البرمجة.
أنها تساعد على تبسيط وجعل الخاص بك البرنامج أكثر كفاءة.
لذلك سوف نتحدث عن إنشاء واستخدام المصفوفات في ج.
لذلك مصفوفة.
من الشائع جدًا تخزين البرنامج العديد من قيم البيانات من نوع محدد.
في برنامج رياضي ، على سبيل المثال ، قد ترغب
في تخزين عشرات الألعاب أو الدرجات لكل لاعب.
حتى هذه النقطة ، يمكننا بسهولة نفذ ذلك ، لكن علينا كتابة متغير
مختلف لكل درجة.
لذا تخيل لو كان هناك الكثير من الألعاب.
أعني في لعبة البيسبول 162 مباراة.
إذا أردنا كتابة برنامج كان برنامج بيسبول أراد تخزين
بعض الإحصائيات أو شيء من هذا القبيل ، نحن سيتعين عليك إنشاء
162 متغيرًا لكل لعبة للحفاظ على النتيجة.
الآن هذا هو ألم في المؤخرة.
سيكون مملا جدا.
وهو حقًا كثير جدًا.
لذلك هذا هو المكان الذي المصفوفة يأتي دور المصفوفة
في حل هذه المشكلة.
لا داعي لذلك إنشاء 162 متغيرا.
يمكنك إنشاء متغير واحد والوصول إليها بطريقة معينة.
لذلك تسمح لك المصفوفات بتجميع القيم معًا تحت اسم واحد.
لست بحاجة إلى الانفصال المتغيرات لكل عنصر من عناصر البيانات.
لذلك سيسمح لك بأن تصبح مبرمج أكثر كفاءة.
المصفوفة هي عدد ثابت من البيانات العناصر كلها من نفس النوع.
لذلك هناك مشكلة واحدة فقط بامتداد المصفوفة هي أنه لا يمكنك تغيير
حجم المصفوفة.
بمجرد إنشاء المصفوفة ، يتم ذلك سيكون دائما بهذا الحجم.
والقيود الأخرى هو أنه لا يمكنك تخزين أنواع متعددة
من البيانات.
إذا قمت بتعريف مصفوفة وهي لا يزال ذاهبًا لتخزين الأرقام
و ints ، يجب أن يخزن ints.
لذا هناك بعض القيود.
كيف تصرح عن مصفوفة.
تذكر ذلك عندما تعلن متغير ماذا تفعل؟
أنت تقول هذا متغير موجود في البرنامج.
وعندما تعلن هذه الأنواع من البيانات البدائية ،
فأنت تخصص شكل الذاكرة.
عندما تعلن عن مصفوفة ، يشار إلى عناصر البيانات في المصفوفة
بالعناصر.
لذلك هذا مفهوم آخر عندما تفكر في مصفوفة.
إذا كنت أقول عنصر المصطلح هذا يعني أنني أشير
إلى عنصر في المصفوفة.
لأن تذكر المصفوفة سيكون لها العديد والعديد من القيم
المختلفة ولكن بنفس الاسم.
وكما ذكرنا العناصر في يجب أن تكون المصفوفة من نفس النوع
، ولا يمكنك مزج أنواع البيانات ومطابقتها.
لا يمكنك الحصول على مجموعة من 5 ints و 5 longs.
لا يوجد شيء مثل واحد مجموعة من أنواع البيانات المتعددة.
الإعلان عن استخدام مصفوفة في برنامج مشابه لإعلان
المتغير العادي.
كل ما عليك فعله هو التحديد الاسم ثم استخدم الأقواس.
هذا هو الاختلاف الوحيد ، فكرة الأقواس المربعة
التي تلي الاسم.
هنا مثال على هذا يبدو كإعلان متغير
عادي ، لكن ما تراه هنا لديك هذه الأقواس.
هذا هو الشيء الوحيد ليس طبيعيا ، وهناك
رقم بداخلها.
الرقم الموجود داخل الأقواس يتم تحديد الحجم.
لذلك نحن هنا فقط نقول نحن سننشئ مصفوفة
تسمى أرقام من النوع طويل سوف تحتوي على 10 عناصر.
لذا فالأمر واضح ومباشر.
هذا رقم إعلان بسبب الفاصلة المنقوطة في النهاية
، مثل تعريف المتغير ولكن لديك هذه
الأقواس ورقم ، وهذا هو حجم المصفوفة أو بعد المصفوفة.
بمجرد أن تعلن عن مصفوفة ، فأنت ثم سترغب في البدء في استخدامه.
سوف تريد أن تبدأ الوصول إلى البيانات
الموجودة بداخلها أو كتابة البيانات عليها.
من أجل القيام بذلك ، لديك لفهم كيفية تخزين المصفوفة
في الذاكرة وكيف يتم ذلك سيتم الوصول إليها بالفعل.
لذلك مصفوفة مع كل عنصر من العناصر في المصفوفة ، كل عنصر من عناصر البيانات ، يتم الوصول
إليها باستخدام نفس الاسم.
لذلك ما زلت في طريقك للوصول مع اسم المتغير.
ومع ذلك ، إذا كنت تريد محددًا في هذا الشعاع ، سيتعين
عليك الآن استخدام شيء يسمى فهرس أو منخفض ، يتم استخدام كلا المصطلحين
بالتبادل.
هذا الفهرس أو القيمة المنخفضة سيكون رقمًا وسيكون داخل
الأقواس أيضًا للوصول إلى عنصر في المصفوفة أو الحق في ذلك
المكان في كتابة المصفوفة قيمة تتبع اسم المصفوفة.
لذا فإن قيم الفهرس متسلسلة الأعداد الصحيحة التي تبدأ من 0.
لذلك عندما نتحدث عن مصفوفة و إنها عناصر ونتحدث
عن الفهارس الموجودة في المصفوفة أو الأحرف السفلية ، يمكن أن تبدأ كل هذه الغواصات من 0.
هذا هو القول في الأساس أن أشعةهم تستند إلى 0.
لذا فهرس قيم العناصر في ملف مجموعة من الحجم 10 ستكون من 0 إلى 9.
0 سوف يمثل ذلك أول عنصر من عناصر المصفوفة ، وسوف يشير الرقم 9 إلى العنصر
الأخير عنصر في مصفوفة بحجم 10.
لذا عليك أن تفهم هذا مفهوم المصفوفات المستندة إلى 0.
بشكل حدسي ، قد تعتقد يا أنا تريد الوصول إلى النقطة
الأولى في المصفوفة ، حسنًا أقدم الفهرس واحد ، لا لأنهم يبدأون من 0.
لذلك من الشائع جدًا أن حاول عن طريق الخطأ الوصول إلى مصفوفة
وانقطع بمقدار 1 لأن تعتقد أنهم يبدأون من واحد
ولا يبدأون عند 0.
يشار إلى هذا كإيقاف بنسبة 1 خطأ.
يمكنك استخدام عدد صحيح بسيط للإشارة صراحة إلى العنصر
الذي تريد الوصول إليه.
على سبيل المثال ، إذا كنت تريد الوصول إلى القيمة
الرابعة في المصفوفة ، يمكنك قول اسم المصفوفة ثم داخل الأقواس ستقول 3.
لذا فإن اسم المصفوفة sub-3 قيد التنفيذ للوصول إلى القيمة
الرابعة لأن اسم الصفيف يستند إلى 0.
لذلك عليك فقط أن تقدم رقم للعنصر الذي تريد
الوصول إليه.
ومرة أخرى ، تذكر أنها قاعدة صفرية.
إذن للوصول إلى العنصر الرابع ، فهو 3.
إذا كنت ترغب في الوصول إلى ملف العنصر الثامن ، عليك القيام بالفهرس 7.
يمكنك أيضًا تحديد فهرس لملف عنصر المصفوفة باستخدام التعبير.
لذلك عليك الآن فقط استخدام رقم.
يمكنك استخدام تعبير في المربع الأقواس التالية للاسم أيضًا.
ومع ذلك فإن التعبير يجب أن ينتج في قيمة عدد صحيح يتوافق مع إحدى
قيم الفهرس الممكنة.
لذلك إذا كان لديك مجموعة من الحجم 10 وأنت تستخدم
تعبيرًا ، يجب تقييم هذا التعبير إلى إما 0 ، أي أرقام من 0 إلى 9.
إنه شائع جدًا أيضًا عندما تكون كذلك تخزين العناصر في مصفوفة لاستخدام حلقة
للوصول إليها ونحن ذاهبون لإعطاء مثال على ذلك أيضًا.
لذلك على سبيل المثال هنا ، لدينا لـ loop ونقوم بتهيئة متغير التحكم في الحلقة
إلى 0 I ونحن أخرج بمجرد أن أصبح عمري أقل من 10.
وماذا نفعل هنا هو أننا نعرض فقط
الأرقام في المصفوفة.
ولذا فإننا نقول printf الرقم هو النسبة المئوية
d ثم الأرقام الفرعية I ، أنا متغير.
يمكنك استخدام متغير في ملف تعبير متغير طالما أن هذا
المتغير يمثل رقمًا من 0 إلى 9 ، وفي هذه الحالة يفعل ذلك.
من الشائع جدًا استخدام ملفات حلقات للتكرار عبر مصفوفة
للوصول إلى العناصر أو كتابة البيانات إلى تلك العناصر.
لتلخيص ذلك ، هذا شيء لطيف القليل من التوضيح الذي وجدته.
هذه هي الطريقة التي يتم بها تنظيم المصفوفة.
إذا كان لدي مجموعة تسمى الأرقام ، سيكون لديك
اسم المصفوفة متبوعًا بواسطة الأقواس التي تحدد العناصر الفردية
في المصفوفة.
لذا يمكنني التصريح عن مصفوفة فقط تحديد النوع والاسم
ثم تحديد الحجم داخل الأقواس.
وبعد ذلك عندما أريد الوصول أنا فقط استخدم اسم المصفوفة
متبوعًا بقيمة الفهرس.
وكذلك بالنسبة للمصفوفة
التي تحتوي على بحجم 10 ، سيكون لديك فهارس صالحة من 0 إلى 9.
إذن ماذا يحدث إذا حاولت الوصول عنصر في المصفوفة به
فهرس غير صالح ، على سبيل المثال المحاولة للوصول إلى مصفوفة بحجم 10 باستخدام 11 كمؤشر
أو 10 عبارة عن فهرس.
سيكون لديك مجموعة خطأ خارج الحدود.
لذلك إذا كنت تستخدم تعبيرًا أو متغير أو ثابت
لقيمة مؤشر خارج نطاق المصفوفة وخارج نطاق النطاق
يعني ماذا؟
حسنًا ، هذا يعني أنه إما سالب number أو أنه رقم أكبر
من الحجم ، حقًا أكبر من حجم ناقص واحد لأن هناك 0 قاعدة.
لذلك إذا كان لديك مجموعة من الحجم 10 ، الحجم ناقص 1 ، إذا كان أكبر من 9 ،
فستحصل عليه مصفوفة خارج الحدود خطأ.
والمشكلة مع المصفوفة لحدود الخطأ ، فقد يتسبب
ذلك في تعطل البرنامج أو حتى والأسوأ من ذلك ، يمكن أن يجعل البرنامج
يبدو وكأنه يعمل بشكل طبيعي ، ولكن بعد ذلك لا يعمل بشكل طبيعي.
لذلك لا تنتج نتائج متسقة.
في بعض الأحيان سيكون لديك قمامة البيانات ، البيانات التي لا
تعني أي شيء في المصفوفة.
مرة أخرى ، لا يمكن توقع متى لديك مجموعة من حدود الخطأ.
والمسألة هي أن المنتظمين لا يمكن التحقق من خطأ خارج
الحدود بواسطة المترجم لأن المترجم لن يعرف
ما إذا كنت تقوم بتعيين شيء ما أكبر أو إذا كنت تصل إلى شيء
أكبر من الحجم.
لا يزال يتم تجميعه على الرغم من وجود خطأ في هذه
المنطقة خارج الحدود.
أساسًا مجموعة الحدود الخطأ هو خطأ وقت التشغيل.
لن تكتشف هذا خطأ حتى تقوم بتشغيل البرنامج.
ومرة أخرى يمكن أن يسبب لك أن يكون البرنامج غير متوقع للغاية.
لذلك تريد أن تكون جدا جدا مدركًا لكيفية وصولك إلى المصفوفة ، ما هي قيم
الفهرس لديك باستخدام وكيف تكتب البيانات إلى المصفوفة
بقيمة الفهرس.
انتبه جيدًا إلى فهارس المصفوفة وكذلك الحدود.
إذا كنت ترغب في كتابة البيانات إلى ملف مجموعة ، إنها بسيطة للغاية.
ستفعل بشكل أساسي فقط استخدم الفهرس.
لذلك يمكن تخزين قيمة في مجموعة عنصر ببساطة عن طريق تحديد عنصر المصفوفة
على اليسار جانب علامة المساواة ثم استخدم الأقواس لتحديد
العنصر الذي تريد الكتابة إليه.
لذلك في هذا المثال لدينا مجموعة تسمى الدرجات ، لا نعرف حجمها ، يجب
أن تكون أكبر من 100 وإلا فسيكون لدينا خطأ خارج
الحدود هنا.
لكن في هذا المثال نقول الدرجة الفرعية 100 تساوي 95.
يتم تخزين القيمة 95 في العنصر رقم 100 في مصفوفة
الدرجات ، بسيط جدًا.
أنت فقط تحدد الفهرس وبعد ذلك مهما كانت القيمة التي تريد التوقيع عليها
، فأنت تفعل ذلك.
يمكنك أيضًا استخدام المتغيرات لتعيين قيم لمصفوفة.
لذلك يمكن تخزين 95 في متغير ، مثلما تقوم بتعيين متغيرات أخرى.
الآن دعنا نذهب من خلال مثال على استخدام المصفوفة.
فيما يلي مثال على استخدام ملف المصفوفة التي
ستجمع في 10 أرقام ثم تعطيني متوسط هذه الأرقام العشرة.
كما نقرأها في نحن سنقوم بحساب المجموع
ثم سنعرض المتوسط.
لذا في هذه المرحلة ، أريد أن آخذ هذا المثال وأريد وضعه
في كتل التعليمات البرمجية ومحاولة التشغيل من خلال ونوضح لك كيف يعمل.
نحن في وجهة نظرنا العادية ، نحن في مشروع بسيط وسنوضح لك كيف تعمل المصفوفة في كتل
التعليمات البرمجية.
ستلاحظ أننا في وظيفتنا الرئيسية.
هذا هو المدخل أشر إلى البرنامج.
وفي السطر 12 ، نحن إعلان مجموعة.
سنعلن عن ملف مصفوفة من النوع int بحجم 10.
الحجم داخل الأقواس ، ننهيها بفاصلة منقوطة.
هذه مصفوفة ذاهب لتخزين 10 قيم.
إذا لم يكن لدينا هذه المجموعة تخزين
ما يتعين علينا القيام به هو أننا يجب أن نقول الصف الأول كثافة العمليات ، الصفوف 2 كثافة العمليات ، الصفوف 3.
ترى مدى إشكالية ذلك هو وكم هو ممل جدا.
من الجيد جدًا أننا نستطيع ذلك ما عليك سوى إنشاء متغير واحد
يخزن 10 عناصر ، و تم تجميعهم معًا.
عندما تقوم بتخزين العناصر في مصفوفة ، أنت لا تريد أن تكون قيم البيانات
مختلفة ، كل الأشياء مختلفة.
كما في هذا المثال ، نحن نقوم بالتخزين درجات ، لذا فهي كلها درجات.
لا تريد تسمية مصفوفة شيء ما ثم أقول إنني
سأخزن درجاتي ، سأقوم بذلك تخزين ...
لي... لي... مهما يكن ، عمري هناك وأي شيء.
تأكد من تخزين نفس النوع من البيانات عندما تكون مصفوفة.
المتغير التالي في السطر 13 متغير عد.
إنها تساوي 10.
سيكون الرقم من القيم التي يجب قراءتها لأننا نمر
عبر المصفوفة.
المجموع طويل ، سنجمعه الأرقام كما نمر بالقيم ثم المتوسط
يذهب أن تكون عائمًا لأننا نريد الحصول على متوسط
الأرقام.
أول شيء سنفعله السطر 17 هو أننا سنخبر
المستخدم أننا نريدهم أن يفعلوا ذلك أدخل 10 درجات ثم
نقرأ القيم.
إذن في السطور 20 ، لاحظت كيف أنا المسافة البادئة وأنا أستخدم
تسمية جيدة ومسافة بادئة واستخدام حظر جيد لـ رمز لكتل من التعليمات البرمجية المسافة البادئة.
هنا في السطر 20 ، أعلن متغير التحكم في الحلقة الخاصة بي.
أنا أدير مترجمًا أقدم ، ج مترجم 89 ، لذلك لا يمكنني التصريح عنه
وتهيئة نفس السطر.
عادة ، كنت تفعل هذا فقط.
لكن عندما أفعل ذلك لأنني أجري خطأ في مترجم C89.
لذلك أعلن عن المتغير الخاص بي على الخط 20 ، ثم أستخدم حلقة for.
نحن على دراية بحلقات for من محاضراتنا السابقة يسمح
لك بتكرار الكود.
نحن هنا نقول فقط أننا ذاهبون إلى لدينا حلقة for مضبوطة
بشكل مضاد ، سنبدأ عند 0 ونحن سنذهب طوال الطريق حتى 10.
لذلك نحن ذاهبون من خلال 10 تكرارات ، لكنك
لاحظت أن الفهرس هو 0.
هذا مهم لأن سنصل إلى مصفوفة باستخدام
هذا المتغير I.
وبعد ذلك ستلاحظ في النهاية من الحلقة for ، نقوم بتعديل متغير
التحكم في الحلقة من خلال زيادته.
لذلك سنقوم بطباعة قيمة I plus 1 أثناء استعراضنا
للمصفوفة لنظهر لك أين أنت من أجل الأرقام.
لذلك سيقول بشكل أساسي مثل دخول الصف 1 الصف 2 الصف 3 الصف 4.
ثم سيطلب منك ذلك أدخل في الصف باستخدام scanf.
سنقوم بتخزينه في مجموعتنا.
ستلاحظ ذلك عندما تقوم بذلك تخزينه في
المصفوفة ، إنه مثل وصول متغير عادي.
أنت فقط تستخدم الدرجات و ثم تحدد الفهرس.
نحن هنا نستخدم أنا كمؤشرنا.
إذن هذا سيساوي 0 التكرار الأول 1 التكرار الثاني
2 التكرار الثالث.
ومن الجيد أننا بدأنا بـ 0 لأن المصفوفات تستند إلى
0 ثم نستخدم العنوان فقط المشغل ، علامة العطف.
بينما نحن نمر ، نحن سنجمع الدرجات معًا.
لذلك سنقول مجموع يساوي المجموع بالإضافة إلى الدرجة الفرعية الأولى.
كل درجة سوف اساسا حساب المجموع.
وبعد ذلك بمجرد الخروج من الحلقة بعد تشغيل 10
مرات ، سنحدد المتوسط يساوي مجموع مقسومًا على العدد ونضعه
على تعويم ، نحن نضعه هنا.
هذا يغير نوع البيانات.
تذكر ، مجموع مقسوم على العدد ، المجموع هل هي طويلة وتحسب على أنها عدد صحيح ونريد طرحها
على عدد عشري.
ثم في النهاية ، نحن سنطبع المتوسط.
لذلك دعونا نمضي قدمًا ونجري هذا و تأكد من عدم حصولنا على أخطاء ، والتي لدينا 0
خطأ و 0 تحذيرات.
فلنبدأ الآن بتشغيله.
وهكذا ستفعل بالضبط ما أشرت إليه.
سيقول أدخل الصفوف العشرة ثم يضع 1 في علامة صغيرة هناك حتى نعرف الرقم
الذي نتواجد فيه.
سيتم وضع مثل 95 32 55 ، ستدخل وتضع أي أرقام
هنا.
لا معنى لها بالضرورة ، هذا جيد ، ورقمي الأخير 23.
متوسط هؤلاء 10 الدرجات ستكون 51. 20.
لكنها لطيفة حقًا لأننا لا داعي لإنشاء 10 متغيرات.
نصل إلى المصفوفة باستخدام منخفض ، ويمكننا تعيين قيم للمصفوفة
باستخدام الرمز المنخفض.
هذا هو التنازل في الواقع عندما نفعل الفحص.
نحن نسند البيانات إلى ذلك إلى أن منخفض.
الآن إذا أردنا تغيير هذا ونقول أننا بدأنا من 1 وبدلاً
من أن نحسب أي منها هي 10 ، فنحن نساويها.
لذلك دعونا في الواقع لا تغير ذلك إلى 1.
لنفترض أننا سنبدأ عند 0 ، لكننا الآن سننتقل
إلى الفهرس 10.
تذكر أن الفهرس 10 خارج الحدود لأن حجم المصفوفة
هو 10 ، لكن قيمة الفهرس هي 0 بحيث يكون الحد الأقصى للمؤشر هو 9.
ومرة أخرى ، سنكون قادرين لتجميع هذا لأن المترجمين
لا يكتشفون الأخطاء خارج الحدود ، المشكلة هي عندما نقوم بتشغيله.
الآن عندما نقوم بتشغيل البرنامج ، سنواجه مشكلة كبيرة نحاول
الالتحاق بالصف الحادي عشر.
لذلك سنكون كل شيء على ما يرام.
عندما ندخل 10 درجات في ، ستحدث المشكلة عندما
نصل إلى 11.
الآن لدينا 11 ونحن سأحاول تخزين البيانات.
لم يحدث شيء سيء ، ولكن لدينا المتوسط لن يكون صحيحا.
وهو سلوك غير متوقع للغاية عندما يكون لديك خطأ خارج الحدود.
لذلك تريد التأكد من ذلك لديك درس العد وتريد أن تتأكد
من ذلك متى يمكنك الوصول إلى المعلومات ، ولا تخرج عن الحدود
أيضًا.
وهذه هي أساسيات المصفوفة ، التصريح عن المصفوفة
، وتحديد الحجم فقط نوع البيانات ثم الحجم والأقواس ، والوصول إلى المصفوفة أو تخزين
البيانات في المصفوفة ، وتعيين القيم ، باستخدام
الرمز I داخل الفهارس.
ويمكننا حتى طباعة ملف الفهارس باستخدام منخفض أيضًا.
المصفوفات ذاهبون إلى يمكن استخدامها قليلاً.
سيكون لدينا العديد من الأمثلة مع المصفوفات لأنها تبسط الأشياء.
فقط تذكر أن المصفوفات ذات حجم ثابت.
لا يمكنك تغيير حجم الدرجات.
ستكون دائما كذلك 10 أثناء تشغيل البرنامج.
لذلك إذا قمت بتعيين أي بيانات أعلاه ذلك ، لن يتوسع.
وتذكر أيضًا تلك الدرجات يجب أن يكون من نفس نوع البيانات.
لا أستطيع تخزين السلاسل أو الكلمات في الصف ، يمكنني تخزين ints فقط.
لا يمكنني تخزين العوامات فيها هناك ، فقط مخزن ints.
شكرًا لك.