30 جرام - كتاب المهارات الرقمية - الصف 8 - الفصل 1 - المملكة العربية السعودية

الكتاب: كتاب المهارات الرقمية - الصف 8 - الفصل 1 | المادة: المهارات الرقمية | المرحلة: الصف 8 | الفصل الدراسي: 1

الدولة: المملكة العربية السعودية | المنهج: المنهج السعودي - وزارة التعليم

الدرس: 30 جرام

📚 معلومات الصفحة

الكتاب: كتاب المهارات الرقمية - الصف 8 - الفصل 1 | المادة: المهارات الرقمية | المرحلة: الصف 8 | الفصل الدراسي: 1

الدولة: المملكة العربية السعودية | المنهج: المنهج السعودي - وزارة التعليم

نوع المحتوى: درس تعليمي

📝 ملخص الصفحة

📚 أتمتة تغيير قيم الخلايا في إكسل

المفاهيم الأساسية

أتمتة المهام: استخدام برنامج (مثل كود بايثون) لإجراء تغييرات على مجموعة كبيرة من البيانات في جدول إكسل تلقائيًا، مما يوفر وقتًا وجهدًا كبيرًا مقارنة بالتغيير اليدوي لكل خلية.

خريطة المفاهيم

```markmap

استخدام بايثون مع إكسل

الهدف

أتمتة المهام المتكررة

إجراء العمليات الحسابية المعقدة بشكل أسرع

الأداة: مكتبة أوبن بيكسل (openpyxl)

وظائفها

  • قراءة بيانات إكسل
  • كتابة بيانات إكسل
  • إجراء الحسابات الرياضية
  • إنشاء الرسوم والمخططات البيانية

خطوات تثبيتها في PyCharm

  • فتح نافذة "Packages" (الحزم)
  • البحث عن "openpyxl"
  • اختيار المكتبة والضغط على "Install" (تثبيت)
  • انتظار رسالة اكتمال التثبيت

الخطوات الأولى بعد التثبيت

استيراد المكتبة

  • استخدام الأمر: `import openpyxl`

العمل مع دفاتر العمل

#### تحميل دفتر عمل موجود

  • استخدام دالة: `load_workbook()`
  • يجب وضع الملف في نفس مجلد الكود أو استخدام المسار المطلق
#### التعرف على أوراق العمل

  • استخدام السمة: `sheetnames` لمعرفة أسماء الأوراق

معرفة أبعاد الورقة

سمة الصف الأقصى (max_row attribute)

  • تُستخدم لمعرفة عدد الصفوف الموجودة في الورقة

سمة العمود الأقصى (max_column attribute)

  • تُستخدم لمعرفة عدد الأعمدة الموجودة في الورقة

الوصول إلى الخلايا

خصائص الخلية الرئيسية

  • موقعها في الملف
  • قيمتها

طرق الوصول

  • الوصول إلى خلية محددة (مثل `sheet_obj["A1"]`)
  • الوصول إلى نطاق من الخلايا (مثل `sheet_obj["B1":"B5"]`)

الوصول إلى قيم الخلايا

الوصول إلى قيمة خلية واحدة

  • تحديد موقع الخلية (مثال: "C3")
  • استدعاء سمة `.value` (مثال: `cell.value`)

الوصول إلى قيمة أكثر من خلية واحدة

  • استخدام الدالتان `iter_rows` و `iter_cols`
  • لتجنب البحث اليدوي الطويل والمعرض للخطأ

دالة iter_rows

الغرض

  • الحصول على جميع القيم لصف أو أكثر في ورقة عمل إكسل

الصيغة

  • iter\_rows (min\_row=None, max\_row=None, min\_col=None, max\_col=None)

المعاملات (Parameters)

  • `min_row`: فهرس الصف الأول في النطاق
  • `max_row`: فهرس الصف الأخير في النطاق
  • `min_col`: فهرس العمود الأول في النطاق
  • `max_col`: فهرس العمود الأخير في النطاق

ملاحظة

  • إذا لم تحدد الفهرس، يبدأ النطاق من الخلية الأولى "A1"

مثال تطبيقي

  • للحصول على جميع الحقائق الغذائية للحليب من الصف 3 والأعمدة من 3 إلى 11

دالة iter_cols

الغرض

  • الحصول على جميع القيم لعمود أو أكثر في ورقة عمل إكسل

الصيغة

  • iter\_cols (min\_col=None, max\_col=None, min\_row=None, max\_row=None)

المعاملات (Parameters)

  • `min_col`: فهرس العمود الأصغر (الأول)
  • `max_col`: فهرس العمود الأكبر (الأخير)
  • `min_row`: فهرس الصف الأصغر (الأول)
  • `max_row`: فهرس الصف الأكبر (الأخير)

ملاحظة

  • إذا لم تحدد الفهرس، يبدأ النطاق من الخلية الأولى "A1"

مثال تطبيقي

  • للحصول على عدد السعرات الحرارية (kCal) لجميع المكونات في ورقة العمل
  • استخراج البيانات من العمود 3، الصفوف من 3 إلى 12

كتابة القيم

الغرض

  • تغيير قيمة خلية موجودة أو إضافة قيمة في خلية فارغة

الطريقة

  • استخدام دالة الخلية `cell(row, column).value`

مثال تطبيقي

  • تغيير قيمة الخلية "B1" من "100 جرام" إلى "30 جرامًا"

صيغة تغيير القيم

  • عند تحويل القيم من 100 جرام إلى 30 جرام:
new\_value = old\_value * 30 / 100

ملاحظة مهمة

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

أتمتة تغيير كل الخلايا

الطريقة

  • استخدام حلقتين `for` متداخلتين
  • واحدة تمر عبر كل صف
  • والأخرى تمر عبر كل عمود

مثال تطبيقي

```python

