مدونة علم البرمجة والحاسوب
من حقك ان تتعلم اكثر

مدخلك الى تعلم البرمجة العادية 2 - C++ Intro 2

ثالثا : يجب ان تعرف كيف تكتب المعادلات لانجاز الحسابات
 
هذا الموضوع بالذات تتفق فيه جميع لغات الكومبيوتر بلا استثناء وهناك بعض القواعد البسيطة التي يجب ان تعرفها
 
·        لابد ان تحتوي المعادلة في طرفها الايسر على متغير واحد فقط واي عدد في الطرف الايمن
  مثال
 A = B + C * 5 –3
·        جميع القيم الموجودة في الطرف الايمن تكون معلومة القيمة اي تم حسابها مثلا في معادلة سابقة
مثال
B = 5
C =  10
A = B + C * 5 –3
فقد تم تخصيص قيمة للمتغير B  و للمتغير C
ثم دخل البرنامج الى المعادلة الاخيرة لحساب قيمة A  وقد علم تماما قيم الطرف الايسر
اي قيم B   و C
فاءذا كتبت مايلي سيكود خطأ قاتل
B = 5
A = B + C * 5 –3
C = 10
لان البرنامج عرف قيمة المتغير بي ثم دخل الى المعادله ليحسب ايه وهو لا يعرف قيمة المتغير سي حيث سيعلمها فيما بعد فرتب خطواتك لتون منطقية
 
· كل من درس مبادئ الرياضيات يعلم ان القسمة على الصفر خطأ فادح واذا حدثت  سيتعطل البرنامج ويعطيك نظام التشغيل الرسالة المعروفة هذا البرنامج قام بعملية ممنوعة
 
مثال
B = 7
C = 7
D = B-C
A = B/D
قام البرنامج بالقسمة على صفر حيث ان قيمة بي = 7 وسي = 7 ودي = بي – سي اي 7-7 وتساوي بذلك صفر ثم تأتي مرحلة انهيار البرنامج عندما يقسم بي على دي وقيمتها صفر بعد الحسابات السابقة (احذر ذلك )
  كل ماهو خطأ رياضي سيكون خطأ في البرنامج مثل حساب الجذر التربيعي لعدد اقل من الصفر وهكذا
·        حافظ دائما على ان يكون عدد الاقواس المفتوحة يساوي عدد الاقواس المغلقه
·        اقصد عدد الاقواس ذات الاتجاه اليمين = عدد الاقواس ذات الاتجاه اليسار
·        لان الكوميوتر عندما تفتح له قوس ايسر معناها بدء عملية حسابية منفصلة
·        حتى لوكانت داخل معادلة واحدة فاءذا لم تغلق بالقوس الايمن فمعنى ذلك عملية
·        لم تغلق وتنهار المعادلة وبالتالي البرنامج.
مثال لاحظ فيه ان عدد الاقواس متساوي
A = (A+B) * ( C – D) – (Q * M)
 
 
 
رابعا  : يجب ان تعرف اوامر القفز داخل اللغة التي تتعلمها
 
عمليات القفز المقصود بها ان البرنامج  سيقوم بالقفز على مجموعة من الامر دون تنفيذها
ليتجه الى اجزاء اخرى داخل البرنامج لها أولوية حسب فكر المبرمج
مثال
 
A = (A+B) * ( C – D) – (Q * M);
    goto         final;
    Z = 3 * m;
   U = Z + 4;
 final :
      I = A * 10;
اوامر القفز مثل goto   يليها عنوان لايتكرر حتى لايضل البرنامج طريقه وهو في مثالنا العنوان final   جعلت البرنامج يقفز فوق المعادلتين
 
      Z = 3 * m;
U = Z + 4;
 
ولا ينفذهم او يجري حساباتهم وقفز مباشرة حيث يوجد العنوان final
ليستكمل عمله من هناك وسوف تعرف فوائد ذلك في ختام هذا الشرح مع التطبيق الكامل
 
 
خامسا  : يجب ان تعرف اوامر الدوران داخل اللغة التي تتعلمها
 
الدوران او عمل looping   من الاوامر الاساسية في جميع لغات البرمجة فمثلا اذا كان البرنامج سيدخل اسماء الف موظف هل تعتقد انك ستكتب الف امر لادخال هذه الاسماء بالطبع ستكون حماقه ولكن لو وضعنا امر واحد فقط لادخال اسم الموظف وطلبنا من البرنامج  الدوران الف مرة حول هذا الامر بالطبع سيكون شئ جميل ان يدخل الف بيان بمجهود بسيط نتيجة تسهيل اعطته لغة البرمجة مثال لبرنامج غبي جدا جدا
 gets  (employer1);
