Posts Tagged ‘first programs’

مرحبا ايها العالم!

ماي 7, 2009

بعد تحميل 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 لباقى القسمة