اذهب إلى المحتوى

البحث في الموقع

المحتوى عن 'table'.

  • ابحث بالكلمات المفتاحية

    أضف وسومًا وافصل بينها بفواصل ","
  • ابحث باسم الكاتب

نوع المحتوى


التصنيفات

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

التصنيفات

  • مقالات برمجة عامة
  • مقالات برمجة متقدمة
  • PHP
    • Laravel
    • ووردبريس
  • جافاسكربت
    • لغة TypeScript
    • Node.js
    • React
    • Vue.js
    • Angular
    • jQuery
    • Cordova
  • HTML
  • CSS
    • Sass
    • إطار عمل Bootstrap
  • SQL
  • لغة C#‎
    • ‎.NET
    • منصة Xamarin
  • لغة C++‎
  • لغة C
  • بايثون
    • Flask
    • Django
  • لغة روبي
    • إطار العمل Ruby on Rails
  • لغة Go
  • لغة جافا
  • لغة Kotlin
  • لغة Rust
  • برمجة أندرويد
  • لغة R
  • الذكاء الاصطناعي
  • صناعة الألعاب
  • سير العمل
    • Git
  • الأنظمة والأنظمة المدمجة

التصنيفات

  • تصميم تجربة المستخدم UX
  • تصميم واجهة المستخدم UI
  • الرسوميات
    • إنكسكيب
    • أدوبي إليستريتور
  • التصميم الجرافيكي
    • أدوبي فوتوشوب
    • أدوبي إن ديزاين
    • جيمب GIMP
    • كريتا Krita
  • التصميم ثلاثي الأبعاد
    • 3Ds Max
    • Blender
  • نصائح وإرشادات
  • مقالات تصميم عامة

التصنيفات

  • مقالات DevOps عامة
  • خوادم
    • الويب HTTP
    • البريد الإلكتروني
    • قواعد البيانات
    • DNS
    • Samba
  • الحوسبة السحابية
    • Docker
  • إدارة الإعدادات والنشر
    • Chef
    • Puppet
    • Ansible
  • لينكس
    • ريدهات (Red Hat)
  • خواديم ويندوز
  • FreeBSD
  • حماية
    • الجدران النارية
    • VPN
    • SSH
  • شبكات
    • سيسكو (Cisco)

التصنيفات

  • التسويق بالأداء
    • أدوات تحليل الزوار
  • تهيئة محركات البحث SEO
  • الشبكات الاجتماعية
  • التسويق بالبريد الالكتروني
  • التسويق الضمني
  • استسراع النمو
  • المبيعات
  • تجارب ونصائح
  • مبادئ علم التسويق

التصنيفات

  • مقالات عمل حر عامة
  • إدارة مالية
  • الإنتاجية
  • تجارب
  • مشاريع جانبية
  • التعامل مع العملاء
  • الحفاظ على الصحة
  • التسويق الذاتي
  • العمل الحر المهني
    • العمل بالترجمة
    • العمل كمساعد افتراضي
    • العمل بكتابة المحتوى

التصنيفات

  • الإنتاجية وسير العمل
    • مايكروسوفت أوفيس
    • ليبر أوفيس
    • جوجل درايف
    • شيربوينت
    • Evernote
    • Trello
  • تطبيقات الويب
    • ووردبريس
    • ماجنتو
    • بريستاشوب
    • أوبن كارت
    • دروبال
  • الترجمة بمساعدة الحاسوب
    • omegaT
    • memoQ
    • Trados
    • Memsource
  • برامج تخطيط موارد المؤسسات ERP
    • تطبيقات أودو odoo
  • أنظمة تشغيل الحواسيب والهواتف
    • ويندوز
    • لينكس
  • مقالات عامة

التصنيفات

  • آخر التحديثات

أسئلة وأجوبة

  • الأقسام
    • أسئلة البرمجة
    • أسئلة ريادة الأعمال
    • أسئلة العمل الحر
    • أسئلة التسويق والمبيعات
    • أسئلة التصميم
    • أسئلة DevOps
    • أسئلة البرامج والتطبيقات

التصنيفات

  • كتب ريادة الأعمال
  • كتب العمل الحر
  • كتب تسويق ومبيعات
  • كتب برمجة
  • كتب تصميم
  • كتب DevOps

ابحث في

ابحث عن


تاريخ الإنشاء

  • بداية

    نهاية


آخر تحديث

  • بداية

    نهاية


رشح النتائج حسب

تاريخ الانضمام

  • بداية

    نهاية


المجموعة


النبذة الشخصية

