أكثر

كيفية عمل حلقات على الخلايا النقطية باستخدام وحدة تحكم Python في QGIS؟

كيفية عمل حلقات على الخلايا النقطية باستخدام وحدة تحكم Python في QGIS؟


أنا جديد هنا ومبتدئ في لعبة بيثون. أنا أبحث عن حل لمشكلتي لبضع ساعات ولكنك الآن فرصتي الأخيرة ... أنا أستخدم وحدة تحكم python (2.7.5) في QGIS (2.4.0). هل هناك حل لعمل حلقات على الخلايا النقطية؟ أرغب في إنشاء نقطية تعتمد فيها كل خلية قيمة على الموضع (رقم العمود والصف) في البيانات النقطية.

أنا أبحث عن شيء مثل رمز Python هذا في Arcgis (لقد وجدته هنا: كيف أحصل على إحداثيات X Y وقيمة خلية لكل بكسل في البيانات النقطية باستخدام Python؟)

للصف في النطاق (0 ، الارتفاع): للعمود في النطاق (0 ، العرض): # الآن لديك حق الوصول إلى صفيف واحد من القيم لموقع خلية واحدة

شكرا!


يستخدم Arcpy تنسيق مصفوفة Numpy (مخفي عن المستخدمين) مثل PyGGIS الذي يستخدم وحدة Python GDAL.

Provider = raster.dataProvider () # path the original filePath = str (provider.dataSourceUri ()) # افتح الملف الأصلي من osgeo import gdal raster_or = gdal.Open (filePath) # إنشاء مصفوفة numpy_array = raster_or.ReadAsArray ( ) # شكل المصفوفة print numpy_array.shape (60، 100) # my example # قارن مع print raster.height ()، raster.width () (60، 100) width، height = numpy_array.shape # or width = raster .width and height = raster.height () # وللصف في النطاق (0 ، العرض): للعمود في النطاق (0 ، الارتفاع): صف الطباعة ، العمود ، numpy_array [الصف ، العمود]

تعتبر قراءة الصورة بأكملها دفعة واحدة فعالة جدًا ، ولكنها ليست الأفضل. الطريقة الأكثر فاعلية للوصول إلى البيانات النقطية هي الكتل (انظر إلى دورات Chris Garrard في قراءة البيانات النقطية باستخدام GDAL)


Konfigurasi aplikasi eksternal¶

يمكن تمديد إطار المعالجة باستخدام تطبيقات إضافية. تتم إدارة الخوارزميات التي تعتمد على التطبيقات الخارجية من قبل موفري الخوارزميات الخاصة بهم. يمكن العثور على الموفرين الإضافيين كمكونات إضافية منفصلة ، وتثبيتها باستخدام QGIS Plugin Manager.

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

افتراضيًا ، لا يتم تمكين الخوارزميات التي تعتمد على تطبيق خارجي غير مزود بـ QGIS. يمكنك تمكينها في مربع حوار إعدادات المعالجة إذا كانت مثبتة على نظامك.


Python - الالتفاف حول الخلايا النقطية ، بطيء للغاية

نظرًا لكوني لست أكثر مستخدمي Python ذكاءً ، فقد كنت أحاول إيجاد حل لتسريع الكود الخاص بي. لدي ملفان نقطيتان ، كلاهما لهما نفس البعد والمدى. النقطية الواحدة عبارة عن نهر ، مستخرج من صورة LIDAR ، مع نطاق ضيق من قيم الارتفاع ، وجميع القيم الأخرى في ملف النهر تساوي 0. لذلك ، بشكل أساسي ، باستثناء عرض النهر (وحدات البكسل مع بيانات الارتفاع) ، 99٪ من البيانات النقطية للنهر له القيمة 0. الملف النقطي الآخر مستخرج من صورة LIDAR ويحتوي على بيانات الارتفاع في كامل امتداده.