for row in range (3,13):

for col in range (2,12):

old_value = sheet_obj.cell(row=row, column=col).value

new_value = float(old_value) * 30 / 100

sheet_obj.cell(row=row, column=col).value = new_value

```

ملاحظة مهمة

  • لأن قيم الخلايا هي من نوع كائن (object)، ستحتاج إلى تحويلها إلى عدد عشري (float) لإجراء العمليات الحسابية

الفائدة

  • تغيير جميع القيم الغذائية في وقت أقل بكثير من التغيير اليدوي
  • مفيد جدًا عند العمل مع ملفات كبيرة جدًا
```

نقاط مهمة

  • لتغيير كل خلية في نطاق محدد، استخدم حلقتين `for` متداخلتين: واحدة للصفوف وأخرى للأعمدة.
  • قيم الخلايا المسترجعة من إكسل هي كائنات (objects)، ويجب تحويلها إلى `float` قبل إجراء العمليات الحسابية عليها.
  • صيغة تحويل القيم الغذائية من 100 جرام إلى 30 جرام هي: new\_value = old\_value * 30 / 100
  • بعد إجراء التغييرات في الكود، يجب حفظ دفتر العمل باستخدام `wb.save()`.
  • هذه الأتمتة توفر وقتًا وجهدًا كبيرين، خاصة عند التعامل مع ملفات بيانات كبيرة.

📋 المحتوى المنظم

📖 محتوى تعليمي مفصّل

نوع: محتوى تعليمي

لتغيير كل خلية تغذية عليك بتطبيق الصيغة ثم حفظ دفتر العمل. للقيام بذلك، عليك استخدام حلقتين for ، وواحدة تمر عبر كل صف والأخرى تمر عبر كل عمود.

نوع: محتوى تعليمي

import openpyxl wb = openpyxl.load_workbook(filename="nutrition.xlsx") sheet_obj = wb["arabic"] for row in range (3,13): for col in range (2,12): old_value = sheet_obj.cell(row=row, column=col).value new_value = float(old_value) * 30 / 100 sheet_obj.cell(row=row, column=col).value = new_value wb.save("nutrition.xlsx")

نوع: محتوى تعليمي

لأن قيم الخلايا هي من نوع كائن (object) ، ستحتاج إلى تحويلها إلى عدد عشري (float) لإجراء العمليات الحسابية

30 جرام

نوع: محتوى تعليمي

جدول القيم الغذائية

نوع: محتوى تعليمي

كما ترى فقد تغيرت جميع القيم الغذائية، واستغرقت هذه المهمة وقتًا أقل بكثير من تغيير كل قيمة يدويًا. هذا النوع من الأتمتة مفيد للغاية خاصة إذا كنت تعمل مع ملفات كبيرة جدًا.

نوع: METADATA

وزارة التعليم Ministry of Education 2025 - 1447

نوع: METADATA

180

🔍 عناصر مرئية

A Python code snippet demonstrating how to use the openpyxl library to automate data manipulation in an Excel spreadsheet. It loads 'nutrition.xlsx', accesses the 'arabic' sheet, iterates through cells from row 3 to 12 and column 2 to 11, converts the cell value to a float, multiplies it by 30/100, and updates the cell with the new value. Finally, it saves the modified workbook.

30 جرام

A table displaying nutritional information for various food components, including water, energy, protein, fats, carbohydrates, calcium, phosphorus, iron, sodium, potassium, Vitamin A, and Vitamin C, for different food items. All values are presented for a 30-gram serving.

📄 النص الكامل للصفحة