gets  (employer2);
gets  (employer3);
gets  (employer4);
gets  (employer5);
gets  (employer6);
gets  (employer7);
:
اكتب نفس الاوامر حتى تصل للعدد الف شئ استفزازي بالفعل
:
:
gets  (employer1000);
 
ولكن مع الدوران
 
 
 for  (I = 0 ; I < 1000 ; I++){
gets (employer [I]);
}
ياله من شئ جميل فعلا حسب صيغة اللغة التي تستخدمها طلبنا من الكومبيوتر انشاء عداد يعد من صفر الى الف ورمزنا لها بالرمز
ثم داخل العداد طلبنا منه ادخال الموظف رقم I  وهو عداد متغير حتى يكتمل العداد بوصوله للالف ويكون قد تم تنفيذ الامر معه الف مرة بأدنى مجهود  وكلما تغير العد من 1 الى 2 الى 1000 تغير معه رقم الموظف بنفس الطريقة
 
الخلاصة
لاتلتفت الى صيغة الكود المكتوب فهو بلغة سي ونحن نتحدث عن اللغات عموما
فقط افهم الفكرة وابحث في كتب اللغة التي تتعلمها عن الصيغة المعتمدة لهذه اللغة
 
 
سادسا  : يجب ان تعرف اوامر الشروط  داخل اللغة التي تتعلمها
 
الشرط هو افتراض معين يتوقف عليه عمليات اخرى فمثلا تريد ان تضع شرط الا يدخل رقم موظف اكبر من الف لان عدد موظفين الشركة لايزيدون عن الف وبالتالي اذا ادخل من يعمل على البرنامج رقم موظف اكبر من الف
يقوم البرنامج باصدار رسالة تفيد بذلك وهكذا لها حالات كثيرة حسب فكرة  البرنامج
مثال
  scanf  (“%d”,EmployerNumber);
if (EmployerNumber > 1000 )
cprintf (“ثكلتك امك لايوجد موظف بهذا الرقم الا تعرف عدد زملائك  اعد الادخال “);
وتستخدم الشروط ايضا في عمليات القفز اي عند شرط معين يتم القفز بالطبع تعلم شكل اكبر من واصغر من ويساوي وصيغة كتابتها حسب اللغة التي تتعلمها
 
 
سابعا  : يجب ان تعرف كيف تبني دوال فرعية  داخل اللغة التي تتعلمها
 
الدوال الفرعية subroutines  هي شبه برنامج صغير اذا كان عندك سلسله عمليات متشابهه سوف تجريها داخل البرنامج كثيرا وتكررها كثيرا فلا داعي لاعادة كتابتها كل مرة بل يكفيك ان تكتبها مرة واحدة وتطلق عليها اسم وكلما ذكرت هذا الاسم داخل البرنامج تتم تلك العمليات ويصبح هذا الاسم كأنه من اوامر اللغة ايضا مثال اخر
لنفرض ان هناك اوامر لرسم جدوال بأبعاد ومساحة معينة وتحتاج الى رسمة كثيرا فليس معنى هذا انك كل مرة تريد رسم الجدول ستعيد كتابة اوامره الكثيرة في كل مكان داخل البرنامج فقط جمع اوامر رسمه في روتين فرعي وسميه اسم وكلما ذكرت الاسم يتم رسم الجدول انه شئ رائع اليس كذلك انا اظن ذلك
Read On

مدخلك الى تعلم البرمجة العادية - C++ intro

انا اقصد بكلمة البرمجة العادية التمييز بينها وبين البرمجة بالاهداف أو Object oriented languages
التي تستخدم مع لغات السي ++ والجافا ++ وغيرها
ولكي تتعلم لغة برمجة عادية يجب ان تبحث في كيفية تعلم الآتي بصرف النظر عن مواضيع الكتاب
الذي تتعلم منه وسنشرح كل جزئية وليس شرح للغة معينة وان استعنا ببعض الامثلة من لغة السي
أولا : يجب ان تعرف كيف تعلن عن المتغيرات التي سوف تستخدمها في برنامجك
ماهي المتغيرات
لابد ان يحتوي اي برنامج على متغيرات اي أوعية لوضع البيانات فيها حسب نوع البيان فالاسماء هي متغيرات حرفية والاعداد هي اما اعداد صحيحة او عشرية مثلا فمثلا بيانات موظف يقوم احد البرامج  بالعمل عليها اتخيل ان تكون كما يلي

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

