برمجة كومبيوتر

برمجة كومبيوتر صفحة تهتم بعلوم الحاسوب (لغات برمجة , أنترنت , الأمن المعلوماتي(

الدرس الخامس : الحلقات التكرارية loopsyoutu.be//KHsoODFc_6Y
28/02/2017

الدرس الخامس : الحلقات التكرارية loops

youtu.be//KHsoODFc_6Y

الدرس الخامس : الحلقات التكرارية loops

الدرس الرابع : الدوال functionshttp://youtu.be/OQCjQLuDbRM
28/02/2017

الدرس الرابع : الدوال functions
http://youtu.be/OQCjQLuDbRM

الدرس الرابع : الدوال c/c++ functions

الدرس الثالت : المتغيرات في لغة السي بلس بلسhttp://youtu.be/qBpl-QYx2dk
20/02/2017

الدرس الثالت : المتغيرات في لغة السي بلس بلس
http://youtu.be/qBpl-QYx2dk

المتغيرات في لغة السي بلس بلس c++ variables

الدرس التاني : انواع البيانات في لغة السي بلس بلسhttp://youtu.be//urQc-imUquc
20/02/2017

الدرس التاني : انواع البيانات في لغة السي بلس بلس
http://youtu.be//urQc-imUquc

انواع البينات في لغة السي بلس بلس c/c++ programming language data types

كتابة برنامج hello world في برنامج visual c++ 2008http://youtu.be/Xx7ZjXyjofI
20/02/2017

كتابة برنامج hello world في برنامج visual c++ 2008
http://youtu.be/Xx7ZjXyjofI

كتابة برنامج hello world في لغة السي بلس بلس

السلام عليكم مرحبا بكم في درس جديد من سلسلة تعلم لغة البرمجة سي.---في هذا الدرس سنتحدث عن انواع البيانات data types في ل...
27/01/2017

السلام عليكم مرحبا بكم في درس جديد من سلسلة تعلم لغة البرمجة سي.
---
في هذا الدرس سنتحدث عن انواع البيانات data types في لغة السي.
---
نحتاج لانواع البيانات للتعامل مع الذاكرة و نستعمل الانواع المختلفة للبيانات لاخبار المترجم او المفسر كيف نريد ان نستعمل البيانات و كل نوع له حجمه المخصص في الذاكرة ram و السي تدعم العديد من الانواع المختلفة مثل integer - boolean - float - double - char - wchar_t الخ..
---
------- int عدد صحيح حجمه 4 بايت
------- short عدد صحيح حجمه 2 بايت
------- long عدد صحيح حجمه 4 بايت
------- bool منطقي حجمه 1 بايت
------- char حرفي من جدول الاسكي حجمه 1بايت
------- wchar_t حرفي واسع من جدول اليونيكود حجمه 2 بايت
------- float عدد عشري حجمه 4 بايت
------- void نوع يمكن ان يستعمل مع كل الانواع
---
يمكن استخدام sizeof الذي يقوم بإرجاع حجم النوع النوع
---
printf("size of char iz : %d\n", sizeof(char));
---
عندما تقوم بتنفيد السطر السابق سينتج 1 اي ان حجم النوع حرفي char هو واحد بايت
---
يمكن إظافة signed أو unsigned قبل احد الانواع لكي نحدد هل النوع موجب ام سالب
---
نستخدم هده الانواع المختلفة في تعريف المتغيرات مثال:
---
Type Name = Value;
---
النوع Type يكون واحدا من الانواع الموجودة في لغة السي.
---
الاسم Name يكون اسم المتغير.
---
القيمة Value تكون قيمة المتغير مثلا قيمة المتغير من نوع int يجب ان تكون عددا صحيحا integer
---
ملاحظة :هناك فرق بين الاعلان و تعريف المتغيرات declaration and definition في التعريف نقوم بإعطاء المتغير قيمتا ابتدائية اما في الاعلان لا نقوم باعطائه اي قيمة ابتدائية.
---
int ix1; هذا اعلان
int ix2 = 120; هذا تعريف
---
نستخدم int في الاعلان عن متغيرات من نوع عدد صحيح integer مثال:
---
int ix = 22;
---
في هذا المثال قمنا بتعريف المتغير ix من نوع عدد صحيح integer الذي يحمل القيمة 22 و يكون حجم المتغير integer في الذاكرة 32bit او 4بايت اي انه يمكن ان يحمل قيمتا بين 2,147,483,647 الى -2,147,483,648 ,
في حالة اضفنا unsigned الى النوع int يكون المتغير موجبا يعني انه سيحمل قيمتا بين 0 الى 4,294,967,295
---
bool bx = true;
---
هنا قمت بتعريف متغير bx من نوع منطقي boolean يحمل القيمة true و النوع boolean يحمل القيمة true او false صحيح او خطأ حجمه 1بايت
---
char cx = 'A';
---
المتغير cx من نوع حرفي character و يحمل قيمتا من جدول الاسكي ascii table حجمه في الذاكرة 1 بايت
عندما نريد الاعلان عن مصفوفة نصية مثلا:
---
char x[10] = "AAAAAAAAA";
---
هنا قمنا بتعريف المصفوفة النصية x حجمها 10بايت ملاحظة قمنا بتخزين 9 احرف A فقط لان البايت العاشر يحمل القيمة 0 للدلالة على نهاية المصفوفة لان الدالة الخاصة بطباعة النصوص تقوم بمقارنة كل عنصر من المصفوفة بالصفر فعندما تجده تقوم بانهاء الطباعة.
السطر التالي خطأ:
---
char str[5] = "hello";
---
الكلمة hello حجمها 5بايت و المصفوفة النصية str لا يمكنها تخزين الا 4بايت اي ان دالة طباعة النصوص لن تجد الصفر و ستستمر في الطباعة
----
يمكننا تعريف المصفوفة السابقة على شكل
---
char str[5] = {'h','e','l','l','o','\0'};
---
في هذه الحالة قمنا بإضافة الصفر الى اخر المصفوفة الذي معناه عند طباعة النص عن طريق احد الدوال مثل printf ستجد الدالة الصفر في اخر المصفوفة و ستنهي الطباعة
---
يمكننا طباعة قيمة x مثلا عن طريق الذالة printf:
---
printf(str);
---
wchar_t wc = L'A';
---
في المثال السابق قمنا بتعريف المتغير wc من نوع حرفي واسع wide character الذي حجمه 2 بايت اي ان حجمه اكبر من char و نلاحظ الحرف L قبل الحرف A لكي نحصل على 2بايت في الذاكرة لكل حرف.
هكذا يبدو المتغير wc في الذاكرة :
---
41 00 00 00
A . . .
---
الرقم الستعشري 0x41 يقابله حرف A في جدول الاسكي
جدول الاسكي حجمه 128 و يحتوي على بعض الرموز و الابجدية اللتينية.
اما المتغير من نوع char فيبدو على هذا الشكل في الذاكرة
---
char cx = 'B';
42 00
B .
---
نلاحظ ان حجم المتغير من نوع char هو 1بايت اي انه قادر على تخزين 256 قيمة هذا يكفي لتخزين اي قيمة من جدول الاسكي لان حجمه 128 بايت ، ولكن جدول الاسكي لا يحتوي على جميع اللغات و الرموز لذا يجب تمديد الجدول لكي يظم كل اللغات و الرموز في العالم و هذا ما يسمى باليونيكود unicode الذي يستخدم 16 بت اي 2 بايت في تمثيل الحروف و الرموز لذا النوع wchar_t حجمه 2بايت اي 65,536 قيمة مختلفة لكي نتمكن من تخزين حروف اليونيكود.
---
جدول اسكي :
---
https://upload.wikimedia.org/wikipedia/commons/d/dd/ASCII-Table.svg
---
النوع void يعني لا توجد قيمة.
مثلا عند الاعلان عن دالة لا ترجع قيمة:
---
void func(int x);
---
هنا قمنا بالاعلان عن الدالة func التي لا ترجع اي قيمة و لهذا وضعت void قبل اسم الدالة لكي نخبر المترجم ان الدالة لا ترجع اي قيمة
---
int func1(void);
---
في هذا المثال الدالة func1 لا تأخد اي بارامتر لذالك وضعت void بين الاقواس و الدالة تقوم بإرجاع قيمة عدد صحيح integer لدلك وضعت int قبل اسم الدالة.
---
بقي لنا ان نتحدث عن type casting او التحويل من نوع الى اخر مثال عندنا متغير من نوع integer يحمل القيمة 74 في النظام العشري و اردنا تحويله الى حرفي او char مثال:
---
int ix = 74;
---
يمكننا تحويله بهذا الشكل :
---
char cx = (char)ix;
---
هنا قمنا بتعريف المتغير cx و هنا لا يمكن ان نسند اليه القيمة ix لانها من نوع مختلف و اذا حاولنا القيام باسناذ القيمة مباشرة فسيخبرنا المترجم انه لا يمكن تحويل من integer الى char بدون عمل type casting لذلك قمنا اولا بتحويل من integer الى character او حرفي بإظافة (char) قبل المتغير ix و الان المتغير cx سيحمل قيمة 74 في جدول الاسكي التي يقابلها حرف جي J uppercase.
---
---
الان وصلنا الى نهاية الدرس و اتمنى لكم فهم جيد و اي سؤال انا رهن الاشارة.
---
Jamal

07/01/2017

السلام عليكم اشكر كل اللذين قامو بالاعجاب بهذه الصفحة و في الدرس القادم ساحاول التحدث عن انواع البيانات في السي و ارجو ان تشاركو الصفحة مع اصدقاكم المهتمين 😁

السلام عليكماليوم في درس جديد من سلسلة تعلم لغة البرمجة سي----في هذا الدس سنتعرف على كيفية كتابة برنامج بسيط (hello worl...
30/12/2016

السلام عليكم
اليوم في درس جديد من سلسلة تعلم لغة البرمجة سي
----
في هذا الدس سنتعرف على كيفية كتابة برنامج بسيط (hello world) .
----
البرنامج سيعتمد على النافدة السوداء (console)
و سنحاول فيما بعد ان نبرمج برامج واجهة المستخدم (Graphical User Interface)
----
ما الذي تحتاجه لكي تبرمج ب السي
نحتاج لكي نبرمج بالسي الى محرر نصوص و مترجم سي ك GNU Compiler Collection اختصار GCC الذي يحتوي على ادوات بناء برامج سي و سي بلس بلس و الاصدارات الاخيرة من GCC تدعم لغات برمجة اخرى كالجافا و من الادوات التي يحتويها GCC :
---
- مترجم سي (c compiler) الذي يقوم بتحليل الشيفرة و ترجمتها الى لغة منخفضة المستوى ك الاسمبلي ويخزنها في ملف (object) قابل للربط او (linkable) ويكون عادتا غير قابل للتنفيد و يمكن ايضا ان ينتج عنه مكتبة ربط مشتركة (shared library) التي يمكن استخدامها في برامج اخرى
---
- اللينكر (linker) برنامج يقوم بدمج ملف او عدة ملفات (dll , lib , object) الناتجة عن ترجمة شيفرة المصدر الى ملف قابل للتنفيد (executable)او ملف (object) او (shared library) و توجد طريقتين للربط (linking):
---
طريقة الربط الديناميكي (dynamic linking) التي تحدث اثناء تحميل البرنامج الى الذاكرة عبر اللودر (loader) الذي يقوم بتحميل المكتبات (DLLs) الى الذاكرة (RAM)
---
و الربط ستاتيك (static linking) في هده الحالة يقوم اللينكر linker ب نسخ الروتينس او الاكواد الموجودة في مكتبة الربط الى البرنامج التنفيدي (executable) و التي يحتاجها البرنامج و يكون البرنامج الناتج عن هذا النوع من الربط كبير الحجم مقارنتا بالربط الديناميكي ومن ناحية اخرى لا يحتاج الى تواجد المكتبة في النظام لكي يعمل لان اللينكر قام بتظمين الاكواد او الروتينس (routines) بداخله بعكس الربط الديناميكي الذي يحتاج الى تواجد المكتبات في النظام و الا سيظهر اللودر خطا اتناء تحميل البرنامج لان اللودر يبحث بداخل الملف التنفيذي لكي يعرف المكتبات التي يحتاجها البرنامج لكي يعمل بشكل صحيح
---
كل من (compiler) و (linker) سنتطرق اليهم في الدروس القادمة
---
-محرر نصوص لكتابة شيفرة برنامج السي و توجد عدة محررات نصوص ك notepad العادية المرفوقة مع ويندوز و notepad++ , توجد ايضا برامج خاصة بالسي ك برنامج ميكروسوفت Microsoft visual c/c++ الذي يكون مرفوقا مع منقح (debugger) يمكنك من تنقيح البرنامج للبحث عن الاخطاء الخ من الادوات المرفوقة معه و نحن سنكتفي ببرنامج notepad++ و يمكن ان ننتقل الى visual c/c++ فيما بعد
---
تشغيل GCC على نظام Windows يتطلب تحميل برنامج mingw من موقع mingw.org الذي يحتوي على ادوات GCC لبرمجة السي و السي بلس بلس على windows
---
لتحميل notepad++ من الموقع الرسمي
https://notepad-plus-plus.org/
---
بعد تثبيت mingw و notepad++ تكون جاهزا للبرمجة بالسي
---
الان قم بانشاء مجلد على سطح المكتب (desktop) باسم c_tests و انشاء بداخله ملف باسم helloworld.c و قم بفتحه بواسطة notepad++ واكتب بداخله :
---

int main() {

printf("hello world");

getc();
return 0;
}
---
الشيفرة اعلاه تقوم بطباعة جملة hello world في نافدة console
---
السطر الاول من الشيفرة يقوم بتظمين (include) ملف stdio.h الذي يحتوي على وظائف الادخال و الاخراج و في هذا المثال قمنا باستدعاء وظيفة printf التي تقوم بطباعة النصوص الى نافدة الكونسول console و هده الوظيفة موجودة بداخل الملف الرأسي stdio.h header file , الامر include هو امر خاص بالمترجم compiler يقوم بتوجيه المترجم و يخبره لكي يقوم بالبحث على الملف stdio.h و تظمينه
---
السطر التاني هو بداية الوظيفة الرئيسية main او نقطة مدخل البرنامج (entrypoint) , هده الوظيفة مهمة جدا لان اللودر (loader) عندما يقوم بتحميل البرنامج الى الذاكرة يقوم بنقل التحكم او القفز الى هذه الوظيفة main لكي يبدأ البرنامج بالتنفيذ , ولكي يعرف اللودر عنوان نقطة مدخل البرنامج يبحث عنها في بداخل البرنامج التنفيذي (executable) , نلاحظ تواجد (int) قبل اسم الوظيفة (main) ويعني هذا ان الوظيفة يجب ان ترجع قيمة عدد صحيح (integer) عند الرجوع return لدلك اظفت 0 الى return
---
السطر الثالت هنا قمت باستدعاء الوظيفة printf التي تقوم بطباعة النص hello world , الوظيفة printf معلنة بداخل الملف الرأسي stdio.h لذلك يجب تظمينه وهذا ما قمت به في السطر الاول
---
السطر الرابع ايظا قمت باستدعاء الوظيفة getc التي تنتظر ادخال حرف من لوحة المفاتيح تم ينتقل التنفيذ للسطر السادس الذي يقوم بانهاء التنفيذ بالرجوع من الوظيفة main
---
السطر الخامس ببساطة يقوم بالرجوع من الوظيفة main مما يتسبب بانهاء البرنامج و نقل التحكم الى النظام
---
الان قم بحفض الملف (save) و قم بتشغيل نافدة الدوس
الان يجب تغيير المسار الى المجلد c_tests لكي يتمكن برنامج الدوس من ايجاد الملف helloworld.c
ارجو ان يكون لدى القارئ معرفة باوامر الدوس
لتغيير المسار الحالي نكتب بداخل نافدة الدوس الامر cd اختصار ل (change directory) متبوعا ب مسار المجلد c_tests
---
الان كل شيئ جاهز
اكتب بداخل نافدة الدوس الامر:
---
gcc helloworld.c -o helloworld.exe
---
بعد تنفيذ هذا الامر بالضغط على مفتاح enter يقوم برنامج (GCC) بترجمة و ربط ملف helloworld.c و ينتج ملف قابل للتنفيذ (executable) يمكنك ان تشغله كباقي البرامج.
---
ارجو ان يكون هدا الدرس بسيطا و اي سؤال انا رهن الاشارة
---
اخوكم جمال

MinGW, a contraction of "Minimalist GNU for Windows", is a minimalist development environment for native Microsoft Windows applications.

09/07/2016

السي اعتبرها الافظل بين لغات البرمجة العالية المستوى و التي يجب على كل مبرمج ان يتعلمها لان تعلم لغة السي يسهل فهم الكثير من جوانب الكمبيوتر و يسهل كثيرا تعلم لغات اخرى و تعتبر السي من بين لغات البرمجة القديمة حيث تم تصميمها سنة 1972 من طرف دينيس ريتشي و كين طومسن و من مميزاتها الفعالية في التعامل مع الكمبيوتر و سرعة برامجها بالاضافة الى انها (cross-platform) اي انها تشتغل على عدة منصات مثل اليونيكس و الوندوز و ايضا التعامل المباشر مع الذاكرة الخ . و قد تم تطوير العديد من البرامج الكبيرة و الانظمة عن طريق السي لانها تتيح لك حرية التعامل مع عتاد الكمبيوتر و التحكم بها مثل الاسمبلي و تعتبر انها (high-level assembly)

انتظروني في الدرس القادم

09/07/2016

قريبا مقدمة في لغة البرمجة سي

Address

Agadir

Website

Alerts

Be the first to know and let us send you an email when برمجة كومبيوتر posts news and promotions. Your email address will not be used for any other purpose, and you can unsubscribe at any time.

Share