لتغيير كل خلية تغذية عليك بتطبيق الصيغة ثم حفظ دفتر العمل. للقيام بذلك، عليك استخدام حلقتين for ، وواحدة تمر عبر كل صف والأخرى تمر عبر كل عمود. import openpyxl wb = openpyxl.load_workbook(filename="nutrition.xlsx") sheet_obj = wb["arabic"] for row in range (3,13): for col in range (2,12): old_value = sheet_obj.cell(row=row, column=col).value new_value = float(old_value) * 30 / 100 sheet_obj.cell(row=row, column=col).value = new_value wb.save("nutrition.xlsx") لأن قيم الخلايا هي من نوع كائن (object) ، ستحتاج إلى تحويلها إلى عدد عشري (float) لإجراء العمليات الحسابية --- SECTION: 30 جرام --- جدول القيم الغذائية كما ترى فقد تغيرت جميع القيم الغذائية، واستغرقت هذه المهمة وقتًا أقل بكثير من تغيير كل قيمة يدويًا. هذا النوع من الأتمتة مفيد للغاية خاصة إذا كنت تعمل مع ملفات كبيرة جدًا. وزارة التعليم Ministry of Education 2025 - 1447 180 --- VISUAL CONTEXT --- **CODE_SNIPPET**: Untitled Description: A Python code snippet demonstrating how to use the openpyxl library to automate data manipulation in an Excel spreadsheet. It loads 'nutrition.xlsx', accesses the 'arabic' sheet, iterates through cells from row 3 to 12 and column 2 to 11, converts the cell value to a float, multiplies it by 30/100, and updates the cell with the new value. Finally, it saves the modified workbook. Context: Illustrates programmatic data transformation, specifically converting values to 30% of their original amount, highlighting the efficiency of automation for large datasets. **TABLE**: 30 جرام Description: A table displaying nutritional information for various food components, including water, energy, protein, fats, carbohydrates, calcium, phosphorus, iron, sodium, potassium, Vitamin A, and Vitamin C, for different food items. All values are presented for a 30-gram serving. Table Structure: Headers: مكونات | الماء جرام | الطاقة سعر حراري | البروتين جرام | الدهون جرام | الكربوهيدرات جرام | الكالسيوم (Ca) مليجرام | الفسفور (P) مليجرام | الحديد (Fe) مليجرام | الصوديوم (Na) مليجرام | البوتاسيوم (K) مليجرام | فيتامين (A) وحدة دولية | فيتامين (C) مليجرام Rows: Row 1: الحليب | 26.43 | 18.3 | 0.981 | 0.975 | 1.389 | 36.9 | 30.3 | 0 | 11.4 | 45 | 0 | 0 Row 2: البيض | 22.74 | 42.9 | 3.72 | 2.595 | 0.288 | 14.4 | 55.2 | 1 | 38.7 | 39.6 | 0.282 | 0 Row 3: الدجاج | 20.97 | 44.7 | 7.17 | 1.569 | 0 | 3.6 | 55.2 | 0.282 | 35.1 | 71.7 | 0.717 | 0.024 Row 4: برجر بالجبن | 14.4 | 78.3 | 3.54 | 7.17 | 7.17 | 71.7 | 60.3 | 0.738 | 152.4 | 63.3 | 0.684 | 0.006 Row 5: التفاح | 25.08 | 19.5 | 0.045 | 0.048 | 4.68 | 1.8 | 3 | 0.006 | 0.3 | 31.2 | 0.279 | 0.006 Row 6: الكعك | 2.655 | 129 | 1.737 | 4.11 | 20.88 | 8.7 | 33.3 | 0.684 | 94.2 | 73.5 | 0.279 | 0.006 Row 7: منتجات بالشوكولاتة | 16.71 | 64.8 | 1.14 | 3.3 | 8.46 | 32.7 | 32.1 | 0.279 | 22.8 | 74.7 | 0.285 | 0.006 Row 8: حليب بالشوكولاتة | 0.45 | 160.5 | 2.295 | 8.91 | 17.82 | 56.7 | 62.4 | 0.705 | 23.7 | 111.6 | 0.705 | 0.006 Row 9: الخس | 28.41 | 6 | 0.372 | 0.078 | 0.972 | 10.5 | 9 | 0.285 | 0.3 | 75.9 | 0.279 | 0.006 Row 10: الموز | 22.47 | 26.7 | 0.327 | 0.099 | 6.84 | 1.5 | 6.6 | 0.078 | 0.3 | 107.4 | 0.303 | 0.006 Context: This table provides raw data for nutritional components of various food items, serving as input for data processing exercises, such as the Python script shown on the page.

🎴 بطاقات تعليمية للمراجعة

عدد البطاقات: 4 بطاقة لهذه الصفحة