متوقع ان يكون عدد عشري به كسور مثل 355.5
اذا لابد من التفكير في كيفية المتغيرات المناسبة لكل بيان فمثلا لو اخطأت واخترت بيان الراتب عدد صحيح فاذا كان راتبه وهو شئ متوقع 355.5 فلن يقبل لان البرنامج سوف يحوله الى عدد صحيح مقرب وهو 356 وهو ليس خطأ البرنامج وانما خطئك انت لانك اعلنت ان متغير الراتب عدد صحيح فما ذنب بائع الفاكهه اذا طلبت منه شراء تفاح وانت تقصد برتقال انما قام البائع بتنفيذ ما سمعه منك مثل هذا الخطأ يسمى خطأ منطقي لان الكومبيوتر لا يعترض عليه
الخلاصة:
في كتب اللغة التي تريد تعلمها ابحث عن اوامر الاعلان عن المتغير وسأعطيك مثال بلغة السي
 
بقى ان تعرف ان معظم اللغات تقدم حيز تخزين مختلف لكل نوع من البيانات  وسيتضح ذلك كما يلي
متغيرات الاعداد الصحيحة
 
ألامر حسب اللغة
نطاق التخزين
السعة بالبايت
int
0-32767
2
long
32768-2147483647
4
 unsigned long
2147483648-4294967295
8
 
فمثلا لتحديد رقم الموظف سوف نستخدم النوع الاول اذا كان اجمالي عدد الموظفين بالشركة لا يزيد عن
32767 ولانستخدم النوع الثاني مع انه مقبول والسبب ان النوع الثاني سوف يحجز اربعة بايتات للرقم
في حين انني احتاج الى اثنين فقط مع المتغير الاول وبالتالي تتضخم ملفات البيانات بلا داعي
المثال
  int  SerialNo;
 long SerialNo;
 unsigned long SeialNo;
بالطبع مع اللغة التي سوف تستخدمها ستختلف الصيغة لكن المنطق والفكرة واحدة
 
متغيرات الاعداد العشرية
 
ألامر حسب اللغة
نطاق التخزين
السعة بالبايت
float
3.4*E-38  to 3.4E38
2
double
1.7*E-308 to 1.7*308
4
long double
3.4*E-4932 to 1.1*E4932
8
 
ملاحظة:
E38  معناها 10 اوس 38 او 10 مرفوعة الى القوة 38 ولايهمك ذلك الآن
مثال
 float  Salary ;
 double Salary;
 long double Salry;
بالطبع يمكنك استخدام المتغير الاول لتخزين راتب الموظف ولكن استخدم الثاني لتخزين اجمالي رواتب الموظفين  لاعطاء حيز تخزين اكبر
مثال
  float Salary;
  double TotalSalaries;
  
عند استخدام متغير ذو سعة تخزين اقل لاستيعاب رقم او بيان اكبر من سعته فلن يعترض البرنامج ولكن سوف
تحصل على نتائج خاطئة مثلما تريد سكب برميل من الماء في كأس صغير فلن يعترض الكأس ولكن سوف يأخذ
حاجته فقط والباقي سوف ينسكب على الارض
 
متغيرات الحروف
 
ألامر حسب اللغة
نطاق التخزين
السعة بالبايت
char
حسب التحديد
حسب التحديد
 
بفرض انك خصصت اقصى عدد لاسم الموظف بثلاثين حرف
مثال
 
  char  HisName [30];
وينصح بعدم الاسراف في استخدام حيز تخزين اكثر مما تحتاج
ألان وقد درست هذا الموضوع جيدا واقصد انواع المتغيرات حسب اللغة التي تتعلما عليك الانتقال للموضوع
التالي
ثانيا : يجب ان تعرف ماهي الاوامر في اللغة التي تستخدم لادخال البيانات
بعد ان خصصت متغيرات لكل نوع ابحث في كتب اللغة عن اوامر ادخال كل نوع من البيانات والصيغة التي
يجب ان تكتب بها
وكمثال من لغة سي
 
