أهم أقسام المدونة

الصفحات

الثلاثاء، 28 فبراير 2017

الديمقراطية: مساوئ وتطويرات


الديمقراطية: مساوئ وتطويرات 

منذ عام 2006، وأنا أكتب عن مساوئ النظم الديمقراطية، وقد بدأت في نشر مجموعة مقالات عن هذا الأمر في عام 2010، مقترحا بدائل، تطورت مع تجربة الثورة المصرية وما مرت به من منعطفات.. والمؤسف أنني تنبأت في هذا المقال الذي نشرته يوم 19/2/2011 (أي بعد أسبوع تقريبا من تنحي مبارك) بمآل الثورة المصرية وبالانقلاب العسكري (حينما تكلمت عن أن كل ثورة شعبية تتلوها ثورة عسكرية):

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

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

هذه روابط هذه المقالات: 

 

 

 

 

دقة تمثيل الأعداد العشرية


دقة تمثيل الأعداد العشرية Decimal Precision:

تعرفنا حتى الآن على أربعة أنواع مختلفة من البيانات:
1- بيانات منطقية: والنوع الوحيد الذي يمثلها هو Boolean.
2- حروف ونصوص: ويمثلها النوعان Char و String بالترتيب.
3- أعداد صحيحة لا تحتوي على أجزاء عشرية: وتمثلها الأنواع Byte و Short و Integer و Long.. والفرق بين كل نوع وآخر من هذه الأنواع، هو في نطاق الأعداد التي يمكن حفظها فيها، فلو كنت تتعامل مع الأعداد الأصغر من 255 فاستخدم النوع Byte لتوفير مساحة الذاكرة.. ويعتبر النوع Integer أشهر الأنواع وأكثرها استخداما، بسبب سرعة وكفاءة حفظه في الذاكرة وقراءته منها، ما يجعل البرنامج أسرع.. لهذا يستخدمه المبرمجون في الغالب للتعامل مع الأعداد الصحيحة في البرنامج.. أما النوع Long فيستخدم عند التعامل مع حسابات تعطي أرقاما ضخمة جدا لا يمكن حفظها في النوع Integer.
4- أعداد عشرية، بها جزء صحيح وجزء عشري: وتمثلها الأنواع Single 
و
Double و Decimal.. والجدول التالي يقارن بين هذه الأنواع الثلاثة: 

النوع
عدد الوحدات
أقصى دقة عشرية
Single
4 Bytes
7 خانات عشرية
Double
8 Bytes
15 خانة عشرية
Decimal
16 Bytes
29 خانة عشرية
 
ويقصد بالدقة العشرية، عدد الأرقام التي يمكن عرضها في العدد (سواء على يمين العلامة العشرية أو يسارها) بدون إجراء أي تقريب.
بناء على هذا الجدول، لو كان لديك العدد 1.35 فيمكنك تخزينه في الذاكرة كعدد مفرد Single، لأنه يحتوي على 3 أرقام فقط، والعدد المفرد يستوعب أعدادا تحتوي على 7 أرقام كحد أقصى، ولو زادت الخانات العشرية عن هذا، فسيتم تقريبها، ولو زادت الأعداد الصحيحة عن هذا، فسيتم استخدام الأسس العشرية، وفي كلتا الحالتين يفقد العدد جزءا من دقته.. لهذا لو كانت الدقة مهمة ولا تريد فقدها، فعليك استخدام المتغير المزدوج Double للتعامل مع الأعداد التي تحتوي على أكثر من 7 أرقام.
مثلا: لو كان لديك العدد 1.35000081، فعليك حفظه في الذاكرة كعدد مزدوج Double، لأنه يتكون من 9 أرقام (ثماني خانات عشرية وخانة صحيحة واحدة)، والعدد المزدوج يستوعب حتى 15 خانة.
أما لو كان العدد الذي تتعامل معه يتكون من أكثر من 15 رقما، فعليك استخدام العدد العشري Decimal.
افترض أننا عرفنا متغيرا مفردا كالتالي:
Dim S As Single
الجدول التالي يوضح لك كيف ستتأثر الدقة العشرية تبعا للأعداد المختلفة التي سنضعها في هذا العدد، مع ملاحظة تأثير عمليات التقريب على شكل الناتج الذي ستعرضه الرسالة عند استخدام الجملة:
MsgBox(S) 

العدد الذي سنضعه في المتغير
الناتج الذي ستعرضه الرسالة
0.12345678
0.1234568
1.12345678
1.123457
21.12345678
21.12346
321.12345678
321.1235
4321.12345678
4321.123
54321.12345678
54321.12
654321.12345678
654321.1
7654321.12345678
7654321

