المحتوى

02‏/12‏/2008

برنامج الهندسة الوصفية (SBR_125)



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

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

يقوم البرنامج بعرض أرقام الأسئلة وهي نفس الأسئلة الموجودة في مذكرة الهندسة الوصفية (بكلية الهندسة/جامعة طرابلس).

بعد عرض السؤال يمكنك تعديل معطيات المسألة لترى الفرق الذي سيحدث إذا تغيرت المعطيات:


ومن ثم يمكنك استعراض الحل:

وتحتوي النسخة الأولية على سؤالين هما 1 و 4 , أرجو الله أن يعينني على اتمامه وأن ينفع بها الطلبة العرب على وجه الخصوص , لما تفتقر له المكتبة العربية من اهتمام. 

لتحميل البرنامج اضغط هنا


تنبيه: البرنامج متوافق مع ويندوز XP فقط



م. البراء عبدالرؤوف الرملي 19-04-2009 , طرابلس/ليبيا

04‏/10‏/2008

نظام تشغيل SBR OS 1.0

السلام عليكم

هذا هو أحد المشاريع التي أقوم بتطويرها حاليا , والمشروع عبارة عن نظام تشغيل وأسأل الله أن يعينني على إتمامه , والمشروع تخطى مراحله الآولى منذ مدة , فقد تم عمل Boot بحيث يتم استعمال النظام مباشر Live CD (وهذا للمرحلة الحالية).

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

أما عن Kernal فقد عزمت على استخدام نظام التشغيل DOS , وبذلك يمكن للنظام SBR OS تشغيل جميع برامج DOS

المبرمج/ البراء عبدالرؤوف الرملي

03‏/10‏/2008

الطبعة الجديدة لكتابي برمجة واجهة المستخدم ج1

السلام عليكم

يسرني أن أقدم إليكم الطبعة الجديدة لكتابي: برمجة واجهة المستخدم ج1
(وهو الكتيب رقم 9 من سلسلة البرمجة المفتوحة بلغة سي باستخدام توربوسي)
قدمت في هذا الكتيب مكتبة خاصة قمت ببرمجتها لتمكنك من تصميم واجهة للمستخدم باللغة الإنجليزية (شبيهة ببيئة النوافذ) أسميتها sbr_win.h ولقد شرحت كيفية استخدام دوال المكتبة شرح مبسط , أرجو الله أن ينفع به وأن يكون مساهمة منا في إثراء المكتبة العربية
والمبرمج العربي.

وهذه النسخة بتاريخ 3-10-2008 لتحميل الكتاب اضغط هنا

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

ثاني دالة هي دالة صندوق السؤال
تقوم هذه الدالة بعرض صندوق السؤال على الشاشة , وتنتظر حتى يضغط المستخدم على زر"No" أو "Yes"

أرجو الله أن ينفع به , تحياتي

شرح طريقة تنصيب ++Turbo C

السلام عليكم 

أقدم إليكم , شرحي لطريقة تنصيب توربوسي 

لتحميل الشرح (مع السلسلة كاملة) اضغط هنا

كما يمكنك تحميل الاصدار 3 من برنامج توربوسي

لتحميل Turbo c++ v3 اضغط هنا

يسرني استقبال تعليقاتكم








01‏/10‏/2008

برنامج لعرض الملفات في مسار معين

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