تم العثور على 5 نتائج

  1. تعتبر السيرة الذاتية من أهم الأدوات عند التقدم للحصول على وظيفة ولذلك يجب أن تكون جيدة الصياغة وتعرض مؤهلاتك بصورة ذكية. يتيح مايكروسوفت وورد إمكانية إنشاء سيرة ذاتية باستخدام القوالب الجاهزة أو إنشائها يدويا من الصفر. ولمعرفة كيفية إنشاء سيرتك الذاتية بإحدى الطريقتين، بالإضافة إلى بعض الأدوات والنصائح لتحسينها تابع معنا هذا الدرس. إنشاء السيرة الذاتية باستخدام القوالب بالإمكان الوصول إلى قوالب السيرة الذاتية مباشرة من نافذة بداية وورد: في حقل البحث سنكتب Resume ونضغط Enter لعرض القوالب الخاصة بالسير الذاتية. وهذه القوالب مصنفة بفئات مختلفة. أن كنت تستخدم إصدارات أقدم من وورد 2013 يمكنك الوصول إلى هذه القوالب من: ملف File > جديد New ثم البحث في حقل البحث الخاص بالقوالب. حقوق الصورة ننقر على أحد المصغرات لعرض معاينة للقالب، ونستخدم الأسهم للتنقل بين القوالب. عندما نختار المناسب ننقر إنشاء Create: بعد تنزيل القالب وفتحه في وورد سنبدأ بتحرير القالب وكتابة المعلومات الشخصية، الهدف المهني، المهارات، الخبرات، إلخ. يحتوي القالب على إرشادات بسيطة تخبرنا ما الذي يجب كتابته في كل حقل: بإمكاننا نسخ ولصق النصوص من نسخة قديمة من السيرة الذاتية إن وجدت. عند لصق النصوص يمكننا تنسيقها من خانة الأنماط لتتلاءم مع تنسيقات القالب. أو استخدام خيارات اللصق عن طريق زر Ctrl. نستخدم الأمر Keep Text Only إذا كنا نرغب في اللصق دون تنسيق: أو نستخدم خيار Merge Formatting لدمج التنسيقات، أي جعل حجم ونوع الخط متناسقا مع القالب، والاحتفاظ بالتنسيقات الأخرى للنص الأصلي كالنصوص العريضة والمائلة، إلخ: يجب أن نأخذ في الاعتبار عند إنشاء السيرة الذاتية أن نكون محددين جدا في فقرة الهدف المهني Objective. إذ يجب أن يكون الهدف مختلفا باختلاف الشركة التي نقدم للحصول على وظيفة فيها. لا تستخدم نفس الهدف المهني لجميع الشركات. تحتوي القوالب، وخصوصا قوالب السير الذاتية، على حقول بتنسيقات معينة، وتحتوي على نصوص إرشادية، تسمى هذه الحقول عناصر التحكم بالمحتوى Content Controls. كمثال على هذه العناصر الحقل المؤشر في الصورة أدناه: لدينا خيار استخدام هذه العناصر أو إزالتها بالنقر بزر الفأرة الأيمن عليها واختيار Remove Content Control: يمكننا التعديل على تنسيق وتصميم القالب من تبويب تصميم Design. يمكننا اختيار التنسيق الذي يناسبنا من أحجام النصوص، الألوان أو المسافات بين الأسطر والفقرات، وغيرها، وذلك معرض تنسيقات المستند Document Formatting: أو من معرض نسق Themes: استخدام الجداول في إنشاء السيرة الذاتية يفضل البعض عدم استخدام القوالب لإنشاء السيرة الذاتية، ويعتمدون على مفتاح tab أو المسطرة في تنسيق المسافات بين عناوين الأقسام وما يقابلها. لكن هناك طريقة أسهل وأسرع وهي استخدام الجداول. ولفعل ذلك سنقوم بالخطوات التالية: سنقوم بفتح مستندًا جديدًا وكتابة المعلومات الشخصية في بداية الصفحة، ثم سنقوم بإدراج جدول Table من تبويب إدراج Insert: سنقوم بإدراج عمودين، أحدهما لعنوان القسم، والآخر لما يقابل تلك الأقسام من معلومات. أما عدد الصفوف فيعتمد على عدد الأقسام التي تريد إضافاتها، أي صف للهدف المهني، صف للخبرات، صف للمهارات، إلخ. بعدها سنقوم بكتابة المحتويات، وسنستخدم خلية واحدة لكل قسم، أي سنكتب جميع المهارات أو الخبرات السابقة في خلية واحدة من الجدول مهما كان عددها: الخطوة التالية بعد الانتهاء من الكتابة هي تنسيق الجدول. سنقوم بتقليل عرض العمود الأول لإزالة المساحة الزائدة والاستفادة منها في زيادة عرض العمود الثاني. سنضع المؤشر على الحد بين العمود إلى أن يتغير شكله إلى متجهين، ثم سنقوم بالسحب إلى جهة اليسار: ثم سنقوم بإضافة عمود وسطي كحاجز رفيع يفصل بين العمودين، بالنقر على علامة (+) التي تظهر عن وضع المؤشر على الحد بين العمودين وهي طريقة سريعة لإدراج أعمدة (أو صفوف) في إصدار 2013 من البرنامج: أو بالنقر داخل أحد خلايا العمود الأول، والتأشير فوق إدراج Insert واختيار إدراج عمود إلى اليمين Insert Column to Right: وسنقوم بتقليل عرض هذا العمود لأننا لا نريد من الحاجز أن يكون كبيرًا جدًا: بالتأكيد لا نريد إظهار حدود الجدول في السيرة الذاتية لذلك سنقوم بإزالتها. سنحدد جميع خلايا الجدول أولا من أيقونة (+) في حافة الجدول: ثم سنذهب إلى تبويب تصميم Design السياقي الخاص بالجدول، ونختار بلا حدود No Borders من أمر حدود Borders: ما زال بإمكاننا تعديل أبعاد الجدول حتى بعد إزالة الحدود. يمكننا استخدام خطوط الشبكة Gridlines. هذه الخطوط لا تظهر عند الطباعة لكنها تساعدنا على معرفة أماكن حدود أعمدة وصفوف الجدول. سنقوم بتحديد الجدول أولا من أيقونة (+) كما في الخطوة السابقة، ومن أمر حدود سنختار عرض خطوط الشبكة View Gridlines: انتهينا تقريبا من إنشاء السيرة الذاتية. ما تبقى هو تنسيق النصوص وأحجامها، أو إضافة عناصر تصميمية في رأس Header الورقة. نصائح وأدوات لتحسين السيرة الذاتية اليوم أصبح أغلب الباحثين عن عمل يقدمون سيرهم الذاتية عبر الإنترنت. وتخضع تلك السير الذاتية للبحث عن كلمات معينة بواسطة أنظمة تتبع تستخدم من قبل أصحاب العمل. الأمر أشبه بتهيئة محركات البحث SEO، إذ يجب أن تتضمن سيرتك الذاتية الكلمات التي تجعل العثور عليها سهلا عند البحث. تسمى هذه الكلمات بالكلمات المفتاحية Keywords أو الكلمات الفعالة Power Words. تحتاج إلى سيرة ذاتية احترافية؟ استعن بأفضل خبراء التوظيف في الوطن العربي لمساعدتك على إنشاء سيرة ذاتية احترافية بتصميم عصري وجذاب أنشئ سيرتك الذاتية الآن تختلف هذه الكلمات باختلاف الوظيفة التي تُقدم إليها ويجب عليك أن تذكر الكلمات المناسبة ذات الصلة بالعمل الذي تبحث عنه والتي تجذب صاحب العمل. ابحث عن الكلمات المستخدمة في الوصف الوظيفي وضمنها في سيرتك الذاتية. فإذا كانت الوظيفة تتطلب خبرة في برامج التصميم الجرافيكي من ضمنها Photoshop ،Illustrator ،After Effects ...إلخ، تحدث عن هذه البرامج ضمن خبراتك أو اذكرها ضمن مهاراتك، لكن بالطبع إذا كنت مؤهلا لذلك. وإذا كنت تقدم طلبا للعمل في شركة هواتف، تحدث عن الهواتف بالتحديد وليس الأجهزة الذكية بصورة عامة. كن محددا. من الأمور الأخرى التي يجب مراعاتها في السيرة الذاتية هو تجنب تكرار الكلمات. في بعض الأحيان تكرر الكثير من الكلمات دون أن تدرك ذلك. في المثال أدناه هناك العديد من الكلمات المكررة، "expert specialist"، "high experience"... ما سنفعله هو أننا سنقوم بالبحث عن مرادفات لتلك الكلمات واستبدالها. أولا سنقوم بوضع المؤشر فوق إحدى الكلمات، ثم ننقر بزر الفأرة الأيمن ونؤشر فوق مرادفات Synonyms، وسنختار واحدة من المرادفات المقترحة: وإذا لم نجد الكلمة التي تناسبنا سنبحث في Thesaurus الذي يوفر المزيد من المرادفات: وكذلك هناك ما يسمى بصفحة المقدمة أو الخطاب المرفق مع السيرة الذاتية Cover Letter. وهي عبارة عن صفحة تُرفق في بداية السيرة الذاتية توضح بشكل مختصر وسريع الهدف من الوظيفة والمؤهلات التي تجعلك مناسبا للوظيفة التي تقدم إليها. يجب أن تحرص على صياغة صفحة المقدمة بطريقة ذكية وجذابة، فقد تكون هي فرصتك للحصول على الوظيفة. وإذا لم تكتب صفحة مقدمة من قبل، أو لم تكن معتادا على كتابتها يمكنك استخدام قوالب وورد. إذ تتوفر عدة قوالب بالتنسيق الرسمي، يمكنك تنزيلها وتحريرها. من صفحة البداية وفي حقل البحث، اكتب resume cover letter واختر أحد القوالب. قم بتنزيل القالب وابدأ بتحريره حسب الإرشادات في حقول التحكم بالمحتوى. بهذا تكون قد تعرفت على كيفية إنشاء سيرتك الذاتية، والتي إن كنت منشغلًا عن إتمامها كما يجب، أو كنت بحاجة لواحدة ذات احترافية عالية، فيمكنك استعمال خدمة كتابة السير الذاتية المقدمة من منصة بعيد، التي تمنحك سيرةً ذاتيةً احترافيةً مقدمةً من طرف خبراء في التوظيف، وهذا بتصاميم مميزة تستهدف مجالات العمل المختلفة؛ إلى جانب بعض المزايا الإضافية التي ستفيدك أكثر لرفع حظوظك بالتوظيف، وسنوضح بعضها في الآتي: الحصول على استشارة فردية مع أحد خبراء التوظيف. الحصول على السيرة الذاتية بنسختين عربية وإنجليزية حسب الباقة التي ستختارها، وبالنموذج الذي تراه مناسبًا لك. إجراء مقابلة توظيف تجريبية يقودها أحد اخصائيي التوظيف، لتكون بمثابة تدريب لك ليوم مقابلة العمل الفعلية مع التطرق إلى أهم الأسئلة التي قد تُطرح عليك فعليًا، وبطبيعة الحال ستحصل على بعض التعقيبات والتوجيهات التي ستساهم في رفع جاهزيتك والتحضير لمقابلات العمل. الحصول على مساعدة لإعداد ملف مهني احترافي على بعيد وإعداد ملفاتك الشخصية على مستقل وخمسات للتعريف بخبراتك ومهاراتك الشخصية. وإن كنت بحاجة لفهم أوسع حول الأمور قبل حصولك على باقة من الباقات المتاحة، فيمكنك التواصل مع الدعم الفني للمنصة لإجابتك عن استفساراتك.
  2. في هذا الدرس من سلسلة تعلّم CSS، سنشرح استخدام المُحدّدات المُتقدّمة، وبعض طرق تنسيق الجداول؛ وسنتدرّب على ذلك بإنشاء مستند جديد يحوي جدولًا، ثمّ نُرفقه بورقة أنماط. فهرس السلسلة: مدخل إلى أوراق الأنماط المتتالية (CSS). آلية عمل تعليمات CSS داخل المتصفحات. المحددات (Selectors) في CSS. كيفية كتابة تعليمات CSS يسهل قراءتها. تنسيق نصوص صفحات الويب باستخدام CSS. التعامل مع الألوان في CSS. إضافة محتوى إلى صفحة ويب باستخدام CSS. تنسيق القوائم (Lists) في CSS. تعرف على الصناديق (Boxes) في CSS. رصف العناصر (Layout) في CSS. الجداول (Tables) في CSS. (هذا الدرس) التعامل مع أجهزة العرض المختلفة والمطبوعات في CSS. الجداول الجدول هو طريقة لتنظيم المعلومات في شبكة مستطيلة، قد تكون بعض الجداول مُعقّدة، وعندها قد تختلف النّتيجة المعروضة باختلاف المتصفّحات. عندما تصمّم مستنداتك، استخدم الجداول للتّعبير عن العلاقة بين مجموعة من المعلومات، وعندها لن يؤثّر كثيرًا الاختلاف البسيط بين المتصفّحات في عرض هذه المعلومات، لأنّ معناها ما يزال واضحًا. لا تستخدم الجداول بطرقٍ غير اعتياديّة للوصول إلى تخطيط مرئيّ للمستند، فهذا الهدف يمكن تحقيقه بصورة أفضل بالوسائل الّتي شرحناها في درس رصف العناصر. هيكل الجداول تُعرض كل معلومة في الجدول ضمن خليّة (cell). نُسمّي مجموعة الخلايا الواقعة على خطّ أفقيّ واحد في الصّفحة صفًّا (row). يمكن تجميع بعض الصّفوف في الجداول. نُسمّي المجموعة الأولى المُميّزة من الصّفوف بترويسة الجدول (table header)، وبالمثل تُسمّى المجموعة الأخيرة المُميّزة من الصّفوف تذييل الجدول (table footer). تُسمّى بقيّة الصّفوف متن الجدول (body)، ويمكن تجميعها هي الأخرى في مجموعات. نُسمّي مجموعة الخلايا الواقعة على خطّ شاقوليّ واحد في الصّفحة عمودًا (column)، ولكنّ التّعامل مع الأعمدة في CSS غير شائع. مثال ألقِ نظرة على الجدول المُدرج تحت عنوان التّحديد تبعًا للعلاقات بين العناصر في درس المُحدّدات، والمؤلّف من 10 خلايا موزّعة في 5 صفوف وعمودين، وفيه ترويسة، ومتن، ولكنّه بلا تذييل. يُغطّي هذا الدّرس الجداول البسيطة، والّتي يكون عرضها متماثلًا بين المتصفّحات. نعني بالجداول البسيطة تلك الّتي تحتلّ فيها كلّ خليّة صفًّا واحدًا وعمودًا واحدًا، على أنّه يمكن للخليّة أن تمتدّ (span) على أكثر من صفّ وعمود؛ وهذا ليس موضوع درسنا. حدود الجداول ليس للخلايا حوافّ (margins)، ولكنّ لها حدودًا (borders) وحشوات (paddings)، تكون الحدود مفصولة عن بعضها بشكل مبدئيّ بالقيمة المُعيّنة في خاصّة border-spacing على الجدول. يمكن أيضًا إزالة المسافة بالكامل بتعيين القيمة collapse للخاصّة border-collapse. مثال فيما يلي 3 جداول، للجدول على اليسار مسافة بين الحدود تساوي 0.5em، وللجدول في المنتصف مسافة تساوي صفر، وفي الأيمن عُينت القيمة collapse على الخاصّة border-collapse: التسميات التوضيحية (Captions) العنصر <caption> هو تسمية تُطبّق على كامل الجدول، وتُعرض في الحالة المبدئيّة فوق الجدول. يمكن نقل التسمية التّوضيحيّة إلى أسفل الجدول بتعيين القيمة bottom على الخاصّة caption-side، وهذه القيمة يرثها الأبناء، ويمكن لتجنّب ذلك تعيينها على الجدول نفسه أو على عنصر حاوٍ آخر. لتنسيق نصّ التّسمية، استخدم الخواصّ العاديّة لتنسيق النّصوص الّتي تعلّمناها في الدّروس السّابقة. مثال لهذا الجدول عنوان في أسفله: #demo-table > caption { caption-side: bottom; font-style: italic; text-align: right; } الخلايا الفارغة يمكن عرض الخلايا الفارغة (أي عرض حدودها وخلفيّتها) باستخدام الخاصّة empty-cells على الجدول وإسناد القيمة show إليها. يمكن أيضًا إخفاؤها تمامًا باستخدام ‎empty-cells: hide;‎، وعند ذلك فإن الخليّة تشفّ عمّا يقع تحتها من خلفيّة العنصر الأب. مثال هذه الجداول لها خلفيّة خضراء شاحبة، ولخلاياها خلفيّة رماديّة فاتحة وحدود رماديّة غامقة. في الجدول على اليسار تظهر الخليّة الفارغة، أمّا على اليمين فهي مخفيّة: تمرين: تنسيق جدول أنشئ مستندًا جديدًا سمّه doc3.html، انسخ والصق المحتوى التّالي (تأكّد من نسخه بالكامل): <!DOCTYPE html> <html> <head> <title>Sample document 3</title> <link rel="stylesheet" href="style3.css"> </head> <body> <table id="demo-table"> <caption>Oceans</caption> <thead> <tr> <th></th> <th>Area</th> <th>Mean depth</th> </tr> <tr> <th></th> <th>million km<sup>2</sup></th> <th>m</th> </tr> </thead> <tbody> <tr> <th>Arctic</th> <td>13,000</td> <td>1,200</td> </tr> <tr> <th>Atlantic</th> <td>87,000</td> <td>3,900</td> </tr> <tr> <th>Pacific</th> <td>180,000</td> <td>4,000</td> </tr> <tr> <th>Indian</th> <td>75,000</td> <td>3,900</td> </tr> <tr> <th>Southern</th> <td>20,000</td> <td>4,500</td> </tr> </tbody> <tfoot> <tr> <th>Total</th> <td>361,000</td> <td></td> </tr> <tr> <th>Mean</th> <td>72,000</td> <td>3,800</td> </tr> </tfoot> </table> </body> </html> أنشئ ورقة أنماط جديدة style3.css، وانسخ المحتوى التّالي والصقه (تأكّد من نسخه بالكامل): /*** Style for doc3.html (Tables) ***/ #demo-table { font: 100% sans-serif; background-color: #efe; border-collapse: collapse; empty-cells: show; border: 1px solid #7a7; } #demo-table > caption { text-align: left; font-weight: bold; font-size: 200%; border-bottom: .2em solid #4ca; margin-bottom: .5em; } /* basic shared rules */ #demo-table th, #demo-table td { text-align: right; padding-right: .5em; } #demo-table th { font-weight: bold; padding-left: .5em; } /* header */ #demo-table > thead > tr:first-child > th { text-align: center; color: blue; } #demo-table > thead > tr + tr > th { font-style: italic; color: gray; } /* fix size of superscript */ #demo-table sup { font-size: 75%; } /* body */ #demo-table td { background-color: #cef; padding:.5em .5em .5em 3em; } #demo-table tbody th:after { content: ":"; } /* footer */ #demo-table tfoot { font-weight: bold; } #demo-table tfoot th { color: blue; } #demo-table tfoot th:after { content: ":"; } #demo-table > tfoot td { background-color: #cee; } #demo-table > tfoot > tr:first-child td { border-top: .2em solid #7a7; } افتح المستند في المتصفّح، من المفترض أن تشاهد نتيجة كهذه: قارن القواعد في ورقة الأنماط بالجدول الّذي تُشاهده، للتأكدّ من فهمك لتأثير كلّ قاعدة. إن وجدت قاعدة لم تفهمها، احجبها (بجعلها تعليقًا) وحدّث المتصفّح لتشاهد الاختلاف. فيما يلي بعض الملاحظات الّتي تُعينك على الفهم: تقع التّسميّة التّوضيحيّة خارج الجدول. إن كنت قد ضبطت حدًا أدنى لحجم الخطوط في متصفّحك، فقد يؤثّر ذلك على الرّقم 2 في واحدة‎km2 ‎. هناك ثلاث خلايا فارغة، اثنتان منهما تشفّان عن خلفيّة الجدول، والثّالثة لها لون خلفيّة غير شافٍّ وحدّ علويّ. النقطتان بعد كل اسم محيط ":" تُضيفهما ورقة الأنماط. تمرين غيّر ورقة الأنماط ليبدو الجدول هكذا: شاهد الحل القاعدة التّالية تضيف حدودًا فقط حول عناصر <td> المحتواة ضمن <tbody> ضمن الجدول ذي المُعرّف demo_table: #demo-table tbody td { border:1px solid #7a7; } ما التالي؟ سنُراجع في الدّرس القادم والأخير كيفية التعامل مع الأجهزة المختلفة والمطبوعات في CSS. ترجمة بتصرّف للدرس Tables من سلسلة Getting started with CSS على شبكة مطوّري Mozilla.
  3. الجداول هي عبارة عن شبكة من الصفوف والأعمدة التي تُستخدم لتمثيل بيانات نصية أو رقمية، وهي من العناصر الشائعة لتنظيم البيانات وتنسيقها في المستندات. تُتاح في ميكروسوفت وود إمكانية إنشاء جداول فارغة، أو تحويل النصوص إلى جداول. وكذلك إمكانية تطبيق مختلف الأنماط والتنسيقات على الجدول. كل ذلك بخطوات سهلة جدا. إنشاء جدول جديد فارغ هناك عدة طرق لإنشاء جدول فارغ، وجميعها يمكن الوصول إليها عبر أمر Table في تبويب إدراج Insert: الطريقة الأولى، وهي الطريقة السريعة والمختصرة، بتمرير مؤشر الفأرة فوق الجدول المصغّر لتحديد حجم الجدول (عدد الصفوف وعدد الأعمدة)، وسيتم تمييز الحقول باللون البرتقالي، وفي نفس الوقت تُعرض معاينة مباشرة للجدول على الصفحة. عندما تحدد حجم الجدول المطلوب انقر بزر الفأرة الأيسر لإدراجه. أقصى عدد للأعمدة × الصفوف التي يمكن إنشاءها بهذه الطريقة هو 10 × 8. إذا زاد عدد الأعمدة عن 10، أو عدد الصفوف عن 8، استخدم الطريقة الثانية، وهي بواسطة خيار إدراج جدول Insert Table: في مربع الحوار Insert Table قم بإدخال عدد الصفوف وعدد الأعمدة المرغوب. يمكنك أيضًا التحكم في أسلوب احتواء بيانات الجدول. قم بتأشير الخيار Fixed Column Width إذا رغبت في أن يكون عرض جميع الأعمدة ثابتًا، أو الخيار AutoFit to contents إذا كانت محتويات الجدول بأحجام مختلفة وترغب في مطابقة عرض كل عمود مع حجم محتواه. أو الخيار AutoFit to window لجعل عرض الجدول ككل مطابقًا لعرض الصفحة (أي من الهامش إلى الهامش). وإذا رغبت في أن يقوم البرنامج بتذكر الأبعاد التي قمت بإدخالها في كل مرة تنشئ فيها جدولًا جديدًا، قم بتأشير الخيار Remember dimensions for new tables: الطريقة الثالثة هي باستخدام خيار رسم جدول Draw Table: بواسطة هذا الخيار يمكنك تصميم جدولك الخاص برسم حدود الصفوف والأعمدة يدويًا. سيتحول شكل المؤشر إلى قلم، انقر على الموضع الذي تريد بدء رسم الجدول منه، ثم اسحب الفأرة إلى الموضع المقابل. بعد ذلك ابدأ بتقسم المربع إلى أعمدة وصفوف وبالتخطيط المرغوب: من تبويب تصميم Design السياقي، وبالتحديد من مجموعة حدود Borders، يمكنك اختيار لون الحدود التي ترسمها من قائمة لون القلم Pen Color: تستطيع رسم حدود جديدة باللون المخصص، أو تمرير القلم مجددًا فوق الحدود المرسومة لتغيير لونها إلى اللون الذي اخترته: وكذلك يمكنك تغيير سمك الحدود ونمطها من قائمتي Line Style و Line Weight. وبنفس الطريقة ارسم حدودًا جديدة أو مرر القلم فوق الحدود المرسومة مسبقًا لتغيير سمكها أو نمطها: لإلغاء تفعيل أداة الرسم اضغط على مفتاح ESC من لوحة المفاتيح، أو انقر على أمر Draw Table من تبويب تخطيط السياقي Layout: و لِمَسح حد (أو مجموعة حدود) من الجدول، انقر على أداة الممحاة Eraser من تبويب Layout لتفعيلها، ثم انقر على الحد الذي تريد مسحه: لإدخال نصوص أو محتوى آخر، كالصور أو الأشكال، في خلايا الجدول، ضع مؤشر الكتابة داخل الخلية وابدأ بالكتابة (أو الإدراج). للتنقّل بين الخلايا استخدم مفاتيح الأسهم من لوحة المفاتيح. كما يمكنك استخدام المفتاح Tab للانتقال إلى الخلية التالية. يجب أن تأخذ في الاعتبار أنّه لا يمكن استخدام المفتاح Enter لإضافة صف جديد، إذ أنّه سيقوم بإضافة سطر جديد داخل الصف. بدلًا من ذلك ضع مؤشر الكتابة في آخر خلية في آخر صف ثم اضغط على المفتاح Tab لإضافة صف جديد تحت آخر صف في الجدول (سنفصل الشرح أكثر حول إضافة صفوف وأعمدة جديدة في درس آخر -إن شاء الله-. إدراج جدول بيانات اكسل داخل مستند وورد إذا كنت ترغب في استخدام وورد في العمل على جدول بخصائص جداول اكسل، قم بإدراج Excel Spreadsheet من قائمة Table: بإمكانك تغيير حجم الجدول بعد إدراجه باستخدام المقابض handles عند حدوده. وستلاحظ تغيّر شكل نافذة البرنامج لتحتوي التبويبات الإضافية (تبويب صيغ Formulas وتبويب بيانات Data) الخاصة ببرنامج اكسل، بالإضافة إلى العناصر الأخرى المكونة لمصنفات اكسل مثل شريط الصيغة وحقل الاسم: بإمكانك استخدام خصائص وأوامر أكسل كإدراج الصيغ، التنسيق الشرطي للخلايا، التعبئة التلقائية...إلخ. للخروج من هذه النافذة انقر على أية منطقة فارغة ضمن الصفحة. ولفتح نافذة اكسل داخل نافذة وورد مجددًا، حدد الجدول ثم انقر عليه بشكل مزدوج بزر الفأرة الأيسر. إدراج الجداول السريعة الجداول السريعة Quick Tables هي مجموعة من الجداول المنسقة والمجهّزة مسبقًا على هيئة قوالب قابلة للتحرير. لإدراج جدول سريع اذهب إلى تبويب: Insert > Table > Quick Tables اختر الجدول المرغوب من المعرض ثم انقر عليه لإدراجه: بعد ذلك يمكنك تحرير محتوياته أو تغيير تنسيقه وتخطيطه من تبويبي Design وLayout السياقيين. تحويل النصوص إلى جدول (أو بالعكس) لتحويل قائمة من النصوص إلى جدول، يجب أن يفصل بين محتويات القائمة فاصل، كالفارزة المنقوطة (؛)، الفقرة paragraph، علامة الجدولة tab، إلخ. لتحويل النص إلى جدول، قم بتحديده أولًا، ثم اذهب إلى تبويب: Insert > Table > Convert Text to Table كما تلاحظ في الصورة أعلاه، قمنا بالفصل بين النصوص باستخدام مفتاح tab. من مربع الحوار Convert Text to Table. حدّد أسلوب احتواء النصوص، سواءً كنت تريد استخدام عرض ثابت لجميع الأعمدة، مطابقة عرض الأعمدة مع حجم المحتوى، أو جعل عرض الجدول مساويًا لعرض الورقة. وكذلك قم بتحديد طريقة فصل النص، سواءً كان عند الفقرات paragraphs، عند الفاصلة المنقوطة semicolons، عند علامات الجدولة tab، أو عند علامة مخصصة تقوم بإدخالها في حقل Other. كما لديك خيار إضافة أعمدة إضافية إلى الجدول بإدخال عدد الأعمدة في حقل Number of Columns: بعد تحديد الخيارات انقر على OK. بما أننا قمنا باختيار AutoFit to contents، تم إنشاء الأعمدة بعرض ملائم لحجم النصوص. إذا أردت القيام بعملية معكوسة، أي تحويل جدول ما إلى نصوص، ضع المؤشر داخل أحد خلايا الجدول ثم اذهب إلى تبويب تخطيط Layout وانقر على أمر Convert Table to Text في مجموعة Data: في مربع الحوار الذي سيظهر حدد طريقة فصل النصوص، ثم انقر على OK: سيتم تحويل الجدول إلى نص عادي. وفي حال أنّك اخترت الفصل بين النصوص بعلامات الجدولة tab، ستلاحظ وجود مواضعها على المسطرة والتي بواسطتها يمكنك التحكم في المسافات بين النصوص:
  4. جميعنا – نحن مصمّمي المواقع –تعلّمنا أن نبقى بعيدًا عن الخُطاطات layouts المستندة على الجداول. لهذا غالبًا ما ننساها ونهملها إلى أن نجد أنفسنا محتاجين إليها. هذا الدرس سيأخذك خطوة بخطوة لإنشاء جدول بيانات أنيق وسلس يحتوي مقارنة بين مميّزات عدة درّاجات نارية من طرازHarley Davidson . سنقوم ببناء الجدول حصرًا بـ HTML ثمّ سنصقله بـ CSS لإنشاء جدول HTML جميل وواضح. الجدول سيقارن ميزات ثلاثة نماذج من الدراجات النارية من طراز Harley Davidson Sportster. سيتمّ بناء الجدول بـ HTML ثمّ سنُنسّقه بـ CSS لجعل البيانات واضحة. مشاهدة الجدول النّهائي سنحتاج إلى عدّة ملفات لأجل تصميم هذا المشروع التّعليمي. وهي: صورة PNG سنستخدمها كخلفية، وصورة كبيرة بالأبيض والأسود لملء الخلفيّة، وشعار Harley Davidson إضافة إلى صور نماذج الدرّاجات النارية الثلاث التي سنقارنها. الملفّ عبارة عن HTML عاديّ. حيث يبدأ بـ DOCTYPE، عنوان الصفحة ورابط لـ CSS. يبدأ محتوى الصفحة بـ <H1>، والذي سيتم لاحقا تحويله إلى شعار HD، بعد ذلك سنضيف وعاء div لمساعدتنا على توسيط المحتوى. بعد ذلك سندرج <table> متبوعًا بـ <THEAD> لتحديد العناوين والتّرويسات headings في جدولنا. يحتوي <THEAD> على صفّين، أحدهما يتضمّن صور الدرّاجات والآخر يتضمّن عناوين كل نموذج في وسم <H2>. الجدول يحتوي ثلاثة أعمدة، ولكن الخلايا الأولى في الترويسة فارغة لذلك سنضيف الحرف الرّابط &nbsp;. لمساعدتنا على تنسيق الجدول وتحسين مقروئية البيانات وفي نفس الوقت سنضيف في الكود أصنافًا classes إلى الخلايا. بعد إغلاق <THEAD> يبدأ <TBODY>. وبينما تُستخدم <th> داخل <THEAD>، فإنّ <td> تستخدم داخل <TBODY>. كل سلسة من الخلايا مُتضمَّنة داخل صفّ واحد، وصفوفنا تساعدنا في تحديد الأعمدة. كما ستتم إضافة كافّة صفوف البيانات لإنهاء HTML. HTML النّهائي <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Harley Davidson Sportster Motorcycle Model Comparison</title> <link href="style.css" rel="stylesheet" /> </head> <body> <h1>Harley Davidson Motorcycles</h1> <div id="container"> <table> <thead> <tr> <th> </th> <th class="iron"><img src="images/iron.jpg" alt="Harley Davidson Iron 883" /></th> <th class="nightster"><img src="images/nightster.jpg" alt="Harley Davidson Nightster" /></th> <th class="fortyeight"><img src="images/forty-eight.jpg" alt="Harley Davidson Forty-Eight" /></th> </tr> <tr> <th> </th> <th class="iron"><h2>Iron 883</h2></th> <th class="nightster"><h2>Nightster</h2></th> <th class="fortyeight"><h2>Forty-Eight</h2></th> </tr> </thead> <tbody> <tr> <td class="feature">Engine</td> <td class="iron">883cc</td> <td class="nightster">1202cc</td> <td class="fortyeight">1202cc</td> </tr> <tr> <td class="feature">Torque</td> <td class="iron">70Nm</td> <td class="nightster">98Nm</td> <td class="fortyeight">98Nm</td> </tr> <tr> <td class="feature">Exhaust</td> <td class="iron">Chrome, staggered shorty exhaust with dual mufflers</td> <td class="nightster">Chrome, slash-cut ex-haust with dual mufflers</td> <td class="fortyeight">Chrome, staggered shorty exhaust with dual slash-cut mufflers</td> </tr> <tr> <td class="feature">Wheels</td> <td class="iron">Black, 13-Spoke Cast Alumi-num</td> <td class="nightster">Black, Laced Steel</td> <td class="fortyeight">Black, Laced Steel</td> </tr> <tr> <td class="feature">Ground Clearance</td> <td class="iron">120mm</td> <td class="nightster">130mm</td> <td class="fortyeight">100mm</td> </tr> <tr> <td class="feature">Price</td> <td class="iron">£6,699</td> <td class="nightster">£8,099</td> <td class="fortyeight">£8,849</td> </tr> </tbody> </table> </div> </body> </html> يبدأ CSS بإزالة وتعويض تنسيق المتصفّح الافتراضي، ثم يقوم بتعيين التنسيق الكلّي للصّفحة. بعد ذلك نضيف صورة الخلفية إلى جسم الصّفحة. أمّا خصائص الخط العّام فستكون16px Georgia رمادي. بعد ذلك سيتمّ تحويل <H1> إلى شعار Harley Davidson باستخدام تقنية استبدال الصورة، ثم سنضع الوعاء div في وسط الصفحة. تُستخدم صورة الخلفية النّمطية للملء. وبعدها سنحدّد قيم الخاصّية box-shadow لـ CSS3 لمحاكاة تأثير الظّل المُنسدل في فوتوشوب. افتراضيًا سيعرض الجدول فجوات صغيرة بين خلايا الجدول. التصميم الذي نبتغي يتطلّب هامشًا بين الأعمدة ولكن دون ثغرات بين الصّفوف. تسمح لنا الخاصيّة border-spacing بضبط التباعد على المحورين Y و X. ستتمّ إضافة الهامش الداخلي Padding, كما سيتمّ توسيط النص في جميع العناصر <th> و <td>، ثم سنستثني الخلايا ذات الصّنف “feature”، حيث سنحاذي النصّوص فيها إلى اليسار. كما ستُمنح هذه الخلايا عرضًاwidth محدّدًا لتغيير تناسب الجدول لجعل ذلك العمود الأكبر من بين بقيّة الأعمدة. أعطينا لكلّ الأصناف “iron”، “nightster” و “fortyeight” خلفيّة بيضاء شفّافة باستخدام RGBa. كان بإمكاننا أن نستخدم صنفًا واحدًا لجميع هذه الخلايا، ولكنّ الأصناف المعيّنة ستساعدنا على التنقل في بيانات الجدول في الكود البرمجي. لأجل إضافة لمسة أخيرة على الجدول، سنضيف نفس الملء الشفّاف إلى صفوف الجدول، ولكن فقط عندما يطوف عليها مؤشّر الفأرة. هذا التأثير البسيط يعزّز سهولة استخدام الجدول، ممّا يساعد المستخدم على مطالعة ومقارنة البيانات. CSS الكامل body, div, h1, h2, h3, h4, h5, h6, p, ul, ol, li, dl, dt, dd, img, form, fieldset, input, textarea, blockquote, table, tr, td, th { margin: 0; padding: 0; border: 0; } body { background: #000 url(images/bg.jpg) center top fixed no-repeat; font: 16px Georgia, Serif; color: #ccc; } h1 { width: 168px; height: 130px; margin: 30px auto; position: relative; background: url(images/harley-davidson.png); text-indent: -9999px; } #container { width: 940px; margin: -115px auto; padding: 110px 10px 50px 10px; background: url(images/bg-pattern.png); box-shadow: 0px 0px 15px #000; } table { border-spacing: 10px 0px; } th, td { text-align: center; padding: 10px; } .feature { width: 183px; text-align: right; font-size: 24px; font-weight: normal; color: #fff; } .iron, .nightster, .fortyeight { background: rgba(255,255,255,0.05); } h2 { font-size: 24px; font-weight: normal; color: #fff; } tr:hover { background: rgba(255,255,255,0.05); } thead tr:hover { background: none; } جدول HTML / CSS النهائي تحقّق بنفسك من المثال لرؤية الشكل النهائي للجدول بكلّ التّأثيرات التي ترافقه. استخدام الشفافية من ملفّات PNG24 وصيغة التّلوينRGBa ساعد على إنشاء تصميم أنيق عندما دُمج مع صورة الخلفية الكبيرة. عمومًا تقنيات الجدول البسيطة هذه يمكن استخدامها في أيّ مشروع لعرض بياناتك الجدولية بطريقة واضحة وسهلة الفهم. ترجمة -وبتصرّف- للمقال How To Create a Slick Features Table in HTML & CSS لصاحبه iggy
  5. جدول التّقطيع Hash هي بنية بيانات Data Structure مشابهة إلى حد كبير للمصفوفات التي تحدّثنا عنها في الدّرس السّابق (حتّى أنّ جداول التّقطيع تسمّى في بعض اللُّغات الأخرى Associative Arrays). يندرج الاثنان تحت ما يسمّى بالمجموعات Collections. يتيح لنا النوعان حفظ بيانات مختلفة مرّة واحدة دون الحاجة إلى استخدام الكثير من المتغيّرات لحفظها. إلا أنّ جداول التّقطيع تختلف عن المصفوفات بعض الشيء. فمثلاً يمكننا الإشارة إلى عنصر في المصفوفة عن طريق مكان هذا العنصر أو ما يسمّى بالدليل Index، أمّا بالنسبة لجدول التّقطيع فنستخدم معرّفًا Identifier للإشارة إلى العنصر الذي نريد الوصول إليه. يمكن اعتبار جداول التّقطيع على أنّها قوائم مكوّنة من أزواج مفاتيح Key وقيمة Value. يمكن للمعرّف أو المفتاح أن يكون أي نوع من أنواع بيانات روبي التي تعرّفنا عليها في الدروس السّابقة. ولكن أكثر الأنواع المستخدمة شيوعًا هو السلاسل، الأرقام و الرموز Symbols (هذا الأخير هو أكثرها شيوعًا على الإطلاق). سنتعرّف في هذا الدّرس على كيفيّة إنشاء والتّعامل مع جداول التّقطيع. إنشاء جدول التقطيع لنبدأ العمل مع جداول التّقطيع الآن، ابدأ جلسة روبي جديدة في سطر أوامر روبي التفاعليّ عن طريق كتابة أمر irb في الطرفيّة. عمليّة إنشاء جدول التّقطيع تشبه نوعًا ما عمليّة إنشاء مصفوفة. هناك طرق مختلفة لإنشاء جدول تقطيع. يمكن تهيئة Instantiate جدول تقطيع باستخدام الحاضنات Curly Braces أو تهيئة نسخة من صنف Hash. لنتعرّف أوّلاً على الطريقة الأولى. وهي عبارة عن إنشاء جدول تقطيع فارغ ومن ثمّ إضافة عناصر إليه فيما بعد. فمثلاً إذا أردنا إنشاء جدول تقطيع فارغ وتعيينه إلى متغيّر اسمه myHash نفعل ذلك كالتّالي: myHash = Hash.new تأكّد من كتابة Hash بحرف كبير. هناك طريقة أقصر من ذلك أيضًا وذلك بتعيين حاضنات فارغة للمتغيّر هكذا: myHash = {} بعد الضغط على Enter في الحالتين ستجد أن روبي قد قامت بإرجاع حاضنات فارغة معلنةً عن إنشاء جدول تقطيع فارغ. ولكن ماذا سنفعل بجدول تقطيع فارغ على كل حال؟ جدول تقطيع فارغ ليس بالشيء المفيد على الإطلاق. الآن لو أردنا إنشاء جدول تقطيع باستخدام الحاضنات وتعيينه إلى متغيّر اسمه marge ثم بداخل جدول التّقطيع قمنا بإضافة العناصر المتكوّنة من مفتاح وقيمة. نفعل ذلك هكذا: marge = { :name => "Marge Simpson" } ماذا فعلنا هنا؟ أنشأنا متغيّرًا باسم marge وقمنا بتعيين قيمة جدول التّقطيع الذي أنشأناها في الطرف الأيمن لذلك المتغيّر. وضعنا بجدول التّقطيع عنصرًا واحدًا مكوّنًا من المفتاح name: والذي هو من نوع Symbol (عرّفنا النّوع عن طريق النقطتين Colon الموجودتان قبله) والقيمة التي هي عبارة عن سلسلة، قمنا بتعيين القيمة إلى المفتاح عن طريقة ما يسمّى بسهم جدول التّقطيع Hash Rocket (<=). يعدّ استخدام الرموز (ٍSymbol) كمفاتيح في جداول التّقطيع مثلما فعلنا في المثال السّابق أمرًا شائعًا جدًا في روبي. قد تتساءل عن السبب؟ السبب الرئيسي هو أنّ الرموز تستخدم الذّاكرة بطريقة أفضل وأكثر إفادة بكثير من السلاسل مثلاً. هناك طريقة أخرى مختصرة لإنشاء جداول التّقطيع ولتوضيح الطريقة سنقوم بإنشاء جدول تقطيع جديد ونعيّنه إلى المتغيّر homer كالتّالي: homer = { name: "Homer Simpson" } هل لاحظت الفرق بين هذه الطّريقة والسّابقة؟ لا تختلف هذه الطريقة كثيرًا عن السّابقة، فقط حذفنا سهم جدول التّقطيع ونقلنا النقطتين لتصبحا بين المفتاح والقيمة. لا زال المفتاح رمزًا كما هو لم يتغيّر نوعه. لاحظ عند الضّغط على Enter ستقوم روبي بإرجاع جدول تقطيع بالصورة الافتراضيّة لها (باستخدام سهم جدول التّقطيع ) رغم استخدامنا للطريقة المختصرة، كالتّالي: {:name => "Homer Simpson"} يمكننا إنشاء جدول تقطيع يحتوي على أكثر من زوج مفتاح/قيمة. مثلاً لنعد إنشاء جدول التّقطيع homer من جديد هكذا: homer = { name: "Homer Simpson", job: "Nuclear Safety Inspector", children: ["Bart", "Lisa", "Maggie"] } كما تلاحظ يمكننا استخدام أنواع مختلفة من الكائنات كعناصر في جدول التّقطيع . لسنا مضطرّين لاستخدام السلاسل فقط. فدلينا في المثال السّابق قيم العنصرين name و job من نوع سلسلة والعنصر الثالث الذي يحتوي على مفتاح children قيمته من نوع مصفوفة مكوّنة من ثلاثة عناصر. التعامل مع جداول التقطيع إذا أردنا التحقّق إذا كان هناك مفتاح معيّن موجود في جدول التّقطيع أم لا يمكننا فعل ذلك باستخدام دالّة include. فمثلاً إذا أردنا معرفة إذا كان لدى homer وظيفة يمكننا التحقّق كالتّالي: homer.include?(:job) إذًا فقد استخدمنا اسم جدول التّقطيع أو المتغيّر الذي قمنا بتعيين جدول تقطيع له، ثم لدينا استدعاء دالّة include، وحيث كما ذكرنا في الدروس السّابقة أنّ include دالّة منطقيّة Boolean Method والدوال المنطقيّة تنتهي بعلامة استفهام لأن ناتج استدعائها true أو false (باختصار هي كأن تسأل مثلاً، هل لهومر وظيفة؟ لن تجد إطلاقًا إجابة غير نعم أو لا). إذًا ناتج هذا الأمر السّابق سيكون true إذا وجدت روبي قيمة للمفتاح job أو false إذا لم تجد. وبالنّظر إلى جدول التّقطيع التي لدينا فنتوقّع إجابة روبي بـ true حيث أنّه موجود وظيفة (المفتاح job) لـ homer بالفعل في جدول التّقطيع . إذًا نحن نعرف أنّ العنصر موجود، الآن نريد معرفة كيف يمكننا استخدام هذه القيمة (سواء لطباعتها على الشّاشة أو لو استخدامها في عمليّات أخرى). للوصول إلى القيمة الفعليّة بدلاً من التحقّق من وجودها فقط ولمعرفة أن هذه القيمة خاصّة بالمفتاح المحدّد كل ما نفعله هو استخدام المفتاح بطريقة مشابهة جدًا لتلك التي استخدمناها مع الدليل Index في المصفوفات. إذًا إذا أردنا معرفة وظيفة homer يمكننا فعل ذلك كالتّالي: homer[:job] إذًا كلّ ما فعلناه أعلاه هو كتابة اسم جدول التّقطيع واسم المفتاح بين قوسين مربّعين. بعد تنفيذ الأمر سترجع لك روبي الوظيفة. لكن ماذا لو استدعينا مفتاحًا ليس موجودًا في جدول التّقطيع أصلاً؟ مثلاً لو أردنا معرفة عمر homer باستخدام مفتاح age:. لم نقم بحفظ قيمة كهذه في جدول التّقطيع لذلك إذا استدعيناها فلن ترجع روبي شيئًا غير nil. ولكن ماذا تعني nil؟ nil هو كائن في روبي يمثّل اللاشيء إذا أردت تعريفه كذلك. متى أخفقت دالّة بإرجاع قيمة مفيدة أو ذات معنى فإنّها تقوم بإرجاع nil. إذا أردنا معرفة عدد القيم الموجودة في جدول تقطيع يمكننا استخدام دالّة length. جرّب تنفيذ الأمر التالي وستحصل على طول جدول التّقطيع الخاصّة بك: homer.length قد تحتاج إلى إضافة قيم جديدة إلى جدول التّقطيع (فارغة كانت أو تحتوي على عناصر) بعد إنشائها، يمكنك فعل ذلك عن طريقة كتابة اسم المفتاح الجديد وجعله مساويًا للقيمة التي تريد تعيينها إلى ذلك المفتاح. فمثلاً إذا أردنا إضافة مفتاح age إلى homer والذي أخبرتنا روبي أعلاه بأنّه ليس موجودًا في جدول التّقطيع عن طريقة إرجاعها nil. فيمكننا فعل ذلك كالتّالي: homer[:age] = 38 الآن للتأكّد من أن العنصر قد تمّت إضافته فإنّ كلّ ما علينا فعله هو كتابة اسم جدول التّقطيع (homer في هذه الحالة) والضغط على Enter. ستجد أنّ المفتاح age وقيمته موجودين بنهاية جدول التّقطيع . والآن أيضًا يمكنك سؤال روبي عن قيمة المفتاح age وتوقّع ظهور قيمة بدلاً من اللاقيمة nil. يمكن أيضًا إضافة جدول تقطيع ليكون أحد القيم في جدول تقطيع آخر. مثلاً إذا أردنا إضافة بيانات زوجة homer إلى جدول التّقطيع الخاصّ به ولدينا فعلاً جدول تقطيع باسم زوجته marge فيمكننا فعل ذلك كالتّالي: homer[:wife] = marge ماذا حدث؟ قمنا هنا بتعيين جدول التّقطيع الموجودة بالمتغيّر marge إلى المفتاح الجديد wife المضاف إلى جدول التّقطيع homer. بعد كتابة هذا والضّغط على Enter ستجد أنّ روبي قد أعادت القيمة الموجودة في marge وهي جدول تقطيع مكوّنة من عنصر واحد. {:name => "Marge Simpson"} هل توقّعت أن يكون الأمر أكثر صعوبة؟ لا تتوقع أن تواجه صعوبة في روبي لحسن الحظّ. الآن إذا أردنا النظر في جدول تقطيع homer ستجد أنّ جدول التّقطيع قد أضيف. ما فعلناه هنا هو أنّنا قمنا بإنشاء جدول تقطيع متداخل Nested Hash، بمعنى أنّ لدينا جدول تقطيع داخل جدول تقطيع آخر. الآن إذا أردنا الوصول إلى قيمة جدول تقطيع المتداخل نفعل ذلك عن طريق استدعاء كل مفتاح بالترتيب بدءًا من جدول التّقطيع المحتوي على الآخر. فمثلاً إذا أردت معرفة اسم زوجة هومر فنستدعي المفتاح wife كما تعوّدنا ولكن نضيف إلى ذلك المفتاح أيضًا مفتاح name الموجود في جدول تقطيع marge كالتّالي: homer[:wife][:name] إذًا فالمفتاح الأوّل هو الموجود بجدول تقطيع homer والمفتاح الثّاني هو الموجود في جدول تقطيع marge. بالضغط على Enter ستقوم روبي بإرجاع القيمة الموجودة في المفتاح name الموجود في marge وليس homer، لا تنس ذلك. "Marge Simpson" دوال جداول التقطيع الكثير من الدوال الخاصّة بجداول التّقطيع هي نفسها الخاصّة بالمصفوفات تعرّفنا على اثنين منها (include و length). لحذف عنصر في جدول تقطيع نستخدم دالّة delete والتي تستقبل مفتاح العنصر المراد حذف كمعطى. تقوم الدّالة أيضًا بإرجاع القيمة التي تمّ حذفها. homer.delete(:age) # 38 لحذف أوّل عنصر في جدول تقطيع نستخدم دالّة shift والتي تحذف أوّل زوج مفتاح/قيمة بجدول تقطيع وتقوم بإرجاعهما في مصفوفة. homer.shift # [:name, "Homer Simpson"] الدوال الخاصة بجداول التقطيع فقط رغم ذكرنا سابقًا أنّ دوال جداول التّقطيع تشبه دوال المصفوفات إلا أن جداول التّقطيع تختصّ ببعض الدوال عن المصفوفات نظرًا لاحتوائها على مفاتيح وقيم. فمثلاً دالّة keys تقوم بإرجاع مصفوفة بها جميع المفاتيح الموجودة بجدول تقطيع . homer.keys # [:job, :children, :wife] دالّة values تقوم بإرجاع مصفوفة تحتوي على جميع القيم الموجودة في جدول تقطيع . homer.values # ["Nuclear Safety Inspector", ["Bart", "Lisa", "Maggie"], { :name => "Marge Simpson" }] لمعرفة إذا كانت قيمة معيّنة موجودة في جدول تقطيع يمكننا استخدام دالّة ?has_value أو اختصارها ?value. homer.value?("Homer Simpson") # false قد تتساءل لماذا قامت روبي بإرجاع false رغم إنشائنا للمفتاح في البداية؟ دعني أُذكّرك أنّه قد تمّ حذف العنصر باستخدام دالّة shift أعلاه. لمعرفة إذا كان مفتاح معيّن موجود في جدول تقطيع أم لا يمكننا استخدام دالّة ?has_key أو اختصارها ?key. homer.key?(:job) # true خاتمة تعرّفنا في هذا الدّرس على جداول التّقطيع، كيفيّة إنشائها وكيفيّة التعامل معها وإضافة عناصر إليها وبعض الدوال الخاصّة بها. حان دورك للتطبيق على ما تعلّمت. يمكنك معرفة المزيد عن جداول التّقطيع عن طريق قراءة توثيق روبي. ربما تريد الآن تحسين قائمة المشتريات (التي استخدمناها كمصفوفة في الدّرس السّابق) عن طريق وضعها في جدول تقطيع بدلاً من مصفوفة. إذا استعصى عليك أمر أو لديك سؤال لا تتردّد في طرحه في قسم التعليقات أدناه.
×
×
  • أضف...