خطتي هي تجاوز كل بكسل في ملف النهر الذي لا يحتوي على قيمة 0 ، أضف 1 إليه (إذا ارتفع منسوب مياه النهر بمقدار متر واحد) ومقارنته ببيانات ارتفاع البكسل المجاورة (أساسًا موقع البكسل لـ ارتفاع LIDAR). إذا كان أعلى ، فامنحه القيمة 1 (مما يعني أن هذا البكسل مغمور). الكود الذي توصلت إليه يعمل ، لكنه يبدو فظيعًا وبطيئًا للغاية (يجف الطلاء أسرع من تشغيل الكود ..) لذا فأنا أبحث عن طريقة لتسريع الأمور. نظرت إلى vectorizing ، numpy ، وما إلى ذلك ، لكن لا يمكنني فهم ذلك حتى الآن (قد يكون ذلك لأنني كنت في العمل لأكثر من 9 ساعات ..)


كيفية عمل حلقات على الخلايا النقطية باستخدام وحدة تحكم Python في QGIS؟ - نظم المعلومات الجغرافية

تخيل أننا مسؤولون عن تطوير ميزة لإظهار البيانات العامة الواردة من جهة خارجية ليس لديها واجهة برمجة تطبيقات. لنفترض أننا بحاجة إلى إظهار البيانات الحالية والتاريخية لمستوى مياه السدود والتي يمكننا الوصول إليها على http://www.dwa.gov.za/Hydrology/Weekly/ProvinceWeek.aspx؟region=WC. لا يمكننا إضافة الإدخال يدويًا - فهذا يستغرق وقتًا طويلاً جدًا. قد يختار بعضنا الطريقة الصعبة لمطالبة موفر البيانات بإنشاء واجهة برمجة تطبيقات عامة ، ولكن هناك قيودًا زمنية لأننا نحتاج إليها في أسرع وقت ممكن. إحدى طرق حل هذه المشكلة هي استخدام طريقة تسمى "تجريف الويب".

تجريف على شبكة الإنترنت, الويب الحصاد ، أو الويب استخراج البيانات هو البيانات تجريف تستخدم لاستخراج البيانات من المواقع. هناك عدد قليل من مكتبات Python المتاحة من Simple Beautiful Soup (BS) إلى Scrapy المتقدمة التي توفر أيضًا خربشة والعديد من الميزات الأخرى. في هذا المثال ، سوف نستخدم BS4 لأننا نحتاج فقط إلى تجريف الويب الأساسي.

أولاً ، نحتاج إلى تثبيت الطلبات والشوربة الجميلة. نحن بحاجة إلى الطلبات ، حيث يدعم Beautiful Soup فقط تحليل الاستجابة إلى HTML / XML ، دون القدرة على تقديم طلبات إلى الخادم.

الحصول على صفحة ويب مع الطلبات

أولاً ، سوف نستخدم Python shell لفهم تجريف الويب سطراً بسطر ، ثم نستورد مكتبة الطلبات.

سنقوم بتعيين URI للصفحة إلى المتغير عنوان url، ثم احصل على هذه الصفحة باستخدام الطلبات.

تحتوي الصفحة الآن على مصدر صفحة عنوان url هذا. يمكنك التحقق من المصدر من خلال عرض المصدر أو فحص العنصر في المتصفح. في هذا المثال ، سأوضح لك فقط أن رمز الحالة على ما يرام (200) وأن عدد الأحرف في الصفحة ضخم لذا لا نحتاج إلى طباعته.

تحليل مصدر الصفحة مع حساء جميل

تقوم Beautiful Soup (BeautifulSoup) بإنشاء شجرة تحليل من مستند HTML أو XML الذي تم تحليله. باستخدام صفحة الويب التي تم جلبها مسبقًا ، سننشئ كائن حساء جميل يسمى عادة الحساء. بالنسبة لصفحة HTML ، يمكننا استخدام html.parser المدمج في Python. يمثل الكائن صفحة HTML كبنية بيانات متداخلة.

البحث عن علامة HTML

