بعد تحميل Lazarus وتنصيبه
File -> New -> Program
احفظ المشروع بإسم
ستجد ال code التالى بال Editor
كود:
program hello; {$mode objfpc}{$H+} uses {$IFDEF UNIX}{$IFDEF UseCThreads} cthreads, {$ENDIF}{$ENDIF} Classes { you can add units after this }; begin end.
هذه هو هيكل التطبيق
Run -> Build or (Ctrl + F9)
Run or ( F9 )
ستظهر شاشة سوداء وتغلق بسرعة (بسبب انهاء عملية تنفيذ البرنامج) ..مبروك اول برنامج ليك فى Pascal!
لاحظ فى معظم الأحيان برنامجنا سيكون بين .begin, end
ماهى begin, end. ؟
begin هى نقطة البداية لبرنامجك
end. هى نقطة النهاية لبرنامجك
Hello world
WriteLn
هى الFunction الشهيرة للإخراج 🙂
بنستخدم WriteLn عندما نريد ان نطبع شئ للمستخدم كالتالى مثلا
كود:
program hello; {$mode objfpc}{$H+} uses {$IFDEF UNIX}{$IFDEF UseCThreads} cthreads, {$ENDIF}{$ENDIF} Classes { you can add units after this }; begin WriteLn('Hello, World!'); end.
لاحظ الكود المولد يبدأ ب program hello وهنا إن اسم البرنامج hello و uses هى section قسم يشمل ال units -الوحدات-الذى سنستخدمها
اعمل Run للبرنامج ستجد كلمة Hello, World ظهرت واختفت الشاشة بسرعة !؟
فكل الذى علينا إننا نخلي البرنامج ينتظر لمدة معينة مثلا حتى المستخدم يضغط Enter
فبكل بساطة سنضيف ReadLn وهى ستساعدنا فى ان البرنامج ينتظر اى محاولة إدخال من المستخدم فيفضل البرنامج شغال 🙂
begin WriteLn('Hello, World!'); ReadLn(); end.
رائع جدا كدا ال Screen بتنتظر حتى يضغط على Enter
ماذا فعلنا للآن ؟
begin هى البداية
WriteLn('Hello, World!');
بتطبع كلمة Hello, World
ReadLn();
بتجعل البرنامج فى حالة انتظار المستخدم ليدوس Enter
end. هى نهاية البرنامج
ياريت نقدر نكتب الشرح السابق فى برنامجنا لتوضيحه لينا وللقارئ ؟
كدا اديك عرفت مفهوم جديد وهو ال Commenting او التعليق
begin {The Start} WriteLn('Hello, World!'); {Writes Hello, World to the output} ReadLn(); {Waites for } end. {The End}
تقدر تستخدم // بدل من ال { } كالتالى مثلا
//Writes Hello, World to the output
نكتب برنامج بسيط عددين هنشتغل فيه كالتالى
1- هنعرض رسالة للمستخدم نطلب منه إنه يدخل الرقم الأول
2- نقرا الرقم الأول
3- نعرض رسالة نطلب فيها الرقم التانى
4- نقرا الرقم التانى
5- نجمع الرقمين
6- نعرض حاصل جمع الرقمين للمستخدم
تحليلنا للبرنامج على خطوات محددة هو ال Algorithm التى سنعمل بيها لحل المشكلة -البرنامج-
var First: Integer; Second: Integer; Result: Real; begin Write('Enter the first: '); // ask for a number ReadLn(First); // Read it. Write('Enter the second: '); // ask for a number ReadLn(Second); // Read it. Result := First + Second; // Summing. WriteLn('Result: ', Result) ; // Write out the Result. ReadLn(); // Wait for end.
ماهى المتغيرات ؟ هى عبارة عن alias -تسميه- ل data معينة -قابلة للتغيير- نستخدمها داخل برنامجنا ف First هنا بتمثل الرقم اللذى سيدخله ال user وsecond كذلك و Result تمثل حاصل الجمع
بنقوم بتحديد كل المتغيرات فى قسم مخصوص بإسم var بنحدد فيه نوع ال Variable
لإعطاء قيمة لمتغير بنستخدم := Operator
Result := First+Second;
لنعطى قيمة لمتغير سنستخدم ReadLn وهى ستاخد ال Input -المدخلات- من المستخدم وتعمل implicit cast -تحويل قسرى- لل data type وهنا تم التحويل من المدخلات من مجموعة حروف “نص” الى إلى عدد صحيح
كلمة بخصوص ال Data Types
Char-> لتمثيل الحروف
Integer -> لتمثيل الأعداد الصحيحة
Real -> للأعداد الحقيقية
String -> للسلاسل النصية
Boolean -> True, False
تابع هنا
http://wiki.freepascal.org/Data_type
تابع هذا المثال عن ال Data Types
var name: String[10]; age : Integer; sex : Char; married: Boolean; begin name := 'Ahmed'; age := 19; sex := 'm'; married := False; WriteLn('Name: ',name); WriteLn('Age : ',age); WriteLn('Sex : ',sex); WriteLn('Married? ',married); ReadLn(); end.
نجعله تفاعلى اكثر
var name: String ; age : Integer; sex : Char; begin WriteLn('Gathering data...'); Write('Name: '); ReadLn(name); Write('Age: '); ReadLn(age); Write('Sex: '); ReadLn(sex); WriteLn('Data Entered Successfully'); WriteLn('Your Profile'); WriteLn(' name: ', name); WriteLn(' age : ', age); WriteLn(' sex : ', sex); ReadLn(); //Wait for end.
الثوابت Constants
هى عبارة عن aliases -تسميات مستعارة- لdata -بيانات- لن تتغير خلال برنامجك لأى سبب.. على سبيل المثال يوجد Constant شهير وهو PI وقيمته 3.14
program constants1; const PI: Real = 3.14; var radius: Real; area: Real; begin Write('Enter the radius: '); ReadLn(radius); area := PI*(radius*radius); WriteLn('Area: ', area); ReadLn(); end.
ال Operators
+ للجمع
– للطرح
* للضرب
/ للقسمة Real
div للقسمة Integer
mod لباقى القسمة