هذا الجدول يوضح لك أن العدد المفرد يحتوي دائما على 7 أرقام كحد أقصى، حتى لو كان هذا على حساب ضياع بعض الخانات العشرية.. لهذا لا يصلح العدد المفرد لتمثيل الأعداد العشرية التي تحتوي على جزء صحيح كبير أو جزء عشري كبير، لأنك قد تفقد جزءا من الدقة العشرية أو تفقدها تماما، ما يؤثر على ناتج أية عمليات حسابية تجريها.. بينما لو عرفنا متغيرا مزدوجا، واستخدمناه لحفظ الأعداد الموضحة في الجدول السابق، فسنحصل على دقة عشرية تامة في كل الحالات، وبدون أي تقريب.. جرب مثلا:
Dim D As Double = 7654321.12345678
MsgBox(D)
ستعرض الرسالة العدد 7654321.12345678 كاملا بدون أي تقريب، لأنه يتكون من 15 رقما.. لكن لو جربت أي عدد يتكون من عدد أكبر من الأرقام فسيتم تقريبه.. مثال:
Dim D As Double = 87654321.12345678
MsgBox(D)
ستعرض الرسالة العدد 7654321.1234568.
لاحظ أن استخدام العدد المزدوج يستهلك في الذاكرة مساحة أكبر من المساحة التي يستهلكها العدد المفرد.. كما أن إجراء العمليات الحسابية على العدد المزدوج يكون أبطأ نسبيا من إجرائها على العدد المفرد، لكن كما رأينا، تكون دقة الناتج عند التعامل مع العدد المزدوج أكبر من دقة الناتج عند التعامل مع العدد المفرد.  

من كتاب المبرمج الصغير للصف الثالث الإعدادي (الفصل الدراسي الثاني).. للتنزيل كاملا:

الأحد، 26 فبراير 2017

مشغول جدا


مش فاضي يا حبيبتي أحبك = مشغول قوي كتر خيري

كل البنات حلوين جدا = شاغلين مشاعري وتفكيري

محمد حمدي غانم

الجمعة، 24 فبراير 2017

أنواع البيانات Data Types


أنواع البيانات Data Types:

حتى لا نرهق أنفسنا ـ نحن المبرمجين ـ بإجراء العمليات اللازمة لحفظ البيانات في الذاكرة وقراءتها منها، تمنحنا فيجيوال بيزيك كائنات جاهزة لفعل هذا.. وبمجرد تعريف أي كائن منها يقوم بحجز مساحة الذاكرة الملائمة، ويقوم أليا بحفظ البيانات في الذاكرة في الصورة الرقمية المناسبة دون أي تدخل منا في هذه العملية.. وتسمى هذه الكائنات بالمتغيرات Variables.. ولكل متغير نوع بيانات يناسب وظيفته، حيث يختلف كل نوع عن الآخر في المساحة التي يحتلها في الذاكرة، والقيم التي يمكن حفظها في هذا النوع.

والجدول التالي يلخص لك أهم أنواع البيانات في فيجيوال بيزيك:

 

النوع
المعنى
حجمه (Bytes)
الأعداد التي يقبلها
من
إلى
Byte
وحدة ذاكرة
1
0
255
Short
عدد قصير
2
32768
32767
Boolean
منطقي
2
يقبل القيمتين False و True فقط
Char
حرف
2
يحفظ حرفا واحدا بكود الترميز الموسع Unicode.
Integer
عدد صحيح
4
-147483648
2147483647
Long
عدد طويل
8
9.22E18-
9.22E18
Single
عدد مفرد
4
–3.402823E38
-1.401298E–45
أو 1.401298E–45
3.402823E38
للأعداد ذات الدقّة العشرية العاديّة.. وفي هذا النوع، لا يمكن تمثيل الصفر بدقة، فهو يمثل دائما بقيمة صغيرة جدّا جدا، ولكنها أبدا ليست صفرا!
Double
عدد مزدوج
8
للأعداد ذات الدقّة العشرية الفائقة، وهو يستخدم في الحسابات العلميّة.
Decimal
عدد عشري
16
لتمثيل الأعداد الصحيحة والعشريّة، حيث يمكنك تحديد الدقّة العشريّة التي تريد التعامل معها، من 0 إلى 28 خانة عشريّة.
String
نص
(سلسلة حروف)
غير محدد
يحفظ مجموعة من الحروف يتراوح عددها بين صفر و 2 مليار حرف، حيث يتم حفظ كل منها في وحدة ذاكرة واحدة فقط.. لهذا يحتاج النص في الذاكرة إلى عدد وحدات يساوي عدد حروفه.

والأمثلة التالية تريك كيفية تعريف متغيرات من بعض هذه الأنواع:

Dim B As Byte = 5
Dim Bol As Boolean = True
Dim I As Integer = 1000
Dim D As Double = 12.000034
Dim X As string = "Ahmad"
Dim C As Char = "A"c 

من كتاب المبرمج الصغير للصف الثالث الإعدادي (الفصل الدراسي الثاني).. للتنزيل كاملا:

الخميس، 23 فبراير 2017

خلطبيطة


خلطبيطة 

أنا راجل عصري ودقة قديمة
شاعر ولهان
عاشق غلبان
عايش سلطان معليهش القيمة!
شارد فِ جنوني بقول ترنيمة 
واثق من نفسي عشان قلقان
متهور بس في نفس الآن
خايف من بكرة كأني جبان
متمرد بس بنفس التيمة
أنا طيب قوي ومشاعري لئيمة
أنا وحدة وزحمة وضلمة وسيما
خانقاني دموع وعنيا وسيمة
على زمني بشخبط بالألوان
أنا واحد عادي ف توب فنان
إنسان ولا حاجة وحاجة عظيمة

محمد حمدي غانم
21/2/2017