هذا أحد البرامج التي كنت أحتفظ بها ولم أعرضها إلا اليوم , وهو لعرض الملفات الموجودة في مسار معين وهو بسيط ويساعد كثيرا في التعامل مع الملفات فتستطيع مثلا تطويره لكي تعرف مإذا كان ملف معين موجود أم لا , كما بالامكان استخدامه لحذف ملفات معينة أو عرضها بترتيب معين وهكذا ...
هذا البرنامج أسميته SBR_SORT , وللعلم فإنني أقوم عادة بتسمية برامجي , وغالبا ما يسبقها الرمز SBR قد يستفسر البعض عن معنى هذا الإسم ؟؟ كل ما في الأمر أنني أطمح منذ صغري أن أكون شركة (إن شاء الله) , وقد عزمت أنا وأحد أقاربي على أن يكون اسم الشركة مشترك من اسمنا حيث S هو أول حرف من اسم قريبي , بينما حرف B هو أول حرف من اسمي بينما R هو أول حرف في لقبنا , ولكن مع مرور الأيام ودخولنا في تخصصات دراسية مختلفة نسينا هذا الأمر , إلا أنني وجدت في نفسي ميلا إلى هذا الرمز (ربما بسبب اعتيادي له) , وبما أن قريبي لم يكن مشتركا في ذلك فجلست أفكر في أنه لابد أن يكون هناك "معنى لإسم الشركة" , لايمكن أن أكون شركة بدون دلالة ؟؟؟ , فوجدت أن أقرب كلمة تبدأ بحرف S هي Sofware وبهذا أصبح الاسم SBR = Sofware Bara Ramli , هذه هي قصة الرمز , أما الآن فأترككم مع النص المصدري:
//////////////////////////////////////
// SBR_Sort //
// Version 1.0 //
// By AL Bara Ramli //
// opencpp@yahoo.com //
// www.albara.co.cc //
// Tripoli Libya //
//////////////////////////////////////
// Last Update in 1/10/2008 //
//////////////////////////////////////
#include //stdio.h
#include //dos.h
#include //string.h
// قمت بكتابة الاستدعاء بهذه الصورة لأن المدونة لا تدعم الأقواس المعكوفة
/////////////////////////////////////////
char sss[100][100];
/////////////////////////////////////////
int dir(char path[60])
{
int i=0,done;
struct find_t ffblk;
done = _dos_findfirst(path,_A_NORMAL,&ffblk);
while (!done)
{
strcpy(sss[i++], ffblk.name);
done = _dos_findnext(&ffblk);
}
return i;
}
/////////////////////////////////////////
void print_dir(int i)
{
int j=0;
while (j< n="" void="">
تنبيه: بالامكان التحكم بالانواع المعروضة بتغير النجمة * إلى نوع الملف فمثلا لعرض الملفات التنفيذية فقم بكتابة exe

دالة للطباعة بالعربي على الشاشة السوداء (الجزء الأول)

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

لقد واجهتني كثيرا مشكلة الكتابة باللغة العربية عند تعلمي للغة البرمجة C على Turbo c++

فكما تعلمون أن Turbo c++ يدعم اللغة الإنجليزية , وإذا أردت أن تصمم برنامج لكتابة جملة إنجليزية فما عليك إلا استخدام دالة printf

ولكن في أحد المرات كنت أريد تصميم برنامج أستخدم فيه أسماء عربية , ولكنني تفاجئت بأنه لا يوجد دالة أستطيع استخدامها لطباعة كلمة عربية على الشاشة السوداء

سألت زملائي الطلبة ولكنهم أخبروني أن DOS لا يدعم اللغة العربية إلا في بعض الإصدارات التي اندثرت

جلست أفكر , وأحدث نفسي أنهم إن استطاعوا إدخال اللغة الإنجليزية , فلماذا لا يمكننا إدخال اللغة العربية

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

وقلت في نفسي لما لا أقوم برسم الحروف العربية , مثلا أقوم بكتابة برنامج لرسم حرف الصاد مثلا

وبالفعل نجح الأمر, ولكن لرسم حرف الصاد تطلب مني استخدام 3 دوال رسم ودراسة أبعاد الحرف

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

ولكنني كنت أريد أن أصمم برنامج يقوم المستخدم فيه باختيار حرف معين

فجلست أفكر "ما العمل" فخطر ببالي أن أنه إذا أدخل المستخدم الحرف الإنجليزي

a

يقوم البرنامج برسم الحرف المقابل له في (الكيبورد) وهو الحرف

ش

وبالفعل نجح الأمر واستطعت أن اكتب برنامج يختار فيه المستخدم عرض أي حرف عربي

ولكن إذا أدخل المستخدم أكثر من حرف فإن الحروف تكتب فوق بعضها

, لذا قمت بتعديل البرنامج وذلك بأن يقوم البرنامج بعمل مسافة بين كل حرف وحرف

لكن حتى الآن كل ما فعلناه هو رسم حروف مقطعة وليس متصلة

فجلست أفكر كيف سألصق الحروف معا

كان يلزمني أولا أن أرسم جميع حالات الأحرف , فمثلا حرف العين , في بداية الكلمة وفي وسط الكلمة وفي نهاية الكلمة ومنفرد

وهذه 4 حالات وبالفعل رسمتها جميعا

ولكن واجهتني مشكلة في ربط الحروف بـ (الكيبورد) لأن عدد أزرار لوحة المفاتيح لا تكفي لجميع الحالات , وبعد تفكير وجد أن الحل هو في عمل رقم خاص لكل حالة , ورتبت الحروف العربية في جدول بحيث يكون لكل حالة رقم خاص بها

ستسألني: وكيف تربط الأرقام بـ (الكيبورد) ؟

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

وقد تمكنت من استخدام هذه الطريقة باستخدام مكتبة OpenGL

يلزمك كتابة دوال الرسم يدويا لرسم الحروف وهذا متعب للغاية كما رأيتم في الطريقة السابقة , وكما أخبرتكم فقد تعلمت أساسيات برمجة الرسم وبذلك استطعت تصميم برنامج لرسم الحرف باستخدام (الماوس) بدلا من كتابة الدوال يدويا , وهذه واجهة البرنامج:

وبذلك يمكنك رسم جميع حالات الحروف بسهولة ويسر

ستسألني: وكيف سأستخدم هذه الحروف المرسومة ؟

سأقول لك: يقوم البرنامج بتحويل صورة الحرف إلى ملف نصي

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

يمكنك تحميل الكتاب من هنا

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


برنامج لطباعة تهنئة للعيد باللغة العربية

السلام عليكم ورحمة الله , تقبل الله منا ومنكم
أحب أن أقدم لكم هذا البرنامج وهو لطباعة كلمة "كل عام وأنتم بخير" باللغة العربية على شاشة دوس (في بيئة الرسم) , باستخدام مكتبة arabic.h
قد تستغرب ذلك وتقول:"وهل توجد مثل هذه المكتبة؟" , نعم قمت بإبتكار هذه المكتبة للطباعة باللغة العربية على الشاشة , بتسعة أنواع من الخطوط , وبحجمين .
يلزمك أولا أن تقوم بنسخ المجلد FONT_2 إلى القرص الصلب C ليكون مساره الجديد هو C:\FONT_2 , ثم قم بنسخ الملف arabic.h إلى المسار الجديد c:\tc\include\arabic.h , بعد ذلك قم بتفعيل بيئة الرسم من Turbo CPP ثم قم بتشغيل البرنامج , أما الآن فأترككم مع النص المصدري:

//////////////////////////////////
// By AL Bara Ramli
// opencpp@yahoo.com
// www.albara.co.cc
// Copyright (C) 2008
// Tripoli Libya
//////////////////////////////////
#include //graphics.h
#include //conio.h
#include //arabic.h
//كتبت الاستدعاء بهذا الشكل لأن المدونة لا تدعم الاسهم المعكوفة
void main()
{
char ss[1000];int h=0,i;
char message[]=";g uhl ,Hkjl fodv";
char path_font_1[]="c:\\FONT_2\\15";
char path_font_2[]="c:\\FONT_2\\20";
ini_g("c:\\tc\\bgi");
setbkcolor(15);
for(i=1;i<=9;i++) { puts_arabic(300,h,message,i,15,1,0,path_font_1); puts_arabic(600,h,message,i,20,1,0,path_font_2); h+=40; } getch(); closegraph(); }

لتحميل مكتبة arabic.h ولمعرفة كيفية استخدام هذه المكتبة يمكنك الاطلاع على كتابي:
برمجة وتصميم الخط العربي (الجزء الثاني) من "سلسلة البرمجة المفتوحة" للتحميل اضغط هنا


29‏/09‏/2008

برنامج لعمل فلتر لأنواع الملفات

السلام عليكم

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

إن كنت تريد تجربة هذا البرنامج (أو أي برنامج يستخدم تقنية الرسم) فيلزمك:
1- برنامج توربوسي++ (لعمل الاختبار)
2- اعدادات الرسم (إن لم تعرفها فستجدها في مقدمة كتابي سلسلة البرمجة المفتوحة)
3- انسخ ملف المكتبة المرفق sbr3_win.h إلى المسار c:\tc\include على حسب مكان التوربوسي في جهازك
4- تأكد من أن مسار مجلد الرسم BGI صحيح

طريقة الاستخدم: قم بوضع البرنامج في المجلد المستهدف
بعد تنفيذ البرنامج سيطلب منك:
أولا: folder , إذا كنت ترغب في الدخول إلى مجلد فرعي فاطبع اسم المجلد وإلا فاضغط على Enter
ثانيا: path , قم بطباعة نوع الملفات المراد حذفها , فمثلا الملفات النصية رمزها txt أما ملفات Word فرمزها doc وأما word 2007 فرمزها docx وهكذا ....

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

تحويل صورة إلى ملف نصي والعكس -الجزء الثاني-

السلام عليكم
هذا البرنامج مكمل للمقال الذي يسبقه (تحويل صورة إلى ملف نصي والعكس -الجزء الأول-) حيث نقوم هنا بتحويل الملف النصي التالي:
إلى الصورة المقابلة له كالتالي:
يتوجب عليك أولا نسخ المكتبة bitmap.h المرفقة مع البرنامج إلى المسار الجديد c:\tc\include\bitmap.h ثم قم بتحديد مسار الصورة المستهدفة.

لمعرفة المزيد يمكنك الاطلاع على كتابي: سلسلة البرمجة المفتوحة بلغة ++C باستخدام (Turbo C++ 3.0) في كتيب "عرض الصور" , أما الآن فأترككم مع النص المصدري:

#include //stdio.h
#include //conio.h
#include //graphics.h
//كتبت الاستدعاء بهذا الشكل لأن المدونة لاتسمح بعرض الاسهم المعكوفة
/////////////////////////////////////////
#include //bitmap.h external header
/////////////////////////////////////////
void ini_g()
{
int gd= DETECT,gm;
initgraph(&gd,&gm,"c:\\tc\\BGI");
}
/////////////////////////////////////////
char e(int c)
{
char r='x';
switch(c)
{
case 10:r='A';break;
case 11:r='B';break;
case 12:r='C';break;
case 13:r='D';break;
case 14:r='E';break;
case 15:r='F';break;
}
return r;
}
/////////////////////////////////////////
int save_2d_file(char path[60],int start_x,int start_y,int end_x,int end_y)
{
FILE *f;
int r=0,i,j,d=0;
int c[10000];
setcolor(4);
rectangle(start_x,start_y,end_x,end_y);
if ((f = fopen(path,"w")) == NULL)
{
printf("\nCannot open output file.\n");
r=0;
}
else r=1;
for(j=start_y;j< end_y;j++)
{
for(i=start_x;i< end_x;i++)
{
c[d]=getpixel(i,j);
putpixel(i,j,c[d]);
if(c[d]<=9)
fprintf(f, "%d", c[d]);
else fprintf(f, "%c", e(c[d]));
d++;
}
fprintf(f, "\n");
}
fclose(f);
return r;
}
/////////////////////////////////////////
void main()
{
ini_g();
displaybitmap(0,0,"c:\\tc\\box\\1.bmp");
save_2d_file("c:\\tc\\box\\image.txt",0,0,50,50);
getch();
}

تحويل صورة إلى ملف نصي والعكس -الجزء الأول-

السلام عليكم

منذ أكثر من سنتين كنت قد كتبت هذا البرنامج وظل حبيس الذاكرة , حتى كشفت النور عنه الآن , وللعلم فإن أهمية هذا البرنامج كبيرة بالنسبة لي لأنه جزء مهم جدا من عدة مشاريع وبرامج قمت بتنفيذها سابقا , وقد صممته لكي يحول الصور من نوع 16 لون (بيئة دوس) إلى ملف نصي , حيث كل بكسل في الصورة يتم تحويلها إلى رقمها المقابل حيث الأرقام مرتبة من 1 إلى 16 لذا راعيت أن يكون الترقيم هو (hex) من 1 إلى F

فمثلا لنأخذ صورة الدراجة:

يمكنك اقتطاع أي جزء من الصورة كالتالي:
ومن ثم يتم تحويلها إلى:
يتوجب عليك أولا نسخ المكتبة bitmap.h المرفقة مع البرنامج إلى المسار الجديد c:\tc\include\bitmap.h ثم قم بتحديد مسار الصورة المستهدفة.

لمعرفة المزيد يمكنك الاطلاع على كتابي: سلسلة البرمجة المفتوحة بلغة ++C باستخدام (Turbo C++ 3.0) في كتيب "عرض الصور" , أما الآن فأترككم مع النص المصدري:

#include //stdio.h
#include //conio.h
#include //graphics.h
//كتبت الاستدعاء بهذا الشكل لأن المدونة لاتسمح بعرض الاسهم المعكوفة , لذا قم بتصحيح ذلك
/////////////////////////////////////////
#include //bitmap.h external header
/////////////////////////////////////////
void ini_g()
{
int gd= DETECT,gm;
initgraph(&gd,&gm,"c:\\tc\\BGI");
}
/////////////////////////////////////////
char e(int c)
{
char r='x';
switch(c)
{
case 10:r='A';break;
case 11:r='B';break;
case 12:r='C';break;
case 13:r='D';break;
case 14:r='E';break;
case 15:r='F';break;
}
return r;
}
/////////////////////////////////////////
int save_2d_file(char path[60],int start_x,int start_y,int end_x,int end_y)
{
FILE *f;
int r=0,i,j,d=0;
int c[10000];
setcolor(4);
rectangle(start_x,start_y,end_x,end_y);
if ((f = fopen(path,"w")) == NULL)
{
printf("\nCannot open output file.\n");
r=0;
}
else r=1;
for(j=start_y;j< end_y;j++)
{
for(i=start_x;i< end_x;i++)
{
c[d]=getpixel(i,j);
putpixel(i,j,c[d]);
if(c[d]<=9)
fprintf(f, "%d", c[d]);
else fprintf(f, "%c", e(c[d]));
d++;
}
fprintf(f, "\n");
}
fclose(f);
return r;
}
/////////////////////////////////////////
void main()
{
ini_g();
displaybitmap(0,0,"c:\\tc\\box\\1.bmp");
save_2d_file("c:\\tc\\box\\image.txt",0,0,50,50);
getch();
}

برنامج لاستعراض المقرارت الدراسية

السلام عليكم

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



وهو حاليا يعرض المقررات الدراسية لقسم الحاسب الآلي (كلية الهندسة جامعة طرابلس) وبإمكانك تعديله لأي قسم آخر , وفي الصورة التالية تظهر القائمة التي اعتمدتها لذلك:






27‏/09‏/2008

افتتاح المدونة

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

يسرني افتتاح هذه المدونة , أسأل الله أن ينفع بها

البراء الرملي

27-9-2008
الموافق 27 رمضان 1429هـ