الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

آلية تخزين البيانات في لغة ++c.

بدأه ♥ حُوريّة ♥ في 4 يناير 2008 · 18 رد · 5,423 مشاهدة · في المواضيع والدروس
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم...

راجية من الله أن تكونوا جميعاً في صحة وعافية.

طبعاً خلال الفترة اللي طافت هذي, قرأت مواضيع متعلقة بالبيانات و تصنيفها, فكان هناك موضوع اشعل مخيلتي و انتج سؤال بذهني لو كنت قادرة اكيف و أصوغ هذا التصنيف في لغة ++C.

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

اوكي...هناك نصيحة من البرفسر Bjaren Stroustup(مؤلف لغة ++C) لكل شخص يريد تعلم هذه اللغة باتقان. و هي النظر إلى مكونات وهياكل هذه اللغة نظرة تجريدية ( أي بعيدة عن التفاصيل المملة), بمعنى آخر أن ننظر إلى التقنيات في هذه اللغة وطرق عملها بشكل تجريدي بدون الاهتمام الى التفاصيل المملة التي قد تعمل على إحداث الشتات الذهني أثناء دراستنا لشيء معين. طبعاً, النظر إلى هذه التفاصيل يكون في وقت لاحق ومناسب. أيضاً, فإن هذه النصيحة موجهة للمبتدئين و لكن لا يعني أنها لا تناسب مع من هم بالمستويات المتوسطة و المتقدمة. على العكس, انا شايفة هذه الفكرة مناسبة لكل المستويات.

الغوص في الموضوع:

البرنامج في لغة ++C بل أي برنامج مكتوب بأي لغة تقريباً, يتكون من جزئين فقط لا غير (مع اعتبار كلمة فقط). هذان الجزئان هما:

  • البيانات(البيانات بصفة عامة). مثلا الاعداد الصحيحة 1, 2, 304-, 676, 0, 1-,...
  • العمليات عليها: بالضبط مثل الإجراءات في لغة ++C.

لنأخذ و نتأمل المثال التالي:

بالضبط تخيلوها, مثل الطين أو الصلصال(الخام) و الأدوات الخاصة بصناعة الفخاريات! مثل أداة الفرد و التكوير و التجويف إلى آخره. الطين الخام في هذا المثال, هو البيانات في البرنامج. و الأدوات هي الإجراءات, و الجرّة و المزهرية و التحفة هي ناتج البرنامج The Output. أوكي؟؟ يا ريت تتأملوا المثال لحظات.

موضوعي هنا يتمحورٍ حول البيانات(الخام) و تصنيفها من حيث تخزينها في الكمبيوتر بلغة ++C. و هما صنفان رئيسيان فقط:

  1. حاويات فردية المحتوى: Containers of Singular Content: وهي تلك الحاويات التي لا تحتوي إلا على قيمة أو أكثر من نوع واحد فقط من البيانات: ويتفرع إلى صنفين فرعيين:

- حاوية ذات قيمة واحدة فقط: Container of Single Value: وهي تلك التي لا تحتوي إلا على قيمة واحدة فقط. وهي كالتالي:

o المتغير Variable.

o المرجع Reference.

o المؤشر Pointer.

o الثابت Constant: الناشيء بواسطة مفتاح الكلمة const كثوابت وليس كاقتراحات ممرة للإجراءات.

- حاوية متعددة القيم: Container of Multiple Values: وهي التي تحتوي على أكثر من قيمة (بالطبع من نفس النوع). و هي كالتالي:

o المصفوفة Array.

o العداد Enumeration: الناشيء بواسطة مفتاح الكلمة enum. لا يحتوي إلا على نوع اعداد صحيحة فقط.

2- حاويات متعددة المحتوى: Containers of Multiple Contents: وهي الحاويات التي تحتوي على بيانات من أنواع مختلفة: وهي كالتالي:

o الطبقة (الصنف) Class.الناشيء بواسطة مفتاح الكلمة class.

o الهيكل (البناء) Structure. الناشئ بواسطة مفتاح الكلمة struct.

o الإتحاد Union: الناشئة بواسطة مفتاح الكلمة union.

الصنف الرئيسي الثاني (حاويات متعددة المحتوى) يختلف عن الأول بتعددية الانواع اللي ممكن يحتويه هذا الحاوي و ليس بتعددية القيم. على سبيل المثال الطبقة(الصنف) class قد يحتوى على تقريباً جميع أنواع البيانات المسموح بها في لغة ++C, و الهيكل كذلك struct قد يحوي على اعضاء من بيانات مختلفة مثل عدد من نوع عدد صحيح او آخر من نوع كسري...وهكذا. بينما العداد المدرج تحت الصنف الأول يحتوي على قيم عديدة ولكن كلها لها نوع بيانات واحد فقط وهو من نوع عدد صحيح, كذلك المصفوفة Array قد تحتوي على قيم كثيرة و لأكثر من بُعد واحد ولكن كلها يجب أن تكون من نوع بيانات واحد فقط.