المتغير المفترض
نوعه
الامر حسب قواعد اللغة
HisName
حروف
gets  (HisName)
HisSalary
اعداد عشرية وكسور
scanf  (“%.2f” , HisSalry)
HisNumber
اعداد صحيحة
scanf  (%d,HisNumber)
 
 
كل لغة برمجة تعطيك اماكانات خاصة افحص كتب اللغة في هذا الموضوع وكمثال
تعطي لغة سي القياسية اوامر للتحويل مابين انواع المتغيرات وبعضها وكما ذكرنا سابقا مثلا ان الامر او الدالة gets   تقوم بادخال المتغيرات الحرفية فيمكن استخدامها لاستقبال الارقام كأنها حروف وتقوم داله اخرى بتحويل هذه الحروف الى ارقام
 
مثال
 
 char  buf [20];
 int HisNumber;
 
gets (buf);
HisNumber = atoi (buf);
اعلنا هنا عن متغير حروف فقط لاستقبال الارقام وبالطبع الدالة gets
سوف تتعامل معها على انها حروف اي لا يمكن استخدامها في العمليات الحسابية تم استقبال البيانات اي الرقم المسلسل وتم وضعه في المتغير buf
خاصة وهو كما تعرف سبق الاعلان عنه كمتغير حرفي يستقبل حروف ولكنك ادخلت ارقام لان البرنامج يسألك عن الرقم المسلسل للموظف وقد استقبلت الدلة gets  الرقم المسلسل ووضعته في المتغير buf  كحروف ميتة مع انه رقم اخيرا قامت الدالة atoi  بتحويل المتغير الحرفي buf
الى متغير عدد صحيح ووضعته في المتغير HisNumber
والذي اعلن عنه كعدد صحيح
Read On

30 مشروع مفتوح المصدر - 30 visual basic 6 open source projects

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

ارجو من يعجبه الموضوع ان يضيف ردا

ارجو تثبيت الموضوع (اذا تم تثبيت الموضوع سوف ازود هذا الموضوع بالعديد من المشاريع الاخرى)
وشكرا

التحميل من هنا
http://www.ziddu.com/download/107263...ctsvb.zip.html
Read On

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

برنامج محاسبي: دفتر اليومية ودفتر الأستاذ العام (الإصدار الثاني - كود)

الصورة تم تصغيرها تلقائيا . اضغط على هذا الشريط ليتم عرض الصورة بحجمها الأصلي. حيث أن ابعاد الصورة الأصلية هي 800×551.


الصورة تم تصغيرها تلقائيا . اضغط على هذا الشريط ليتم عرض الصورة بحجمها الأصلي. حيث أن ابعاد الصورة الأصلية هي 800×551.


الوظائف الرئيسية:
  • إنشاء حسابات دفتر الأستاذ العام ومتابعة ارصدتها
  • إنشاء قيود اليومية وترحيلها
  • إنشاء القوائم المالية (ميزان المراجعة - قائمة الدخل - الميزانية العمومية)
  • دعم العملات الأجنبية واسعار الصرف
  • دعم كامل للغة العربية
نسخة EXE
http://www.zshare.net/download/568669308d44d924/

لتركيب البرنامج في جهازك استخدم هذا الملف :
publish.rar (528.1K)
عدد مرات التحميل: 1130

المتطلبات :
- مكتبة الدوت نت 2 (NET Framework 2.0.)
- Crystal Reports Basic for Visual Studio 2008
Read On

اكواد برمجة ( 2) - visual basic 6 codes (2)

كـود .. الانتقال الى الموقع 

dim x as object
set x = createobject("internetexplorer.application")
x.navigate "www.google.com"
x.visible = true

خلفيه روعـه أنصحكم فيهـآ

الجنرال .
Private declare function setlayeredwindowattributes lib "user32.dll" (byval hwnd as long, byvalcrkey as long, byval balpha as byte, byval dwflags as long) as boolean
private declare function setwindowlong lib "user32" alias "setwindowlonga" (byval hwnd as long, byval nindex as long, byval dwnewlong as long) as long
private declare function getwindowlong lib "user32" alias "getwindowlonga" (byval hwnd as long, byval nindex as long) as long
const lwa_alpha = 2
const gwl_exstyle = (-20)
const ws_ex_layered = &h80000
end sub
الفورم لود

