Hello our valued visitor, We present you the best web solutions and high quality graphic designs with a lot of features. just login to your account and enjoy ...
Hello our valued visitor, We present you the best web solutions and high quality graphic designs with a lot of features. just login to your account and enjoy ...
| رقم الخبر | عنوان الخبر | التفاصيل |
|---|---|---|
| 20,445 | باستخدام خلايا الخميرة.. شركة ألمانية تبحث عن لقاح لكورونا | السباق على انتاج لقاح لكوفيد 19 يجري على قدم وساق في جميع أنحاء العالم. وتشارك فيه أيضاً شركة للتكنولوجيا الحيوية من ألمانيا. وتريد تلك الشركة هزيمة الفيروس باستخدام الخميرة. |
| 20,435 | مايكروسوفت تدعم الصور المخصصة كخلفية لاجتماعات Teams |
أعلنت شركة مايكروسوفت عن إضافة ميزة جديدة إلى خدمة مؤتمرات الفيديو التابعة لها (تيمز) Teams تسمح للمستخدمين بإضافة صور من اختيارهم لاستخدامها خلفيةً أثناء المكالمات. وأوضحت عملاقة التقنية الأميركية في تدوينة أن الصور المُخصصة وغيرها من تأثيرات الخلفيات متاحة فقط لاجتماعات العمل المجدولة. وتوفر خدمة (تيمز) للمستخدمين تأثير الخلفية الضبابية، بالإضافة إلى مكتبة من الصور الجاهزة حيث يمكن للمستخدمين الاختيار منها لإخفاء خلفية المكان الذي يتصلون منه. وتسعى مايكروسوفت من خلال هذه الميزة إلى منافسة خدمة (زووم) Zoom التي شهدت نموًا هائلًا إبان جائحة الفيروس التاجي المستجد (كوفيد-19) COVID-19 التي أجبرت الناس على العمل والدراسة من المنزل منذ أشهر. وحذرت مايكروسوفت من أن استخدام صور الخلفية، وتأثير الضبابية قد لا يمنع الآخرين في مكالمات الفيديو من رؤية المعلومات الحساسة. وبالإضافة إلى الصور المخصصة، أطلقت مايكروسوفت بعض الميزات الجديدة لمستخدمي النسخة المجانية من (تيمز)، مثل: القدرة على جدولة الاجتماعات وإرسال الدعوات بدلًا من استخدام خيار (الاجتماع الآن) Meet Now. ويمكن لمستخدمي النسخة المجانية أيضًا إضافة التسميات المباشرة إلى المكالمات. |
| 20,381 | مواصفات وسعر ومميزات شاومي Redmi Note9 ريدمي نوت 9 |
هذا المقال تم نشره بواسطة صدى التقنية صدى التقنية أعلنت شركة شاومي رسميا عن توفر هاتفها الذكي الجديد Redmi Note9 ريدمي نوت 9 في مصر، وبذلك تتوفر جميع هواتف سلسلة ريدمي نوت 9 في مصر، والتي تشمل أيضا ريدمي نوت 9S وريدمي نوت 9 برو، ويحمل Redmi Note9 تصميما مشابها لهواتف السلسلة الأخرى بخلفية من الزجاج وإطار من البلاستيك، لكنه يحمل مستشعر للبصمات على الجهة الخلفية بدلا من الجهة الجانبية، كما يأتي مزودا بأربع كاميرات خلفية وكاميرا سيلفي في ثقب داخل الشاشة نفسها، بالإضافة لبطارية ضخمة مع دعم الشحن السريع. ما هي أفضل مميزات ريدمي نوت 9 ؟وهذه أبرز مميزات Redmi Note9 :
وهذه مواصفات ريدمي نوت 9 :
ويتوفر شاومي ريدمي نوت 9 خلال هذا الشهر (يونيو 2020) في مصر، وذلك بسعر 2777 جنيه مصري للإصدار بمساحة تخزينية 64 جيجابايت ورام 3 جيجابايت، وبسعر 3099 جنيه مصري للإصدار بمساحة تخزينية 128 جيجابايت ورام 4 جيجابايت. هذا المقال تم نشره بواسطة صدى التقنية صدى التقنية |
| 20,378 | ميزات طال انتظارها.. "واتساب" تختبر جديدها |
بدأت منصة التواصل الشهيرة "واتساب" في اختبار عدد من الميزات الجديدة عبر أحدث إصدار تجريبي لتطبيقها، وهي ميزات طال انتظارها في ظل اشتداد معركة تطبيقات المراسلة الفورية، مثل دعم تسجيل الدخول من خلال أجهزة متعددة. ووفقًا لموقع (WABetaInfo)، المتخصص في رصد المزايا التجريبية في التطبيق الشهير، فإن هناك عددًا من الميزات التي يتم اختبارها ضمن أحدث إصدار تجريبي لنظامي آي أو إس وأندرويد. ومن المرجح أن تغير ميزة دعم تسجيل الدخول عبر أجهزة متعددة كيفية استخدام الملايين حول العالم لمنصة المراسلة، حيث إن عدم الحاجة إلى تسجيل الخروج عبر الأجهزة سيوفر الكثير من المشاكل. ويمكن لمستخدم واتساب في الوقت الحالي تسجيل الدخول إلى جهاز محمول واحد فقط، إلى جانب تسجيل الدخول عبر جهاز حاسب شخص أو جهاز ماك أو متصفح الويب. تحديث مستقبليهذا ويمكن التبديل بين هذه الأجهزة، لكن لا يمكن الوصول إلى الحاسب سوى من جهاز واحد في المرة الواحدة، مما يجعل الاستخدام السلس أمرًا صعبًا، إلى جانب الإحباط الذي يشعر به المستخدم عند الحاجة إلى التبديل بين الأجهزة، وخاصةً أن عملية تسجيل الدخول ليست سهلة. يذكر أن دعم الأجهزة المتعددة غير متوفر في الوقت الحالي لمستخدمي أحدث إصدار تجريبي من واتساب حتى الآن، لكن من المحتمل أن يأتي في تحديث مستقبلي. كما اكتشف موقع (WABetaInfo) أن المنصة تختبر الميزة مع ما يصل إلى أربعة أجهزة مسجلة في وقت واحد، وهو أمر أفضل بكثير من الحد الحالي. وإلى جانب ذلك، يبدو أن منصة التراسل ستحصل قريبًا على بعض تحديثات البحث المهمة الأخرى، بحيث سيكون بإمكان المستخدم قريبًا البحث بحسب التاريخ ضمن المحادثات الفردية والدردشات الجماعية. البحث في الدردشةويدعم تطبيق المراسلة الفورية المملوك لفيسبوك ميزة البحث في الدردشة، لكنها لا تسمح بالبحث عن رسالة مرسلة أو مستلمة في تاريخ محدد. وتساعد ميزة البحث الجديدة في تسهيل العثور على الرسائل والصور بحسب التاريخ، ووفقًا للمعلومات، فإن هذه الميزة ستصل قريبًا إلى نسخة الويب من واتساب، مما يسمح للمستخدم بالبحث عن المحتوى بحسب التاريخ باستخدام متصفح الويب. ويبدو أن واتساب تأخذ شكاوى المستخدمين حول مشكلات التخزين على محمل الجد، إذ من المفترض انضمام ميزة جديدة تسمح باستخدام مساحة التخزين بشكل محسن. وتتيح هذه الميزة عرض مقدار مساحة التخزين التي يشغلها التطبيق على الهاتف الذكي، وستكون بمثابة إصلاح شامل للقسم الحالي المخصص لمنح المستخدم معلومات حول مساحة التخزين. ملفات كبيرةويسمح الخيار للمستخدمين بعرض الملفات الكبيرة التي يتم تخزينها عند الاستلام، كما هناك خيار للملفات المعاد توجيهها، مما يساعد المستخدمين على تصفية الملفات التي تمت إعادة توجيهها عبر تطبيق المراسلة. وتختبر المنصة أيضًا طريقة أخرى لتحسين تجربة واتساب بأكملها على الهاتف المحمول، وهي تتمثل بالقدرات المحسنة لمسح الدردشات بأكملها. كما تسمح هذه الميزة بمسح جميع الرسائل باستثناء تلك المميزة بنجمة، مما يجعل من السهل جدًا حذف الرسائل التي لم تعد ضرورية. هذا وتنضم الميزات السابقة إلى ميزة دعم فيديو (ShareChat)، وقد يتيح هذا الدعم وجود مشغل مخصص لمقاطع الفيديو التي يمكن تشغيلها بسلاسة داخل التطبيق. |
| 20,377 | تحمي من أعين المتطفلين.. ميزة جديدة من فيسبوك لـ"مسنجر" |
تختبر "فيسبوك" ميزة جديدة لتطبيق مسنجر تسمح للمستخدمين بحماية رسائلهم بشكل أفضل عن أعين المتطفلين، بحيث يحتاج المستخدمون عند تفعيل الميزة إلى مصادقة هويتهم باستخدام (Face ID) أو (Touch ID) أو رمز المرور قبل أن يتمكنوا من عرض البريد الوارد، حتى في حال كان الهاتف غير مقفل. وتعتمد هذه الميزة على إعدادات أمان الجهاز، لذا فإن فتح الهاتف بشكل طبيعي هو الطريقة لفتح تطبيق مسنجر، ويمكن للمستخدمين أيضًا تعيين فترة زمنية محددة بعد مغادرة التطبيق، بحيث يحتاج التطبيق بعد مرور هذه الفترة الزمنية إلى إعادة المصادقة. كما تجلب هذه الميزة التجربة نفسها المتوفرة بالفعل بالنسبة لتطبيق واتساب المملوك لشركة فيسبوك، بحيث يمكن للمستخدمين تحديد ما إذا كانت المصادقة مطلوبة دائمًا عند فتح التطبيق أو بعد مرور فترة زمنية دون استخدامه، التي يمكن أن تتراوح من دقيقة واحدة إلى ساعة واحدة. ميزة الأمانهذا وتختبر الشركة في الوقت الحالي ميزة الأمان الجديدة بين نسبة صغيرة من مستخدمي مسنجر لنظام التشغيل (آي أو إس) iOS، وذلك بالرغم من أن الميزة قد تكون متاحة في نهاية المطاف على نطاق أوسع، من ضمنها أجهزة أندرويد. من جانبه قال متحدث باسم فيسبوك في بيان: “نريد منح الأشخاص المزيد من الخيارات وعناصر التحكم لحماية رسائلهم الخاصة، وبدأنا حديثًا في اختبار ميزة تتيح فتح تطبيق مسنجر باستخدام إعدادات الجهاز، بحيث تمثل هذه الميزة طبقة إضافية من الخصوصية لمنع شخص آخر من الوصول إلى رسائلك”. وتشبه هذه الميزة إعدادات الأمان للعديد من تطبيقات الدردشة الشائعة الأخرى، من ضمنها تطبيق الرسائل المشفرة (Signal)، الذي شهد زيادة كبيرة في عدد التنزيلات في الأسابيع الأخيرة. وتعمل فيسبوك منذ فترة على تعزيز ميزات الأمان في مسنجر، ولدى الشركة ميزة مراسلة مشفرة تسمى المحادثات السرية، وقالت: إنها تود يومًا ما أن تجعل التشفير التام من طرف إلى طرف بمثابة الإعداد الافتراضي للتطبيق، ومع ذلك، لا تزال هذه الخطط على بعد عدة سنوات. |
| 20,376 | احتدام الجدل بين الصين وتويتر.. حذف حسابات واتهامات |
صدّ ورد بين موقع التواصل الاجتماعي الشهير تويتر، وبلد المليار الصين، حول حذف حسابات وعمليات خداع. الحكاية بدأت بعدما أعلن تويتر الجمعة، أنه أزال أكثر من 170 ألف حساب مرتبط بعملية تأثير، مدعومة من بكين، نشرت بشكل ينطوي على خداع رسائل مؤيدة للحكومة الصينية، بما في ذلك بعض الرسائل حول فيروس كورونا المستجد. وعللت الشبكة قرارها بأن هذه الحسابات مرتبطة بحملة تضليل إعلامي للحكومة الصينية سعت إلى تشويه صورة الولايات المتحدة واستهدفت التحركات المؤيدة للديمقراطية في هونغ كونغ. كما أعلن العصفور الأزرق أنه عطل "نواة" 23 ألفا و750 حسابا مرتبطا بالصين ينقلها نحو 150 ألف حساب آخر لتوسيع انتشارها، وأغلق 7340 حسابا مرتبطا بتركيا و1152 حسابا مرتبطا بروسيا، مشيرا في مذكرة تحليلية إلى أن هذه الشبكة كانت تنشر تغريدات باللغة الصينية موجهة على ما يبدو للمقيمين في الخارج "تبث نظريات جيوسياسية مؤيدة للحزب الشيوعي الصيني مع دعم نظريات خادعة حول الحراك السياسي في هونغ كونغ"، بحسب الموقع. الصين تردفما كان من الخارجية الصينية إلا أن ردت فورا، حيث قالت المتحدثة باسم الوزارة هوا تشون ينغ للصحافيين، إن العديد من المنصات تضم الكثير من المعلومات المضللة عن الصين وهناك حاجة لإفساح المجال أمام أصوات صينية ذات آراء موضوعية. بدورهم، عبر باحثون وحكومات غربية عن مخاوفهم من أن تنشر الصين شبكات من الحسابات التي تسيطر عليها الدولة أو المرتبطة بها، تحجب المستخدمين الفعليين، لنشر الرسائل الحكومية أو أنباء مضللة. حسابات تشجع الدولةوكانت صحيفة "نيويورك تايمز" قد نشرت في وقت سابق من الشهر الجاري تحليلا لما يقرب من 4600 حساب مرتبط بقادة ودبلوماسيين صينيين على تويتر. ووجدت الصحيفة مئات الحسابات التي يبدو أنها تعمل فقط للتشجيع على مبعوثي الصين ووسائل الإعلام التي تديرها الدولة. والشهر الماضي، وضع تويتر إشارة على تغريدة كتبها متحدث باسم الحكومة الصينية أشار إلى نظرية مؤامرة مشكوك إلى حد كبير في صحتها وتفيد أن الجيش الأميركي قد يكون هو من أدخل فيروس كورونا المستجد إلى الصين. يذكر أن هذه هي المرة الثانية التي تحذف فيها حسابات بعدما قامت شركات تكنولوجيا أميركية العام الماضي بإغلاق شبكات نافذة يعتقد أنها تخضع لإدارة أو أوامر الحكومة الصينية. |
| 20,370 | تركيا تهدد تويتر بعصا الحجب.. "إنه آلة مؤدلجة"! |
يبدو أن حذف تويتر آلاف الحسابات العائدة إلى "الجيش الإلكتروني" التركي أثار حفيظة أنقرة التي اتهمت شركة "العصفور الأزرق" بالترويج للدعايات والإيديولوجيات، بحسب تعبير أحد المسؤولين الأتراك. فبعد تعليق موقع التغريد الأشهر لأكثر من 7 آلاف حساب يروج للرئيس التركي رجب طيب أردوغان، وجهت تركيا انتقادات لاذعة لتويتر، متهمة إياه بتشويه صورة الحكومة التي يقودها حزب العدالة والتنمية. وقال فخر الدين ألتون، رئيس مكتب الاتصالات في الرئاسة التركية، في بيان مكتوب مساء الجمعة "لقد أظهر هذا التحرك مرة أخرى أن تويتر ليس شركة للتواصل الاجتماعي، بل هو آلة للدعاية ذات نزعات سياسية وإيديولوجية معينة". كما أضاف أن مزاعم وجود حسابات "وهمية" لدعم الرئيس تتم إدارتها عبر سلطة مركزية لا أساس لها من الصحة. تهديد بالتعليقإلى ذلك، لوح المسؤول في مكتب أردوغان بتعليق الموقع أو حجبه في تركيا، قائلاً "نود أن نذكر شركة تويتر بمصير عدد من المنظمات التي حاولت اتخاذ خطوات مماثلة في السابق". وكانت السلطات التركية حجبت موسوعة ويكيبيديا على الإنترنت في أبريل 2017 بسبب صفحات اتهمتها بإقامة علاقات مع منظمات إرهابية، ولم يُرفع الحجب عن الموسوعة إلا في يناير هذا العام بعد صدور حكم من المحكمة الدستورية التركية. كما سبق وحجبت أنقرة يوتيوب وتويتر نفسه بسبب محتوى نشر على المنصتين. |
| 20,369 | مواصفات شاومي ريدمي نوت 9 برو Redmi Note 9 Pro والمميزات والسعر |
هذا المقال تم نشره بواسطة صدى التقنية صدى التقنية أطلقت شركة شاومي هاتفها الذكي الجديد Redmi Note 9 Pro ريدمي نوت 9 برو هذا الأسبوع في مصر، وهو الهاتف من فئة الهواتف متوسطة التكلفة، والذي يأتي مزودا بمعالج ثماني النواة من كوالكوم و4 كاميرات خلفية من بينها كاميرا رئيسية بدقة 64 ميجابكسل، كما يحمل بطارية ضخمة قدرتها 5020 ميللي أمبير/ساعة مع دعم الشحن السريع بقدرة 30 وات. ما هي مواصفات ريدمي نوت 9 برو Redmi Note 9 Pro ؟وهذه مواصفات ريدمي نوت 9 برو ماكس Redmi Note 9 Pro Max:
ويتوفر ريدمي نوت 9 برو ماكس Redmi Note 9 Pro Max خلال شهر يونيو الحالي 2020 بسعر:
هذا المقال تم نشره بواسطة صدى التقنية صدى التقنية |
| 20,360 | الدرس 9: الحلقات التكرارية (Loops) في Cpp |
تنفذ الحلقات التكرارية مجموعة من التعليمات إلى حين استيفاء شرط معين، وهناك ثلاثة أنواع من تلك الحلقات التكرارية في لغة C++: for و while و do…while. حلقة for النطاقية (Range-Based For)الإصدار ≥ C++ 11 يمكن استخدام حلقات for للتكرار على عناصر نطاق تكراري (iterator-based range) دون الحاجة إلى استخدام الفهارس العددية أو الوصول بشكل مباشر إلى المكررات: vector < float > v = { 0.4 f, 12.5 f, 16.234 f }; for (auto val: v) { std::cout << val << " "; } std::cout << std::endl;ستكرّر الشيفرة السابقة تعليمة std::cout << val << " "; على كل عناصر v، وستحصل val على قيمة العنصر الحالي. الشيفرة التالية: for (for-range-declaration : for-range-initializer ) statementستكون مكافئة لما يلي: { auto&& __range = for-range-initializer; auto __begin = begin-expr, __end = end-expr; for (; __begin != __end; ++__begin) { for-range-declaration = *__begin; statement } }الإصدار ≥ C++ 17 من الممكن أن تكون end من نوع مختلف عن begin في C++17، انظر: { auto&& __range = for-range-initializer; auto __begin = begin-expr; auto __end = end-expr; for (; __begin != __end; ++__begin) { for-range-declaration = *__begin; statement } }قُدِّم هذا التغيير في C++ لأجل التمهيد لدعم معيار النطاقات Ranges TS في الإصدار C++ 20، وعليه فإن الحلقة في هذه الحالة ستكون مكافئة لما يلي: { auto &&__range = v; auto __begin = v.begin(), __end = v.end(); for (; __begin != __end; ++__begin) { auto val = *__begin; std::cout << val << " "; } }لاحظ أن التعليمة auto val تصرح عن نوع القيمة التي ستكون نسخة من القيمة المخزنة داخل النطاق – سنهيئه استنساخًا أثناء تنفيذ البرنامج-، وإن كانت عملية نسخ القيم المخزنة في النطاق مكلفة فربما تود استخدام const auto &val. كذلك لست مضطرًا لاستخدام auto ، بل تستطيع استخدام أي اسم نوع typename طالما أنه قابل للتحويل من نوع قيمة النطاق. واعلم أن حلقة for النطاقية غير مناسبة في حال احتجت للوصول إلى المُكرّر، أو ستحتاج مجهودًا كبيرًا. إن أردت الإشارة للمكرِّر، فيمكنك ذلك بما يلي: vector < float >v = {0.4f, 12.5f, 16.234f}; for(float &val: v) { std::cout << val << " "; }كذلك يمكنك التكرار على مرجع const إذا كان لديك حاوية const: const vector<float> v = {0.4f, 12.5f, 16.234f}; for(const float &val: v) { std::cout << val << " "; }يمكنك استخدام مراجع إعادة التوجيه (forwarding references) في حال أعاد مُكرّر التسلسل كائنًا وكيلًا (proxy object) وكنت بحاجة إلى إجراء عمليات يمكن أن تغيّر قيمة الكائن. لكن بالمقابل، من المحتمل أن تربك من يقرأ شيفرتك إن استخدمت هذه الطريقة. vector<bool> v(10); for (auto &&val : v) { val = true; }يمكن أن يكون نوع "النطاق" المقدم إلى حلقة for النطاقية أحد الخيارات التالية:
لاحظ أنّ تخصيص المصفوفات الديناميكية لا يُحسب: float *arr = new float[3]{0.4f, 12.5f, 16.234f}; for (auto val : arr) // خطأ تصريفي { std::cout << val << " "; }
تنفّذ الحلقة for التعليمات الموجودة في متن الحلقة loop body ما دامَ شَرط الحلقة condition صحيحًا، وتُنفَّذ initialization statement مرة واحدة قبل تنفيذ الحلقة التكرارية، ثم تُنفّذ التعليمة iteration execution بعد كل تكرار. تٌعرَّف حلقة for كما يلي: for (/*initialization statement*/; /*condition*/; /*iteration execution*/) { // متن الحلقة }شرح الصيغة السابقة:
تكافئ الشيفرةُ التالية حلقةَ for في حال كتابتها كحلقة while، حيث تنتقل الحلقة إلى جزء تنفيذ التكرار /*iteration execution*/ عند استخدام continue: /*initialization*/ while ( /*condition*/ ) { // متن الحلقة /*iteration execution*/ }غالبًا ما تُستخدم الحلقة for لتنفيذ تعليمات برمجية معيّنة عددًا محدّدًا من المرات. على سبيل المثال: for (int i = 0; i < 10; i++) { std::cout << i << std::endl; }أو: for (int a = 0, b = 10, c = 20; (a + b + c < 100); c--, b++, a += c) { std::cout << a << " " << b << " " << c << std::endl; }هذا مثال يوضّح إخفاء المتغيرات المُصرّح عنها قبل الحلقة، حيث نصرح في السطر الثاني عن المتغير i الذي ستتغير قيمته بين 0 و 9 أثناء تنفيذ الحلقة، ثم نستطيع يعود إلى قيمته الأصلية 99 بعد انتهاء تنفيذها. int i = 99; //i = 99 for (int i = 0; i < 10; i++) { // i التصريح عن متغير جديد }ولكن إن كنت تريد استخدام المتغيرات المُصرّحة سلفًا وعدم إخفائها، فاحذف التصريح. انظر المثال التالي إذ نستخدم متغير i المصرَّح عنه من قبل، والذي تتغير قيمته بين 0 و 9 أثناء تنفيذ الحلقة، لكن هذه المرة ستكون قيمته بعد تنفيذها 10. int i = 99; //i = 99 for (i = 0; i < 10; i++) { // i سنستخدم المتغير المُعرّف مسبقا }ملاحظات:
انظر المثال التالي لحلقة تَعُدُّ من 0 إلى 10: for (int counter = 0; counter <= 10; ++counter) { std::cout << counter << '\n'; } // counter لا يمكن الوصول هنا إلىشرح الشيفرة السابقة:
إن تركت جميع التعليمات فارغة، فستحصل على حلقة لا نهائية (infinite loop): for (;;) std::cout << "Never ending!\n";حلقة while اللانهائية التي تكافئ حلقة for السابقة هي: while (true) std::cout << "Never ending!\n";لكن على أي حال، يمكن إيقاف الحلقات اللانهائية باستخدام تعليمات break أو goto أو return، أو عبر رفع اعتراض (throwing an exception). انظر المثال التالي الذي يوضح التكرار على عناصر مجموعة من المكتبة القياسية STL (مثل vector) دون استخدام الترويسة : std::vector < std::string > names = { "Albert Einstein", "Stephen Hawking", "Michael Ellis" }; for (std::vector < std::string > ::iterator it = names.begin(); it != names.end(); ++it) { std::cout << * it << std::endl; } حلقة Whileتكرِّر حلقة while تنفيذ تعليمات معيّنة طالما كان شرطها صحيحًا، تُستخدم هذه الحلقة إن لم تكن تعرف عدد مرات تنفيذ جزء من الشيفرة بشكل مسبق. فمثلأ، لطباعة جميع الأعداد من 0 إلى 9، يمكن استخدام الشيفرة التالية: int i = 0; while (i < 10) { std::cout << i << " "; ++i; // عداد الزيادة } std::cout << std::endl;تُطبع الأعداد من 0 إلى 9 مع نهاية السطر الأخير. لاحظ أن دمج التعليمتيْن الأوليين صار ممكنًا منذ الإصدار C++ 17، انظر: while (int i = 0; i < 10) //... بقية الشيفرة هي نفسهايمكن استخدام الشيفرة التالية لإنشاء حلقة لا نهائية، وتستطيع إيقاف الحلقة عبر تعليمة break: while (true) { // أدخل هنا أي شيء تريد فعله بلا نهاية }هناك صورة آخرى لحلقات while، وهي do...while. وهي موضوع الفقرة التالية. حلقة do-whileالحلقتان التكراريتان do-while و while متشابهتان، إلا أن الأولى تتحقق من الشرط في نهاية كل تكرار، وليس في بدايته، وعليه فإنّ الحلقة ستُنفّذ مرة واحدة على الأقل. ستطبع الشيفرة التالية العدد 0 إذ سيكون تقييمُ الشرط false في نهاية التكرار الأول: int i = 0; do { std::cout << i; ++i; // عداد الزيادة } while (i < 0); std::cout << std::endl; // يطبع صفرًاتنبيه: لا تنس الفاصلة المنقوطة في نهاية while(condition);، فهي إلزامية في بنية do-while. على النقيض من الحلقة do-while، فإن الشيفرة التالية لن تطبع شيئًا لأنّ شرط الحلقة لم يتحقق في بداية التكرار الأول: int i = 0; while (i < 0) { std::cout << i; ++i; // عداد الزيادة } std::cout << std::endl; // لن يُطبع أيّ شيءتنبيه: يمكن إنهاء الحلقة while حتى لو لم يصبح الشرط خاطئًا باستخدام أي من التعليمات الآتية: break أو goto أو return. int i = 0; do { std::cout << i; ++i; // عداد الزيادة if (i > 5) { break; } } while (true); std::cout << std::endl; // يطبع الأعداد من صفر إلى خمسةتُستخدم الحلقة do-while أحيانًا لكتابة وحدات الماكرو (macros) التي تتطلّب نطاقًا خاصًّا بها (في هذه الحالة، يتمّ حذف الفاصلة المنقوطة الزائدة من تعريف الماكرو، ويُطلب من المستخدم توفيرها): #define BAD_MACRO(x) f1(x); f2(x); f3(x); // f1 الشرط لا يحمي هنا إلا استدعاء if (cond) BAD_MACRO(var); #define GOOD_MACRO(x) do { f1(x); f2(x); f3(x); } while(0) // كل الاستدعاءات محميّة هنا if (cond) GOOD_MACRO(var); تعليمات التحكم في الحلقات: break و continueتُستخدم عبارتَا التحكم break و continue لتغيير مسار التنفيذ من تسلسله المعتاد، فتُدمَّر جميع الكائنات الآلية (automatic objects) التي أنشئت داخل نطاق ما بمجرد ترك تنفيذٍ لذلك النطاق. وتنهي التعليمة break الحلقة فورًا دون النظر لأي عوامل أخرى. for (int i = 0; i < 10; i++) { if (i == 4) break; // إنهاء الحلقة فورا std::cout << i << '\n'; }تكون النتيجة ما يلي: 1 2 3أما التّعليمة continue لا توقف الحلقة على الفور، بل تتخطّى بقيّة التعليمات الموجودة في متن الحلقة وتذهب إلى بداية الحلقة (بما في ذلك تعليمة التحقّق من الشّرط). انظر المثال التالي حيث تقيَّم (if (i % 2 == 0 إلى true إن كان العدد زوجيًا، وتذهب continue فورًا إلى بداية الحلقة، لكن لا يُنتَقَل إلى التعليمة التالية إن لم تُنفَّذ. for (int i = 0; i < 6; i++) { if (i % 2 == 0) continue; std::cout << i << " is an odd number\n"; }تكون النتيجة ما يلي: 1 is an odd number 3 is an odd number 5 is an odd numberلا تُستخدم break و continue إلا نادرًا، ذلك أنه يصعب معهما قراءة الشيفرة وفهمها، وتُستخدم أساليب أخرى أبسط بدلًا منهما.فمثلًا يمكن إعادة كتابة الحلقة for الأولى التي تستخدم break على النّحو التالي: for (int i = 0; i < 4; i++) { std::cout << i << '\n'; }وبالمثل، يمكن إعادة كتابة المثال الثّاني الذي يحتوي continue كالتالي: for (int i = 0; i < 6; i++) { if (i % 2 != 0) { std::cout << i << " is an odd number\n"; } } التصريح عن المتغيرات في العبارات الشَّرطيةيسمح بالتصريح عن كائن في شرط حلقات for أو while، وسيُدرَج ذلك الكائن في النّطاق حتى نهاية الحلقة، وسيكون متاحًا خلال كل تكرارات الحلقة: for (int i = 0; i < 5; ++i) { do_something(i); } // لم يعد في النطاق i for (auto& a : some_container) { a.do_something(); } // لم يعد في النطاق a while(std::shared_ptr<Object> p = get_object()) { p-> do_something(); } // لم يعد في النطاق pلا يمكنك فعل الشيء نفسه مع حلقة do...while؛ إذ عليك التصريح عن المتغير قبل الحلقة، ثمّ وضع المتغير والحلقة داخل نطاق محلّي (local scope) إن أردت أن يُحذَف المتغير بعد انتهاء الحلقة: // هذه الشّيفرة لن تُصرّف do { s = do_something(); } while (short s > 0); // جيّد short s; do { s = do_something(); } while (s > 0);وذلك لأنّ متن الحلقة do...while يقيَّم قبل الوصول إلى الجزء (while)، وعليه فإن التصاريح الموضوعة في ذلك الجزء لن تكون مرئيّة أثناء التّكرار الأول للحلقة. تكرار حلقة for على نطاق فرعيتستطيع التكرار على جزء فرعي من حاوية أو نطاق ما باستخدام الحلقات النطاقية (range-base loops)، وذلك من خلال إنشاء كائن وكيل (proxy object). template < class Iterator, class Sentinel=Iterator > struct range_t { Iterator b; Sentinel e; Iterator begin() const { return b; } Sentinel end() const { return e; } bool empty() const { return begin() == end(); } range_t without_front(std::size_t count = 1) const { if (std::is_same< std::random_access_iterator_tag, typename std::iterator_traits<Iterator>::iterator_category >{} ) { count = (std::min)(std::size_t(std::distance(b, e)), count); } return { std::next(b, count), e }; } range_t without_back(std::size_t count = 1) const { if (std::is_same< std::random_access_iterator_tag, typename std::iterator_traits<Iterator>::iterator_category >{} ) { count = (std::min)(std::size_t(std::distance(b, e)), count); } return { b, std::prev(e, count) }; } }; template < class Iterator, class Sentinel > range_t<Iterator, Sentinel> range( Iterator b, Sentinal e ) { return { b, e }; } template < class Iterable > auto range(Iterable & r) { using std::begin; using std::end; return range(begin(r), end(r)); } template < class C > auto except_first(C & c) { auto r = range(c); if (r.empty()) return r; return r.without_front(); }نستطيع الآن فعل ما يلي: std::vector < int > v = {1, 2, 3, 4}; for (auto i: except_first(v)) std::cout << i << '\n';يكون الناتج: 2 3 4يجب أن تتذكّر أنّ الكائنات الوسيطة (intermediate objects) المُنشأة في الجزء for(:range_expression) من حلقة for ستُحذف عند بدء تنفيذ الحلقة. هذ الدرس جزء من سلسلة دروس عن C++. ترجمة -بتصرّف- للفصل Chapter 11: Loops من الكتاب C++ Notes for Professionals |
| 20,330 | مواصفات Xiaomi Mi Band 5 شاومي مي باند 5 والمميزات الجديدة والسعر |
هذا المقال تم نشره بواسطة صدى التقنية صدى التقنية أعلنت شركة شاومي رسميا عن سوار اللياقة البدنية الجديد Xiaomi Mi Band 5 مي باند 5، ويعتبر سوار شاومي مي باند من أكثر أسورة اللياقة البدنية شعبية بين المستخدمين ومن أكثر منتجات شاومي مبيعا، وهو ما جعل مبيعات شاومي من الأجهزة الذكية القابلة للارتداء تتفوق على مبيعات شركات كبرى مثل سامسونج وهواوي وفيتبيت وغيرها، وزودت شاومي سوار اللياقة البدنية الجديد مي باند 5 بعدد من المميزات الجديدة أبرزها شاشة ملونة أكبر، بالإضافة لقدرات أفضل في تتبع عوامل اللياقة البدنية، إلى جانب طريقة أفضل للشحن، مع الحفاظ على السعر أو التكلفة المنخفضة للسوار. ما هي أفضل مميزات سوار شاومي مي باند 5 ؟وهذه أفضل مميزات سوار اللياقة البدنية الجديد Xiaomi Mi Band 5 مي باند 5:
ويتوفر سوار اللياقة البدنية Xiaomi Mi Band 5 مي باند 5 خلال يونيو الحالي 2020، وذلك بسعر حوالي 27 دولار أمريكي للإصدار الذي لا يدعم NFC، فيما يتوفر الإصدار الذي يدعم NFC بسعر حوالي 32 أمريكي. هذا المقال تم نشره بواسطة صدى التقنية صدى التقنية |