تنبيه : تسمية التصنيفات و ترجمتها بواسطة كاتبة الموضوع (رغد) وهي ليست بيارق او مصطلحات رسمية.

ملاحظة: و ياريت تنبهوني لو كان هناك نقص بالذات في الحاويات.

مع تمنياتي لكم بالتوفيق

تم تعديل هذه المشاركة بواسطة رغـــــــــد في 4 يناير 2008 في 22:46

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#2

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

#3

السلام عليكم ,,

ماشاء الله أخت رغد دائماً مواضيعك مميزة,,

و دائماً تختاري مصطلحات عربية قريبة من المعنى الحقيقي -_-

تحياتي ,,

#4

موضوع قيم وفقك الله.

tvquran_6.gif

#5

شاكرة مروركم الكريم هذا.

بالمناسبة انا ناسية انوه عن شيء مهم جداً.. للأسف المفروض يكون معلم بارز بالنص و هو أن المقصود بالتعددية هنا و الإنفرادية في التصنيفين الرئيسيين رقم 1 و 2 هو التعددية في احتواء نوع البيانات و ليس التعددية في القيم أو الإنفراد بنوع واحد من البيانات: ( النوعية للبيانات The Data Type. )

لكن متأكدة بأنها بديهية لعقولكم النيّرة.

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#6

موضوع جيد جدا لكني مبتدا في لغة السي ولا اجد كتب كثيرة تهتم بهذه اللغة بخلاف السي++ يا ترى ما السبب.

#7
المتعلم للغة ال C كتب:
موضوع جيد جدا لكني مبتدا في لغة السي ولا اجد كتب كثيرة تهتم بهذه اللغة بخلاف السي++ يا ترى ما السبب.

شكراً على مرورك يا أخ متعلم.

على العكس هناك كتب ومصادر للغة السي و لو كانت لغتك الانجليزية جيدة انا بنصحك تاخذ الكتاب التالي:

The C Programming Language

بواسطة مؤلف لغة السي البرفسرDennis Ritchie و Brian Kernighan

وانا مرة شفت نفس الكتاب مع زميلتي مترجم باللغة العربية وعلى الغلاف صورة لنظارة و اوراق تقريباً واللي لفت انتباهي اسم المؤلف ولما سألتها قالت نعم هو نفس الكتاب لكن مترجم بالعربي. يعني متوفر بالمكتبات العربية تقريباً. ممكن تشوف مصادر ثانية وتسأل

تمنياتي لك بالتوفيق

تم تعديل هذه المشاركة بواسطة رغـــــــــد في 6 يناير 2008 في 17:29

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#8

بارك الله فيك.

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

تم تعديل هذه المشاركة بواسطة المتعلم للغة ال C في 9 يناير 2008 في 04:54

#9

أهلا بك يا أخ متعلم...

----------------

هل يمكن إنشاء محرك بحث للكتب المصورة؟

لو كان بنفس ما انا فاهمة فهذا موجود بمحرك البحث قوقل. يقدر المستخدم بواسطته البحث عن الكتب المصورة لما يختار الخيار Book ومن ثم يقوم بتعبئة مربع النص باسم الكتاب المراد يقوم المحرك بجلب صورة الكتاب والعنوان والرابط تبعه

-----------------------

بالنسبة لفكرتك بأن كل شيء في الكمبيوتر عبارة عن بيانات Data ويمكن التحكم فيها بواسطة الشيفرات Code فأنا ماني مختلفة معاك بالنظرية هذي و خصوصاً لأن الكمبيوتر ليس إلا آلة تقوم بتنفيذ التعليمات على البيانات وغير كذا فلسلفات علمية و خصوصيات و تفاصيل....

بالطبع تستطيع رسم لوحة مثل لوحة "مونوليزا" برمجيا Programmatically بواسطة الشيفرة The code وتصير مثل "دا فنشي" لكن برمجياً وليس باستخدام الفرشة و الالوان واللوحة. حتى لو كانت الطريقة معقدة او صعبة بالنهاية ممكن جداً رسمها بشيفرة صافية.

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

------------------------

تمنياتي لكم بالتوفيق

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#10

السلام عليكم ,,

الأخت رغد أجابتك, ولكن أود إضافة شيء إلى ذلك,