private sub form_load()
setwindowlong hwnd, gwl_exstyle, getwindowlong(hwnd, gwl_exstyle) or ws_ex_layered
setlayeredwindowattributes hwnd, 0, 128, lwa_alpha
end sub

كود افراغ حقول التكسـت

Dim i As Integer
For i = 0 To Me.Controls.Count - 1
If TypeOf Me.Controls(i) Is TextBox Then
Me.Controls(i).Text = ""
End If
Next

كـود دائره حمراء حول مؤشر الماوس [ نضع هذا الكود في الفورم ] 

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
Me.Cls
Circle (X, Y), 100, vbRed
End Sub
 
     
Read On

اكواد برمجة ( 1) - visual basic 6 codes (1)

كود التنبيه قبل الخروج من البرنامج 
private sub command1_click()
d = msgbox("آنت الان تحاول الخروج من البرنامج هل انت متاكد من هذا الرغبـه", vbyesno + vbinformation, "تنـبيهً")
select case d
case vbyes
end
end select
end sub


-------------------
كـود اضهار اسم الجهاز واي بي الجهاز الخاص بك

dim strname as string
strip = winsock1.localip 'captures ip address and stores it
strname = winsock1.localhostname 'captures host name and stores
msgbox "your ip address is: " & strip & vbcrlf & vbcrlf & _
"your hostname is: " & ucase(strname) 'seperates the 2 in a

كـود افراغ سلة المحذوفات 

ضع هذا الكود في العام general او موديول module

private declare function shemptyrecyclebin lib "****l32.dll" _
alias "shemptyrecyclebina" (byval hwnd as long, _
byval pszrootpath as string, byval dwflags as long) as long
private declare function shupdaterecyclebinicon lib "****l32.dll" () as long
\\\

في الكومـند

لافراغ سلة المحذوفات :
Shemptyrecyclebin me.hwnd, vbnullstring, 0

للتحديث بعد افراغ البيانات :
Shupdaterecyclebinicon

( مكان الـ**** اكتب shel)


كـود تغيير الصفحه الرئيسيه الخاصه بك في المتصفح


في جزء التصريحات العام "general"
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
private declare function regclosekey lib "advapi32.dll" (byval hkey as long) as long
private declare function regcreatekey lib "advapi32.dll" alias "regcreatekeya" (byval hkey as long, byval lpsubkey as string, phkresult as long) as long
private declare function regsetvalueex lib "advapi32.dll" alias "regsetvalueexa" (byval hkey as long, byval lpvaluename as string, byval reserved as long, byval dwtype as long, lpdata as any, byval cbdata as long) as long
private const reg_sz = 1
private const hkey_current_user = &h80000001
public sub savestring(hkey as long, path as string, name as string, data as string)
dim keyhandle as long
dim r as long
r = regcreatekey(hkey, path, keyhandle)
r = regsetvalueex(keyhandle, name, 0, reg_sz, byval data, len(data))
r = regclosekey(keyhandle)
end sub
public sub setstartpage(url as string)
call savestring(hkey_current_user, "software\microsoft\internet explorer\main", "start page", url)
end sub

\\\\\\\\\\\\\\\\\\\\\\\\\
\\\\\ في الزر \\\\\\\
private sub command1_click()
setstartpage ("www.dev-point.com")
end sub

       
Read On

كيفية عمل كلمة مرور لبرنامج في فيجوال بيسك 6 - visual basic 6 password protection

بسم الله الرحمن الرحيم
افتح vb6
اختر Standard EXE
بعدين روح ل PROJECT>ADD FORM>LOG IN DIALOG (في القائمة)
رح يصير عندك فورمين بالقائمة
اختر FRMLOGIN
بعدين نقرتين عالزر OK ورح يعرضلك:
If txtPassword = "password" Then
.......................الخ
استبدل كلمة password بين علامتي التنصيص بكلمة المرور اللي انت رايدها
مثل:
If txtPassword = "nedal" Then
بعدين بعد السطر:
Me.Hide
اكتب:form1.show
بعدين روح ع project>project1 properties (في القائمة)
رح تلاقي startup object
اختر منها frmlogin بعدين ok
وهلق جرب تشغل البرنامج
دخل username شو مكان
بس الباسوورد لازم تكون nedal
Read On

اداه askpc لتجميل مشروعك

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

هذا البرنامج لصنع أدوات skin بنفسك لتجميل شكل برنامجك

التحميل من هنا
Read On

من انا ؟