يمكننا بسهولة العثور على علامة من إحدى الصفحات باستخدام وظيفة Find_all الخاصة بـ Beautiful Soup. سيؤدي هذا إلى إرجاع كل العناصر داخل الصفحة.

هذا يعني أنه لا يوجد عنصر به علامة p في تلك الصفحة. يمكنك مقارنة النتيجة بمصدر الصفحة إذا كنت ترغب في ذلك. كما ترى ، يشير القوس المربع [] إلى أنه يحتوي على نوع بيانات قائمة Python ، وبالتالي يمكننا استخدام الفهرسة للوصول إلى العنصر. يمكن الوصول إلى النص الموجود داخل العلامة باستخدام get_text ().

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

تقوم جميعها بإرجاع أول div من الصفحة.

البحث عن العلامات حسب الفئة والمعرف

سيأتي وقت نريد فيه العثور على علامات محددة. بدلاً من استخدام العلامة فقط ، يمكننا أيضًا العثور على الفئة والمعرف. يتم استيعاب البحث حسب الفئة بواسطة وسيطة الكلمة الأساسية class_.

يمكننا أيضًا إضافة علامة إليها ، وستكون كذلك

يمكننا أن نرى أن هناك عنصرين لهما النمط التلقائي للفئة 1 ، لكن لا شيء يحتوي على علامة div.

يمكن أن يكون هناك العديد من العلامات والفئات في جميع أنحاء الصفحة ، ولكن يمكن أن يكون هناك معرف واحد فقط في الصفحة. باستخدام الوسيطة id ، يمكننا العثور على عنصر معين دون الحاجة إلى إضافة علامة أو فئة.

ميزات الحساء الجميلة لا تتوقف هنا. يمكنك قراءة الوثائق لمعرفة المزيد.

الحصول على سمة مثيل

مثيل Soup الجميل الذي يمثل عنصر HTML له سمات تتوافق مع نظيره في HTML. العلامة على سبيل المثال ، لديها على الأقل سمة href. يمكننا الحصول على السمة باستخدام دالة get ().

كشط صفحة معينة

بعد معرفة المعلومات التي نريد استخراجها ، علينا أن نفهم بنية الصفحة. على سبيل المثال ، نريد استخراج منطقة , تاريخ, سد, نهر, صورة, المؤشرات, منتدى التعاون الأمني, هذا الاسبوع, الاسبوع الماضى، و العام الماضي. دعنا نفحص صفحة الويب لفهم الهيكل بشكل أفضل.

العنصر الذي يحتوي على المنطقة والتاريخ هو الأول من الجدول مع id = ContentPlaceHolder1_twh. يمكننا استخراج المنطقة والتاريخ باستخدام هذا البرنامج النصي.

الآن الجزء الأكثر تعقيدًا. سد, نهر, صورة, المؤشرات, منتدى التعاون الأمني, هذا الاسبوع, الاسبوع الماضى، و العام الماضي تقع داخل الجدول. الفكرة هي إجراء حلقة عبر جميع صفوف هذا الجدول ، ثم معالجة البيانات.

معرّف الجدول هو ContentPlaceHolder1_tw. إذا مررنا لأسفل إلى أسفل ، يمكننا أن نرى أن الجدول يحتوي على صف يحتوي على إجمالي القيمة ، والتي لا نريد استخراجها. انظر الكود أدناه

شرح 1

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

شرح 2

نستخدم get_text () للحصول على النص داخل العنصر ، ثم نزيل المسافة البيضاء الأمامية والخلفية بالشريط ().

شرح 3

صورة و مؤشر يحتوي كل منها على ارتباط ونريد استخراج قيمة الارتباط الخاصة به بدلاً من نص الرابط. نحصل على a من خلية ، ونحصل على قيمة href باستخدام get (). نحن نقوم فقط بعمل تجريف بسيط للويب هنا ، لذلك نحصل فقط على عنوان URL لصفحة الصور والمؤشرات التي تحتوي على صورة لمياه السدود والرسم البياني. في العالم الحقيقي ، قد نرغب في الحصول على عنوان URL للصورة بدلاً من الصفحة. يمكنك العبث بالكود للحصول على عنوان URL لصورة السد والرسم البياني للمؤشر.