الصور ما هي إلا بيانات أولاً و أخيراً,

أعتقد أنك تقصد توفير إمكانية البحث عن النصوص في الكتب المصورة عن طريق الـ scanner على سبيل المثال,

هذه التكنولوجيا تسمى OCR حيث يتم تحويل النصوص الموجودة في الصورة إلى نصوص يمكن البحث عنها و التعامل معها بعد أن كانت عبارة عن صورة ,,

تحياتي ,,

#11

لا اريد ان اتدخل بالنقاش الذي بينكم ..

فقط قرأت الموضوع واعجبني شرح الاخت رغد ..

بالفعل موضوع جميل ومعلومات جميلة ..

تحياتي العطرة ..

يَارَبُ إِن ضَاقَت قُلُوُب الْنَّاسٍ عَنْ مّافِي .. مِنْ خَيْرٍٍ فَعَفْوكَ لَا يَضِيْقْ ..

#12
Khaled.Alshaya كتب:
السلام عليكم ,,

الأخت رغد أجابتك, ولكن أود إضافة شيء إلى ذلك,

الصور ما هي إلا بيانات أولاً و أخيراً,

أعتقد أنك تقصد توفير إمكانية البحث عن النصوص في الكتب المصورة عن طريق الـ scanner على سبيل المثال,

هذه التكنولوجيا تسمى OCR حيث يتم تحويل النصوص الموجودة في الصورة إلى نصوص يمكن البحث عنها و التعامل معها بعد أن كانت عبارة عن صورة ,,

تحياتي ,,

نعم هذا الذي اقصد والله هذا الأمر حيرني أين جهابذة العباقرة

#13

السلام عليكم

أهلا بك اخ "متعلم" وغيبتك عن الموضوع فيها خير و عودة حميدة إن شاء الله.

يعني انت كنت تقصد التقنية اللي أشار لها الاخ خالد وهي OCR Optical character recognition وهو حقل من حقول الذكاء الإصطناعي Artificial Intelligence AI. بالطبع هناك عباقرة مثل ما تفضلت قاموا بحل مشكلة التعرف على الرسم اللاتيني اللي يحاكي الآلة الطابعة Typewriter لكن كتابة اليد وبعض الرسم الفني مثل اللي يحطوها عند تعبئة البيانات موجودة في إنشاء ايميل او حتى تسجيل بمنتدى فهي لازلت مشاكل غير محلولة ولكن لا يزال الحل حولها فعال والأبحاث جارية.

إن شاء الله تكون أحد العباقرة و تحل المشكلة هذي

ملاحظة: لغة ++C من لغات الذكاء الإصطناعي.

تمنياتي لك بالتوفيق

تم تعديل هذه المشاركة بواسطة رغـــــــــد في 18 يناير 2008 في 06:08

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#14
اقتباس
ملاحظة: لغة ++C من لغات الذكاء الإصطناعي

???

BEng , Electronics and communications.

Embedded systems engineer.

Graphics Programmer

عالم الكومبيوتر هو من لديه المعرفة في علوم الكومبيوتر ، الرياضيات ، هندسة الالكترونيات -احمد صالح

#15

أوكي مشرفنا أحمد صالح, رايحة اعتبر شارات الاستفهام هذي, طلب توضيح الملاحظة اللي انا كاتبتها وهي كالتالي:

اقتباس
لغة ++C من لغات الذكاء الإصطناعي.

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

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

-----------------

لغة ++C ايضاً تستعمل في تحريك الآلات من الطيران الالكتروني لحدة الربوت الزغير.

تقريباً لغة ++C تُصنف ثالث لغة مناسبة لصناعة برامج الذكاء الإصطناعي AI Programs.

تمنياتي لكم بالتوفيق

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#16
رغـــــــــد كتب:
أوكي مشرفنا أحمد صالح, رايحة اعتبر شارات الاستفهام هذي, طلب توضيح الملاحظة اللي انا كاتبتها وهي كالتالي:

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

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

تم تعديل هذه المشاركة بواسطة المتعلم للغة ال C في 19 يناير 2008 في 19:34

#17

السلام عليكم ورحمة الله

--------------

اصل الموضوع هذا كان اجتهاد شخصي مثل ما انا موضحة بأصل الموضوع..وكان التصنيف من ناحية البيانات Data..اليوم جيبة لكم من سبأ بنبأ عظيم :happy: وهو الحاويات للشيفرة Code Containers في لغة ++C من ناحية البيانات The Data ومن ناحية العمليات The Operations(functions). لاطشته من كتاب:

LEFT TO RIGHT
An Introduction to Design Pattern in C++ with Qt4