ما الغرض الرئيسي من استخدام حلقتين for متداخلتين في الكود البرمجي المذكور لتعديل جدول بيانات Excel؟

  • أ) لتحميل ملف Excel وحفظه فقط دون تعديل.
  • ب) لطباعة قيم جميع الخلايا في الورقة.
  • ج) لتكرار المرور عبر نطاق محدد من الصفوف والأعمدة لتعديل قيم الخلايا تلقائيًا.
  • د) لإنشاء رسم بياني بناءً على البيانات الموجودة في الجدول.

الإجابة الصحيحة: c

الإجابة: لتكرار المرور عبر نطاق محدد من الصفوف والأعمدة لتعديل قيم الخلايا تلقائيًا.

الشرح: 1. الحلقة الخارجية (for row) تمر عبر صفوف محددة (من 3 إلى 12). 2. الحلقة الداخلية (for col) تمر عبر أعمدة محددة (من 2 إلى 11). 3. هذا التكامل يسمح بالوصول إلى كل خلية في النطاق المحدد (صف × عمود) وتطبيق العملية الحسابية عليها.

تلميح: فكر في كيفية معالجة البيانات المنظمة في جداول.

التصنيف: مفهوم جوهري | المستوى: متوسط

في الكود البرمجي الموضح، ما العملية الحسابية التي يتم تطبيقها على قيمة كل خلية داخل النطاق المحدد؟

  • أ) جمع 30 إلى القيمة الأصلية.
  • ب) طرح 30% من القيمة الأصلية.
  • ج) ضرب القيمة الأصلية في 30 ثم قسمة الناتج على 100 (أو إيجاد 30% من القيمة).
  • د) قسمة القيمة الأصلية على 30.

الإجابة الصحيحة: c

الإجابة: ضرب القيمة الأصلية في 30 ثم قسمة الناتج على 100 (أو إيجاد 30% من القيمة).

الشرح: 1. يتم قراءة القيمة القديمة للخلية (old_value). 2. يتم تحويلها إلى رقم عشري (float). 3. يتم ضرب هذه القيمة في 30. 4. ثم قسمة الناتج على 100. 5. الصيغة الرياضية: new_value = old_value × (30 ÷ 100).

تلميح: انظر إلى السطر الذي يحسب new_value.

التصنيف: صيغة/خطوات | المستوى: سهل

لماذا يتم استخدام الدالة float() في الكود البرمجي قبل إجراء العملية الحسابية؟

  • أ) لتقريب الرقم إلى أقرب عدد صحيح.
  • ب) لتحويل قيمة الخلية من نوع كائن (object) إلى عدد عشري يسمح بإجراء العمليات الحسابية عليه.
  • ج) لعرض القيمة بعدد محدد من المنازل العشرية.
  • د) لتحويل الرقم من النظام العشري إلى النظام الثنائي.

الإجابة الصحيحة: b

الإجابة: لتحويل قيمة الخلية من نوع كائن (object) إلى عدد عشري يسمح بإجراء العمليات الحسابية عليه.

الشرح: 1. قيم الخلايا في Excel عند قراءتها عبر openpyxl قد تكون مخزنة كنوع بيانات عام (object). 2. الدالة float() تحول هذه القيمة إلى رقم عشري (مثل 10.5). 3. بدون هذه التحويل، قد تفشل عملية الضرب أو القسمة.

تلميح: تذكر أن البيانات المستوردة من ملف قد لا تكون أرقامًا جاهزة للحساب.

التصنيف: مفهوم جوهري | المستوى: متوسط

ما الميزة الرئيسية لاستخدام البرمجة النصية (Scripting) كما في المثال، مقارنة بالتعديل اليدوي للبيانات في جدول كبير؟

  • أ) جعل البيانات أكثر جمالاً من الناحية البصرية.
  • ب) توفير الوقت والجهد وتقليل الأخطاء البشرية، خاصة عند العمل مع ملفات كبيرة تحتوي على العديد من الخلايا.
  • ج) تشفير البيانات وحمايتها من الوصول غير المصرح به.
  • د) ربط الجدول مباشرة بقاعدة بيانات على الإنترنت.

الإجابة الصحيحة: b

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

الشرح: 1. التعديل اليدوي لكل خلية في جدول كبير يستغرق وقتًا طويلاً. 2. البرمجة النصية تنفذ المهمة تلقائيًا في ثوانٍ. 3. تقل احتمالية حدوث أخطاء في النسخ أو الحساب. 4. يمكن إعادة استخدام الكود لنفس المهمة على ملفات أخرى.

تلميح: فكر في كفاءة العمل ودقته.

التصنيف: ملخص | المستوى: سهل