الآن ، نحتاج إلى التحويل إليها إلى فئة مناسبة ، حتى نتمكن من دمجها في تطبيقنا.

عندما نقوم بتشغيله ، سوف يطبع البيانات المستخرجة كما نحدد حاليًا process_data () لطباعة البيانات المستخرجة فقط. يمكنك تحديث الوظيفة لتلبية احتياجاتك ، مثل حفظ البيانات في نموذج Django أو تصديرها إلى CSV.

رائع ، أليس كذلك؟ جربه الآن. قم بتحديث الكود أعلاه لاستخراج عنوان URL لصورة الصورة ومخطط المؤشر ، أو ابدأ مشروع تجريف الويب الخاص بك. من فضلك تذكر أن تكون مراعًا عند إلغاء موقع ويب لأنه يعمل بشكل أساسي مثل روبوت وهناك احتمال أن نقدم طلبات متكررة. لذا يرجى التأكد من عدم وضع عبء ثقيل على الخادم.


10 إجابات 10

في سن الرابعة ، حصلت على جهاز كمبيوتر ZX Spectrum 48k وكتاب نشرته Usborne يسمى BASIC for Beginners.

من تلك اللحظة فصاعدا كنت مدمن مخدرات.

في العام التالي حصلت على ممارسة الأساسيات الخاصة بك.

في سن الثامنة ، كان لدينا جهاز كمبيوتر في المنزل ، وبدأت أحاول تعليم نفسي لغة C باستخدام كتاب The C Primer. لقد أربكتني المؤشرات حقًا في ذلك الوقت ، واستسلمت بعد فترة ولم أعود إلى C لمدة عشر سنوات على الأقل. لقد استمتعت بكتابة نصوص دُفعات DOS ، واشتغل الضوء في بعض الأحيان برمز آلة بتات قصيرة جدًا تم الحصول عليه من مجلات الكمبيوتر.

ومع ذلك ، لم يكن لأخي أي اهتمام على الإطلاق بالبرمجة.

أوصي بتزويد طفلك بالأدوات (جهاز كمبيوتر ومواد مرجعية) ومعرفة ما إذا كان هذا شيئًا يهتم به أم لا.

لاحظ أنه لم يتم دفعي إلى ذلك مطلقًا ، ولا حتى الإشراف عليه أثناء قيامي بذلك - فقد كان مدفوعاً ذاتيًا تمامًا ، مما جعله أكثر إثارة وإثارة بالنسبة لي. إذا كان يجب أن أجلس وأظهر لي أن الأمر سيكون أشبه بعمل روتيني ، وربما بعد ذلك لن أكون المبرمج الذي أنا عليه اليوم؟