------

أوكي رايحة اشفه بالضبط من الكتاب كالتالي..الموضوع متقدم ويهتم بالمكتبات Libraries و تصنيف إعادة استعمالهن The Reusability مفهوم هندسي برمجي SE :

LEFT TO RIGHT

One aspect of C++ that makes it very powerful is its ability to package code in several different ways.

The following Table defines some terms that are used to describe containers of code. The table is arranged (approximately) in order of increasing granularity from top to bottom.

-------------

Reusable Components

TermVisible attributesDescription
classclass Classname { body } ;A collection of functions and data members, and descriptions of its lifecycle management (constructors and destructors)
namespacenamespace name { body } A collection of declarations and definitions, of classes, functions and static members, perhaps spanning multiple files
header file.hClass definitions, template definitions, function declarations (with default argument definitions), inline definitions, static object declarations
source code module.cppFunction definitions, static object definitions
compiled "object" module.o or .objEach .cpp module is compiled into a binary module as an intermediate step in building a library or executable.
library.lib or .la (+ .so or .dll if dynamic)An indexed collection of object files linked together. No main() function must exist in any code module in a library.
devel packagelib + header filesA library along with ccompanying header files
application.exe on windows, no particular extension on *nixA collection of object files, linked with libraries, to form an application. Contains exactly one function definition called ain().

أقرأوا الجدول من اليمين لليسار مش العكس..الله يعينكوا بس

ملاحظة: لا يعني ان الجدول السابق متعلق بمكتبة Qt..بل عن لغة ++C المجردة العامة ANSI

------

:wacko: صراحة عمل الجدول بيدوخ والله

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

,.,.,.,,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.,...,,.

اربطوا الجدول بأصل الموضوع ولكن من ناحية العمليات على البيانات ايضاً مش البيانات فقط..وبالله التوفيق

-------

اطيب المُنى

تم تعديل هذه المشاركة بواسطة رغـــــــــد في 30 أبريل 2008 في 03:06

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#18

السلام عليكم ورحمة الله وبركاته

اهلين استاذه رغد

مبدعه كما هي العادة في مواضيعك الشيقة , وبالفعل موضوع يستحق الشكر والثناء ,

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

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

بالنسبة لمسألة c++ والذكاء الاصطناعي , فلغة سي ++ من اللغات الرائدة دائما في العديد من المجالات , ومنها الذكاء الاصطناعي لانها باختصار ( لغة متعددة الامكانيات ) لكن لا نستطيع ان نقول هي " لغة برمجة ذكاء اصطناعي " , حتى وان استطعنا برمجة آلات وانظمة تحقق مستوى من الذكاء شبيه بذكاء العقل البشري ,

لانه والسبب باعتقادي انها تفتقد التعامل المباشر مع طرق تمثيل المعرفة (المنطق الرياضي -الشبكات اللفظية او الاطر الجدولية , الوراثة, الطرق التقليدية ) هناك العديد من لغات برمجة الذكاء الاصطناعي لكن من اهمها لغتين :

lisp التي صممت عام 1958 ولغة Prolog عام 1970 ولهما خصائص تميزها عن بقية لغات البرمجة مثل :

1- قابلية تمثيل المعرفة (facts - Relations - Rules - Frames...) وتمتاز لغة Prolog بامكانية تمثيل هذه الحقائق والقواعد في مجموعة من الهياكل المعرفية مكونة بذلك قاعدة المعرفة .

2- معالجة الرموز والاشكال : ( من اهم مميزات هذه اللغات )

بالرغم من هذا نجد ان البعض يلجأ إلى استخدام لغة c++ والبرمجة الشيئية OOP لبرمجة الذكاء الاصطناعي وذلك لان الاطر الجدولية تتيح استخدام الوراثة في c++

اما مسألة الالعاب , فالذكاء الاصطناعي لديه تصنيفين في تمثيل المعرفة :

تصنيف يرتبط بطبيعة المشكلة : والذي يقوم على حصر الاحتمالات الممكنة للمشكلة .

تصنيف يعتمد على مكونات بيئة المعرفة : وهذه الحديث يطول في شرحها .

لكن في الالعاب نستخدم التصنيف الاول .

اكرر شكري لكي مرة اخرى يا استاذه رغد على تطرقك لهذا الموضوع ولهذه الجزئية ايضا .

تحياتي

llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

#19

عليكم السلام ورحمة الله وبركاته

-------------------

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

-------------------

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

-------------------

وكلامك بالمجمل صائب اخي الكريم Time1 و شاكرة مرورك

--------------------

أطيب المُنى

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

مواضيع مشابهة