(كتب البرمجة Usborne من الثمانينيات متاحة الآن مجانًا عبر الإنترنت ، بالمناسبة: https://usborne.com/books/computer-and-coding-books)

هذا يعتمد بشكل كبير على الطفل ، كما هي الكل أسئلة من هذا النوع ، ولكن بالتأكيد 5-6 ممكن.

تعرض أطفالي ، الذين يبلغون الآن من العمر ثمانية وتسعة أعوام ، لأول مرة إلى البرمجة بطريقة هادفة في سن 4-5. بدأنا بألعاب بسيطة هي & quotprogramming lite & quot ، والتي تتضمن بشكل أساسي أن يقوم الطفل بإنشاء & quotprogram & quot إما للحصول على قطعة من مكان إلى آخر مع التعليمات ، أو في حالة واحدة & quotprogramming & quot الوالدين ليفعلوا ما يريده الطفل. هذا يعلم مفهوم التعليمات خطوة بخطوة ، والمنطق المنطقي ، وحتى الوظائف (يمكنك إنشاء & quotfunction & quot من عدة تعليمات ، ثم استدعاء هذه الوظيفة بدلاً من تكرار الأسطر). لديهم أيضًا روبوتات قابلة للبرمجة (روبوتات فعلية مع تطبيقات iPad تسمح لهم بإعطائهم تعليمات قابلة للتكرار بلغة قائمة على الكتلة ، بما في ذلك البوابات المنطقية والحلقات والوظائف). هؤلاء ممتعون جدا في ذلك العمر.

قادنا هذا إلى إدراك أنهم - وخاصة الأصغر منهم - كانوا مهتمين بالبرمجة ، لذلك واصلنا على هذا المنوال. في حوالي الساعة السادسة ، يمكن الوصول بسهولة إلى لغة سكراتش أو اللغات القائمة على الكتل المماثلة. لقد استخدموها لبناء برامج بسيطة ولرؤية برامج الآخرين الأكثر تعقيدًا أثناء العمل. في الغالب لم نضغط على أي شيء هنا - كان لديهم عدد قليل من الكتب التي وجهتهم خلال الخطوات الأولية ، ولكن في الغالب كان الأمر يتعلق بتعلم الاستمتاع بالبرمجة والقيام بأي شيء سخيف يريدون القيام به ، حتى لو كان كذلك املأ الشاشة بتموء القطط ، أو اصنع كرة ترتد إلى أجل غير مسمى.

حوالي السابعة ، بدأ كلا الطفلين في تعلم بايثون. ضجر منه الأكبر سنًا إلى حد ما ، لكن الأصغر سنًا أخذها بالفعل والبرامج بمفرده من أجل المتعة ، أو لحل المشكلات (مثل اختيار الخيارات العشوائية لدروس الموسيقى). على الرغم من أنهم غير قادرين على برمجة أي شيء معقد حتى الآن ، فهم يفهمون المفاهيم الأساسية ولديهم رغبة في معرفة المزيد - وهو ما سنقوم به بالتأكيد قدر الإمكان!

ومع ذلك ، فإن الدفع لا يعمل حقًا في هذا العمر ، وأنا لا أوصي به. عرّضهم للبرمجة ومعرفة ما إذا كانوا يحبونها - هذا ممكن جدًا في الخامسة أو السادسة ، إما من خلال الألعاب أو من خلال بدء تجارب البرمجة مع اللغات القائمة على الكتلة ، ثم انتبه عندما يكونون مستعدين للانتقال إلى الخطوة التالية. أطفالي هم من القراء الأوائل نسبيًا ، مما يعني أنه يمكنني تعليمهم بايثون في السابعة - لكنني أشك في أن العديد من الأطفال بحاجة إلى الانتظار لبضع سنوات أخرى قبل أن تكون طلاقتهم كافية. خدش / إلخ. رائعة لأنها لا تتطلب الكثير من القراءة - يمكنك معرفة ماهية الكتل من خلال التعرف على الأشكال.

أنا معجب ببناء عقلية البرمجة دون الحاجة إلى استخدام الكمبيوتر. أحد الأمثلة الجيدة هو لعبة شطيرة زبدة الفول السوداني. أنت تتظاهر بأنك إنسان آلي ، بينما يعطيك الطفل التعليمات التي تنفذها بدقة حرفيًا مضنية.

  • طفل: ضعي زبدة الفول السوداني على الخبز.
  • الأبوين: [يضع برطمان زبدة الفول السوداني غير المفتوح على الخبز (لا يزال في الكيس)]
  • طفل: حسنًا ، أخرج الخبز من الكيس.
  • الأبوين: [يزيل الخبز من الكيس]
  • طفل: الآن افتح الجرة.
  • الأبوين: [صوت آلي] مزيد من التعليمات المطلوبة
  • طفل: أدر غطاء البرطمان.
  • الأبوين: [يدير الغطاء ، لكن الجرة بأكملها تدور]
  • طفل: حسنًا ، أمسك البرطمان في يد ولف الغطاء باليد الأخرى.
  • الأبوين: [يدير الغطاء ، ولكن في الاتجاه الخاطئ حتى يتم إحكامه]
  • طفل: لا لا. أدر الغطاء إلى آخر طريق!

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

كلما زاد عدد الأشخاص الذين يعرفون عن أجهزة الكمبيوتر ، ظهروا في وقت لاحق للسماح لأطفالهم بالقرب منهم. تحتوي مقالة Business Insider هذه على بعض الملاحظات والاقتباسات:

على سبيل المثال ، لم يسمح غيتس لأطفاله باستخدام الهواتف المحمولة حتى يبلغوا سن الرابعة عشرة من العمر. منع جوبز ، مخترع الآي باد ، أطفاله من استخدام التكنولوجيا.

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

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

بالطبع ، قد يُنظر إلى البرمجة على أنها طريقة لتصبح مستخدمًا كفؤًا للكمبيوتر ، لكن بالنظر إلى الانضباط الذاتي في مكتبي المنزلي كمبرمج ، أشك كثيرًا في أن الأطفال في مرحلة ما قبل المدرسة يتعاملون بشكل أفضل مع الإغراء أكثر مما أفعل.

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

& quotCode & quot ليست هي نفسها & quot؛ البرمجة & quot. على سبيل المثال ، لعبت ابنتي تطبيقًا يسمى Coding Safari (https://www.hopster.tv/coding-safari/) عندما كان عمرها حوالي 3-4 سنوات. يعتمد هذا التطبيق على سحب وإسقاط التعليمات التي يمكن لـ & quotrobot & quot اتباعها. لقد فعلت أشياء مماثلة في الحضانة والمدرسة في السنوات الأولى في نفس العمر مع الروبوتات المادية - Bee Bots أعتقد أنها تسمى.

لذلك لديها بالفعل المفاهيم الأساسية للخوارزميات مثل اتباع سلسلة من التعليمات ، بما في ذلك الحلقات والشرطية. ولكن كان ذلك قبل وقت طويل من ارتياحها للقراءة والكتابة (والكتابة) لكميات كبيرة من النصوص والرموز الأخرى (مثل الأقواس).

هل أخبرني هذا ما إذا كانت تحب ذلك أم لا؟ يصعب تحديد ذلك - فالأطفال الصغار مرنون للغاية في تفضيلاتهم ، ومستحضرات التجميل لها تأثير كبير. خاصة مع البرمجة ، يمكن أن تكون النتيجة النهائية مجردة إلى حد ما (خاصة فيما يتعلق بما يمكن تحقيقه من قبل المبتدئين أو الأفراد) مما يجعل من الصعب على الصغار التفكير فيما إذا كان شيئًا يحلو لهم أم لا. سنستمر في استكشاف مفاهيم الحوسبة (على سبيل المثال ، نحن نلعب حاليًا https://shapez.io معًا) على الرغم من أنها لن تقوم بـ & quot الترميز & quot لفترة من الوقت حتى الآن. من المؤكد أنها لم تطور ذلك & quotfear & quot / & quotintimidation & quot؛ رد فعل العديد من كبار السن حول التكنولوجيا ، وإذا كان الأمر كذلك ، فسأكون سعيدًا بذلك!

هذه الإجابة ليس لها علاقة كبيرة بالبرمجة ، ولكن.

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

من هناك ، أخذت براعة إجابة برمجة شطيرة زبدة الفول السوداني @ DarrelHoffman ، ولكن مفتاح منخفض جدًا - ليس بوضوح مثل إجابته. أعتقد أنه ربما كان لدينا حتى لعبة حفلة عيد ميلاد ابتدائية في سن المدرسة كانت عبارة عن تقاطع بين جهود شطيرة زبدة الفول السوداني ، ودبوس الذيل على الحمار و Roomba (أحد الأطفال يضع حظيرة عمياء بينما الآخر (أو أكثر) اكتب وقل & quotprogram & quot لإبقاء الطفل المكفوف على بعض العقبات التي تعترضه في المكان الذي تم اختياره).

لم تكن تحب البرمجة أبدًا. ربما كانت متابعة والدتي وأبي في كلية الهندسة أمرًا كافيًا ، لكن متابعة أبي في مجال تطوير البرمجيات كان بمثابة جسر بعيد جدًا. لقد أخذت ، بالطبع ، دورات في البرمجة ، في كل من المدرسة الثانوية والجامعة (وأظن أنها تنشئ بعض جداول بيانات Excel المفيدة / المعقدة كجزء من وظيفتها). إذا كنت لا تعتقد أن إنشاء جدول بيانات معقد هو برمجة ، فابحث عن & quot؛ automaton & quot؛

مهما فعلت ، لا تدفع أطفالك إليه. تطوير البرمجيات أمر يحبه بعض الناس ، وبعض الناس يكرهونه. عدم تعلم & quotcode & quot في سن 8 لن يمنعه / لها / هم من فعل ما يريدون عندما يحين الوقت ليقرروا ما يريدون القيام به.

لقد تعلمت البرمجة منذ سن الرابعة تقريبًا ، في حضن أمي. تعلمت في GW-BASIC. لقد فعلت ذلك من أجل وظيفتها ، وعملت من المنزل ، لذلك في البداية استلزم ذلك في الغالب تفكيرها والكتابة بصوت عالٍ أثناء قيامها بعملها.

على ما يبدو ، استغرق الأمر حوالي أربعة أشهر حتى حصلت على أول & quot ؛ ولكن لماذا لا - & quot ، وبعد ذلك أعطتني دليل اللغة (السمين للغاية) ومنحتني الوصول إلى جهاز كمبيوتر قديم لبدء القيام بالأشياء بنفسي. كانت تساعدني في كثير من الأحيان عندما طلبت ذلك ، لكن في معظم الوقت اكتشفت بمفردي وتعلمت الأشياء التي كنت أرغب في تعلمها في ذلك الوقت.

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

والآن ، بعد 30 عامًا تقريبًا ، ما زلت أقوى.

عندما يظهرون اهتمامًا واضحًا بفهم أعمق لأجهزة الكمبيوتر.

ونعم ، يمكن أن يحدث ذلك بسهولة في أي عمر تقريبًا. بالنسبة للبعض ، قد يستغرق الأمر 3 سنوات. بالنسبة للبعض ، قد يستغرق الأمر 6 سنوات. بالنسبة للكثيرين ، يستغرق الأمر 12 عامًا. بالنسبة لمعظم الناس ، هذا لا يحدث أبدا ويجب أن تكون قادرًا على قبول ذلك. أجهزة الكمبيوتر ليست مثيرة للاهتمام حقًا لأي شخص غير مهتم بأجهزة الكمبيوتر.

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

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

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

أولاً والأهم من ذلك ، يجب أن أتفق مع بعض المنشورات أدناه على أن متى تبدأ يعتمد على الطفل. لقد أجريت بعض الأبحاث حول & quotTechnische Frühförderung & quot ، والتي لا تُترجم إلى حد ما على أنها دعم أو تدخل مبكر في التكنولوجيا ، وألقيت حديثًا عنها في روضة أطفال. لقد قمت أيضًا بعمل فصل دراسي في علوم الكمبيوتر للأطفال الذين تتراوح أعمارهم بين 7 و 8 سنوات. (لكنني مبرمج ، وليس مدرسًا) أعتقد أنه من البداية يمكنك وتحتاج إلى دعم الأطفال في تحسين المواهب الفنية / البرمجة. أشياء مثل السماح للأطفال بتجربة الأشياء ، لمعرفة السبب والنتيجة ، وتزويدهم بالألعاب لبناء أشياء مثل اللبنات والأدوات. حتى قبل أن يبلغ من العمر عامًا واحدًا ، يمكن للطفل الذي يلعب بأوعية بلاستيكية صغيرة مختلفة مثل الأكواب ذات الأحجام المختلفة والمياه أن يتعلم الكثير ويحظى بالكثير من المرح. (ألعاب مونتيسوري مع أوعية ومياه مختلفة) اعتد على السماح لهم بالبدء اتخاذ القرارات من تلقاء نفسه (بشأن الأشياء المناسبة للعمر ، مثل الملعب الذي تريد الذهاب إليه ، وما الفاكهة ، واللعبة ، والسترة التي تريدها ، ..) كيف يمكن للطفل الذي يُقال دائمًا بالضبط ما يجب القيام به ، أن يتمكن من العثور عليه حلول لمشاكل من تلقاء نفسها في وقت لاحق؟ يعد اتباع الإجراء أمرًا مهمًا للتعلم ، ويتم القيام به بسهولة من خلال اتباع وصفة طهي سهلة. يعد العمل مع الآخرين أمرًا مهمًا ، وتقسيم المهام إلى أجزاء أيضًا - كل ذلك يمكن القيام به عن طريق التعامل مع بعض المهام المنزلية أو مهمة البناء معًا في عائلتك. اشرح للأطفال من بداية فهمهم للغة لماذا وكيف تعمل الأشياء ، حتى لو أدى ذلك إلى أسئلة لا نهاية لها تحد من "تعذيب والديك".

بالطبع هناك موهبة. في حين أن ما سبق يعتبر تكتيكات جيدة لجميع الأطفال ، إلا أن هناك من لديهم مواهب أخرى ، فلا تدفعهم في اتجاه آخر إذا كانوا لا يريدون الذهاب إلى هناك. كما يقول Knuth ، "لديك موهبة في البرمجة ، أو لا تمتلك موهبة". في النهاية ، يمكن استيعاب الترميز الفعلي باستخدام لغة برمجة حسب العمر الذي يمكن لطفلك من خلاله القراءة والكتابة في نموذج أساسي. يمكن للبعض القيام بذلك بحلول سن الخامسة ، والبعض الآخر لاحقًا. لكن يمكن أن يبدأ ترميز الأشياء بالدعم المرئي في وقت مبكر جدًا عندما يكون لدى الأطفال موهبة فنية ، بالتأكيد من 3 إلى 4 سنوات. يمكنك أن تقدم لهم البرمجة من خلال إطلاعهم على كيفية استخدام أداة برمجة مناسبة ، وتعليمهم هياكل الترميز مثل التكرار ، والشرط ، والكائنات. هناك أدوات لذلك مع "شخصيات" يمكن الارتباط بها مثل النحل والسلاحف والروبوتات. لكن دعهم يختارون بأنفسهم متى يبدأون في استخدامه. يمكنك أن تعرض عليهم الذهاب إلى فصل البرمجة المرحة مع أطفال آخرين ، إذا أحبوا ذلك. على أي حال ، إنه لأمر رائع أن نشاهدهم يطورون تلك الموهبة ، أليس كذلك! ملاحظة: يمكنك إلقاء نظرة على عمل Linda Liukas للحصول على بعض الأفكار لبدء الترميز على سبيل المثال.

يجب عرض & quotCode & quot أو & quotprogramming & quot البرنامج ، بقدر التطور الفكري والمفاهيمي ، حيث لا يختلف عن & quotcode & quot التي هي الأبجدية ، أو حتى كتاب مصور يروي قصة من خلال سلوك الكائنات في رسومات متسلسلة.

تشير كل هذه الأشياء إلى قدرة الدماغ على تحويل الرموز إلى مفاهيم وأفعال. قصة الكتاب المصور هي في الأساس نفس لغة البرمجة القائمة على الأيقونات مثل Simulink أو LabView.

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


شاهد الفيديو: لغة بايثون شرح الفصل السابع المقطع الثاني