تعلم الكودات (السطور البرمجية ) الخاصة بتطبيقات ال IOS مع البرنامج التعليمي للغة Swift اهلا بك في عالم البرمجة .

هل فكرت يوما بان يكون التطبيق الخاص بك لجهاز الايفون والايباد مدهشا ليس هناك وقت لتعلم افضل من الان !!!

هذا البرنامج التعليمي هو سلسلة متكاملة للمبتدئين للا نضمام الى مطورين ال ios

ستاخذك هذه السلسلة من الاساسيات

( مثل بداية مواضيع swift و عمل سطور الاوامر البرمجية  الخاصة بالتطبيق). وكل شي سجعلك قادرا لعمل تطبيق متكامل مع نظام ios مع جمالية واجهة المستخدم , تطوير التطبيقات مع نظام ios السماء هي الحدود !!

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

ملاحظة // اذا كنت مبتدئا في البرمجة هذا البرنامج التعليمي هو لك , اما اذا كان لديك بعض الخبرة وتريد تعلم خطوات اسرع تابع هذه السلسلة .

تاكد من ان  لديك احدث نسخة من xcode 6 للعمل مع swift

دعنا نبدأ : الخطوة الاولى هي تحميل برنامج xcode الذي تكتب فيه التطبيقات الخاصة بك ويمكن  تحميل البرنامج  مجانا من المتجر الخاص بالماك ((mac app store.

مجرد الانتهاء من تثبيت برنامج ال xcode افتح البرنامج واضغط على الزر التي تقول get started playground

ملاحظة// اذا كنت لا ترى الواجهة المكتوب عليها welcome to xcode اضغط window / welcome to xcode لكي تعرض

playground : هو المكان او الوسيلة التي يمكنك من خلالها كتابة السطور البرمجية الخاصة بلغة swift ولا يمكنك تشغيل ال playground كتطبيق للايفون لاكن ستساعدك في فهم اساسيات swift لاتقلق سيكون خلق التطبيق الخاص بك للايفون قريبا .

اعطي اسم  myplayground  و اختار iOS من platform واضغط next احفظ ال playground في المكان الذي تريد . 

مقدمة لل playground الان سترى ان ال playground الذي قمت بانشاءه يتكون من ثلاثة سطور برمجية .

الان سنقوم بتفصيل السطور الخاصة ب playground 

    Playground – noun: a place where people can play//

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

      import UIKit

   السطر الثاني هو رموز مكتوبة من قبل شركة ابل كل ماتحتاج معرفته عنها هو انها ضرورية لبقية السطور البرمجية

 var str = “Hello, playground

السطر الثالث ركز معنا في هذا السطر يقوم بانشاء متغير اسمه str الذي يحمل قيمة Hello, playground

على يمين الشاشة سترى ان xcode يعرض القيمة التي يحملها المتغير str  

حاول تغير “Hello, playground” الىlook what i can do”

هكذا : “!var str = “Look what I can do

الان انضر الى يمين شاشة ال xcode  سترى انها تغيرت ماذا تقرأ ؟ تهانينا ان هذا كان مجرد فعل برمجي

احسنت !

المتغيرات : الان الوقت لك لتقوم بللعب بالمتغيرات

يستخدم المتغير لحفظ القيم داخله عندما تريد خلق متغير نقوم باستخدام الجملة الاتية :

var yourVariableName : yourType = yourInitialValue

yourVariableName : هنا ضع اي اسم للمتغير الذي تريد انشاءه مثال على ذلك age او str او اي اسم اخر .

yourType : هنا ضع نوع المتغير اي مانوع القيمة التي سيحملها المتغير اذا كانت عدد صحيح نضع Int واذا كانت جملة نضع string والى اخره من انواع  المتغيرات والتي سنتعلمها في الموضوع القادم .

yourInitialValue : هنا ضع القيمة التي سيحملها المتغير كان تكون ١٥ اذا كان المتغير من نوع int  او اي جملة اذا كان من نوع string .

لناخذ مثال لا نشاء متغير

 قم بكتابة السطر التالي في ال  playground الخاصة بك :

الان دعنا نتعلم معا العمليات الرياضية البسيطة في البرمجة قم بكتابة ٢+٢ واذهب الى السطر التالي  The playground  سوف تعطيك النتيجة في ايمن الشاشة .

هل كان ذلك رائعا ؟؟ يمكنك القيام باي عملية رياضية في البرمجة  .            

التحدي ! : قم باستخدام ال  playground الخاصة بك  ليقول لك ماهية نتيجة (١٢٣*٤٥٦) ؟؟

نستنتج من هذا ان ال playground يمكن استخدامه ك يستخدم كحاسبة بسيطة وكبيرة بحل المعمليات الحسابية

قبل البدأ بتعلم المتغيرات في البرمجة دعونا نمسح كل السطور عدا السطر import UIKit من المهم ان يبقى هذا السطر لانه ضروري ولايعمل بدونها ال playground

السطر الاول تم خلق متغير اسمه str من نوع string اي ان القيمة التي سيحوبه ستكون جمل او احرف وبالفعل تم اعطائه قيمة  

“Look what I can do”

السطر الثاني تم انشاء متغير اسمه age من نوع Int اي ان القيمة التي سيحملها عدد صحيح غير كسري وفعلا تم اعطائه قيمة ١٨

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

انواع المتغيرات : هذه قائمة من المتغيرات التي تستخدم في لغة swift :

١- Int للاعداد الصحيحة

٢- Double  للاعداد الكسرية 

٣-Bool للصح او الخطأ true, or false

٤- String للجمل والحروف

تدرب على استخدام هذه الانواع اكتب الاسطور الاتية في ال playground

الان قم بتغير قيمة المتغير name  باضافة سطر وقم بكتابته هكذا name = Ry”

سنلاحظ انه عند تغير قيمة المتغير لايتطلب كتابة ال var مجددا كذلك نوعه string  لان ال xcode قد قام بانشاءه مسبقا وسيفهمك بمجرد كتابة اسم المتغير انك تقصد المتغير الذي قمت بانشاءه مسبقا  وسيقوم ياستبدال قيمة التي يحملها name ب Ry بدل Ryland .

التحدي ! قم بانشاء متغير يحمل اسم لعبة  فديو مفضلة لديك

الحل :”   

الثوابت :  هي انواع من المتغيرات تسمى الثوابت هنا نستخدم let بدلا من var  لانشاء المتغير وتسمى بالثوابت 

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

الان حاول خلق ثوابت في ال playground الخصة بك كما في الشكل :

الان حاول ادخال قيمة جديدة للثابت captain مثل اعطائه قيمة  “Hook” 
تلاحظ وجود رمز صغيراحمر مع علامة تعجب يأتي على الجانب اليسار لليد . هذا يقول لك أن خطأ قد حدث في التعليمات البرمجية.
قم بالضغط على الرمز الذي ضهر لك سوف يقول لك بان خطأ قد حصل بسبب انك قمت باستخدام let التي تقوم بانشاء ثابت والثابت تكون قيمته هي القيمة الاولية فقط ولايمكن تغييرها .

قم بمسح السطر “captain = “Hook سوف يختفي الخطأ

التحدي ! قم بعمل ثابت اسمه favoriteNumber من نوع Int وقم باعطاءه اي قيمة 

الحل هنا :

let favoriteNumber: Int = 3

الكتابة بطريقة الاستدلال  : تعب من الكتابة الان ؟! لا تقلق swift h اذكى مما تضن ! 

هناك ميزة جديدة في سويفت تدعى Inferred Typing هذايعني انه يوجد مايكفي من المعلومات التي لاتحتاج الى كتابتها في كل وقت وهذا يوفر لك الوقت والطاقة كما يجعل برنامجك اسهل للقراءه واقل تعقيد .

لنحاول تجربة ذلك لنقول

luckyNumber: Int = 7

ثم نستبدلها ب :

var luckyNumber = 7

 

هنا قد لايبدو الاختصار في وقت الكتابة لاكن مستقبلا ستلاحظ انه يوفر فعلا الوقت تذكر دائما ان الاستدلال (الاختصار في الكتابة)  يعمل كندما تتوفر المعلومات الكافية .

اذا اردت تغير نوع من Int الى Double قم باضافة 0. الى العدد 7 الذي هو بالاصل Int هكذا 7.0

التحدي ! قم بالعودة الى جميع المتغيرات والثوابت واعد كتابتها بالطريقة المختصرة 

الحل هنا :

 

عمليات المقارنة : تقوم ال Playground بعمليات حسابية بسيطة كما ذكرنا سابقا كذلك يمكنها القيام بعمليات المقارنة بين الارقام والقيم  والادواة التي تستخدم في المقارنة هي : 
  • < اكبر من 
  •  اصغر من
  • == يساوي الى
  • =< اكبر من او تساوي  
  • && و 
  • || او 

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

مثال لذلك لنقم بكتابه متغيرات تحوي ع قيم معينة :

 

عظيم الان يمكنك استخدام المتغيرات  للمقارنة  بين متغيرين ضع الكود الاتي في نهاية ال Playground الخاصة بك :

                                                              batmanCoolness < aquamanCoolness
                                                                         supermanCoolness >= 8
                                        (batmanCoolness == (aquamanCoolness + supermanCoolness
    (batmanCoolness > aquamanCoolness && batmanCoolness == (aquamanCoolness + supermanCoolness
                       batmanCoolness < supermanCoolness || aquamanCoolness < supermanCoolness

نتيجة المقارنة سوف تضهر في يمين الشاشة لل Playground الخاصة بك وستخبرك في ما اذا كانت النتيجة صحيحة ام خاطئة :

 

عملية المقارنة با (و) (AND) تتطلب ان يكون المتغيرين صحيحين اما ال (او) ال (OR)  ف تتطلب فقط ان يكون احد المتغييرين صحيحا (true)

التحدي ! : قم باضافة متغير اسمه spidermanCoolness يعطيه قيمة  . ثم حاول استخدام بعض عوامل المقارنة (مثل>، <، ==، &&، و||) لمقارنةspidermanCoolness مع Coolnessاخرين. (مع ملاحضةأنه قيمة batmanCoolness ثابت بحيث لا يمكن تغييره؛))

الحل هنا :

جمل  If/else :  جمل الشرط يقوم البرنامج بتنفيذ كتلة تعليمية من السطور البرمجية اذا كان الشرط صحيحا ولايقوم بالتنفيذ اذا كان الشرط غير صحيح اليك المثال التالي قم بكتاية السطور البرمجية الاتية في ال playground الخاصة بك  : 
if (batmanCoolness > spidermanCoolness) {
  spidermanCoolness = spidermanCoolness - 1
} else if (batmanCoolness >= spidermanCoolness) {
  spidermanCoolness = spidermanCoolness - 1
} else {
  spidermanCoolness = spidermanCoolness + 1
}

في هذه الكتلة من التعليمات البرمجية يقوم بتقليل بمقدار واحد لل Spiderman’s coolness اذا كان  batmanCoolness اكبر او يساوي من 

Spiderman’s coolness اما اذا  batmanCoolness اصغر من Spiderman’s coolness يقوم بزيادة ال Spiderman’s coolness بمقدار واحد.

كما ترى في البرنامج ان Spiderman’s coolness قل بمقدار 6 بسبب ان الشرط الاول ل if صحيح والبرنامج لا ينضر لل الشرط الاخر if else .

التحدي !: قم بخلق عبارات التحكم الشرطية باستخدام الابطال الخارقين في المثال السابق تذكر شرط عبارة  else if او if d[f يجب ان تكون صحيحة ويقوم البرنامج بالانتقال الى عبارة else اذا كان الشرط غير متحقق في if و else if . 

الحل :

if(supermanCoolness < spidermanCoolness)  {
  supermanCoolness = supermanCoolness - 1 
  spidermanCoolness = spidermanCoolness + 1
} else if (supermanCoolness == spidermanCoolness)  {
  supermanCoolness = supermanCoolness + 1
  spidermanCoolness = spidermanCoolness + 1
} else  {
  supermanCoolness = supermanCoolness + 1 
  spidermanCoolness = spidermanCoolness - 1
}

 

Simple Functions : الدوال هي عبارة عن سطور برمجية تقوم بوظيقة برمجية معينة مثال للدالة      ()printMyFavoriteSnack تقوم بطباعة ما في داخل الاقواس . تستطيع انت القيام بخلق دالة او يمكنك استخدام دوال قام بعملها مبرمجين اخرين مثال لذلك الدوال الموضوعة من قبل سركة ابل تستطيع استخداما في بناء تطبيقك مثل الدالة () print عند استدعاءها تقوم بطباعة ما في داخل الاقواس مثال : 

سترى عبارة Hello, World مطبوعة في يمين الشاشة

التحدي : حاول تغير العبارة الموجودة داخل اقواس الدالة () p rint كان تقول شي عن نفسك ثم ضع متغير قم بانشاءه سابقا داخل قوس الدالة لنرى ماذا  سيحدث 

الحل :

print("Ry is awesome")
print(batmanCoolness)

String Interpolation : هي عملية كتابة جملة ومتغير في ان واحد داخل اقواس الدالة فمثلا عندما نريد طباعة جملة معينة وقيمة متغير في نفس الدالة مثال سالي لديها (قيمة معينة من عدد التفاح ) اكتها هكذا في ال playground الخاصة بك : 

var apples = 5
print("Sally has \(apples) apples")
هل رايت ذلك ؟ باستخدام المعادلة
\(variable name)
 استطاعت الدالة طباعة قيم التي يحويها المتغير بامكانك وضع اي متغير لطباعة قيمته
كذلك يمكن القيام باي عملية حسابية داخل قوس الدالة مثال قم بكتابة الاتي في playground الخاصة بك : 
print("Sally has \(apples - 5) apples")

التحدي ! : الان حان الوقت لدمج بعض المفاهيم التي تعلمتها قم بانشاء متغيرين لدرجات اثنين من الطلاب في الامتحان جون 95 ,سام 85 ثم اجعل if/else تقوم بمقارنة الدرجتين وتقوم الدالة () print  بطباعة في ما اذا كان درجة جون اكبر او اصغر او تساوي درجة سام .

الحل :

var johnsGrade = 95
var samsGrade = 82
if (johnsGrade < samsGrade) {
  print("\(johnsGrade) is less than \(samsGrade)")
}
else if (johnsGrade > samsGrade) {
  print("\(johnsGrade) is greater than \(samsGrade)")
}
else {
  print("\(johnsGrade) is equal to \(samsGrade)")
}

While Loops : هي حلقات مغلقة من السطور البرمجية يقوم بتنفيذها البرنامج طالما ان الشرط متحقق حالها حال عبارة if , if else 

وبدلا من تنفيذ السطور البرمجية جميعا في if , if else تقوم ال While Loops بتنفيذ السطر البرمجي طالما ان الشرط متحقق مثال ع ذلك اكتب في ال playground الخاصة بك :

var secondsLeft = 3
while (secondsLeft > 0) {
  print(secondsLeft)
  secondsLeft = secondsLeft - 1
}
print("Blast off!")
تاكد من الحلقة التي تقوم بانشاءها تكون محدودة وليست متناهية لان ذلك يسبب توقف التنفيذ .

بعد التنفيذ ستلاحط وجود ثلاث اسطر في يمين الشاشة هي ناتج عملية طلع القيم بواسطة الدالة () print  طالما ان الشرط داخل الحلقة متحقق والقيم هي 3 2 1 , Blast off … هناك نافذة اخرى لرؤية هذه القيم قم بالذهاب الى اعلى الشاشة واختار

View\Assistant Editor\Show Assistant Editor سترى نفس الموجود ادناه : 

التحدي !: اعمل حلقة مغلقة باستخدام  ال while تبين مقدرتك على اكل الكعك تذكر لا للحلقات الغير المتناهية !

الحل :

var donutsLeft = 6
while(donutsLeft > 0)  {
  print("You have \(donutsLeft) donuts left")
  donutsLeft = donutsLeft - 1
  print("You eat one donut")
}
print("You are all out of donuts :(")

Break Statement : لنفرض ان لديك  حلقة في البرنامج، مثل حلقة while ، وتريد للخروج من حلقة إذا حدث شيء معين.عبارة break ستحقق لك ذلك لنرى المثال التالي : 

var cokesLeft = 7
var fantasLeft = 4
while(cokesLeft > 0)  {
  print("You have \(cokesLeft) Cokes left.")
  cokesLeft = cokesLeft - 1
  if(cokesLeft <= fantasLeft)  {
    break
  }
}
print("You stop drinking Cokes.") 
في هذا المثال لديك علب كولا وستقوم بشربهاوايضا لديك علب فونتا ستتوقف (break) 
عن شؤب الكولا عندما تصبح عدد علب الكولا مساويا او اقل من علب الفونتا .


التحدي !: الان حان دورك لمحاولة انشاء حلقة while لها نقطة توقف break مثال لذلك قم بحساب عدد خطوات او اي شي اخر واخرج من الحلقة بواسطة break . 

الحل :

var goofOffTime = 10
var bossComing = 0
while(goofOffTime > 0)  {
  print("Goofing off!")
  goofOffTime = goofOffTime - 1
  bossComing = bossComing + 1
  if(goofOffTime == bossComing)  {
    break
  }
}
print("Done goofing off.")

Continue Statement : تشبه ال break ولاكن بدلا من الخروج من حلقة ال while يقوم البرنامج بالرجوع الى بداية الحلقة 

مثال لذلك قم بكتابة الكود الاتي في playground الخاصة بك

var numbers = 0
while(numbers <= 10)  {
  if(numbers == 9)  {
    numbers = numbers + 1
    continue
  }
  print(numbers)
  numbers = numbers + 1
}
كما ترى البرنامج قام بطباعة الارقام من  0 الى 10 الرقم 9 بسبب وجود عبارة 
ال  continue

التحدي !: استخدم عبارة continue في حلقة while تسبب في رجوع البرنامج لبداية الحلقة واختفاء قيمة معينة من الطباعة 

الحل :

print("List of World Wars:")
var ww = 1
while(ww <= 5)  {
  if(ww == 3 || ww == 4)  {
    ww = ww + 1
    continue
  }
  print("World War \(ww)")
  ww = ww + 1
}
print("That's the beauty of World War V, Lois. It's so intense it skips over the other two. - Peter Griffin")

Optionals : في بعض الاحيان نريد ان نقوم بانشاء متغير لايحتوي على اي قيمة او يحتوي قيمة معينة حسب الحاجة وعندما نريد ان يكون المتغير خاليا من اي قيمة نجعله nil هذا هو  optional اي التحكم باعطاء المتغير قيمة او جعله خاليا  مثال : 

var optionalNumber: Int? = 5
        optionalNumber = nil 

هنا عرفنا عن متغير اسمه optionalNumber وجعلناهoptional بوضع علامة (?) في السطر الاول وفي السطر الثاني جعلناه خاليا باعطاءه قيمة nil .

في بعض الاحيان يمكنك استخدام  if let وهي تشبة عبارة if statements حيث اذا كان المتغير يحوي على قيمة معينة سيتحقق الشرط ويقوم بالتنفيذ البرنامج اما اذا كان خاليا (nil) يمكن للبرنامج القفز الى خطوة اخرى بواسطة else .

if let number = optionalNumber

التحدي !:  باستخدام if let انشاء متغير optionalNumber واطبع في ما اذا كان يحتوي على قيمة او لايحتوي على قيمة 

الحل :

if let number = optionalNumber  {
  print("It is a number")
}
else  {
  print("It is not a number")
}

Conversion Between Data Types : التحويل بين انواع المتغيرات ال Optionals يمكن يساعد في عملية التحويل بين انواع المتغيرات

لنرى ذلك : 

var languagesLearned: String = "3"
var languagesLearnedNum: Int? = Int(languagesLearned)

هنا بعد ان تم انشاء متغير اسمه languagesLearned من نوع string تم اعطاءه قيمة "3" وهي تقره ك جمله

في السطر الثاني تم انشاء متغير اسمه languagesLearnedNum وهو optional لكي يتم اعطاءه قيمة او عدم اعطاءه

اي قيمة في حالة كانت الجملة عبارة عن كلمات مثل"Hello, World"عند التحويل تصبح قيمته nil .

ثم تم اعطاءه قيمة المتغير  languagesLearned بعد ان تم تحويله من string الى Int بواسطة المعادلة

(اسم المتغير) Int  

 

 

قم بكتابة السطور البرمجية الاتية  :

if let num = languagesLearnedNum  {
  print("It is a number")
}
else  {
  print("It is not a number")
}

هنا جملة if let سترى في ما اذا كان languagesLearnedNum يحتوي على قيمة معينة او لا تحتوي nil حيث يقوم البرنامج بطباعة

جملة “It is a number” اذا كان يحتوي على قيمة ويطبع It is not a number اذا كان nil . وهنا سيقوم بطباعة It is a number

بسبب ان  languagesLearnedNum يحتوي على قيمة شاهد ماذا سيحدث عندما تغير قيمة  languagesLearnedNum الى 

string اي جملة مثل Three ؟

التحدي الاخير في هذا المقال : حاول استخدام كل ماتعلمته في هذا المقال لتكون سطور برمجية كأن تقوم بانشاء متغيرات من نوع string ثم تحولها الى Int ثم قارن بين هذه المتغيرات من حيث اكبر او اصغر او يساوي .. الخ واستخدم الدالة 

()print لطباعة قيم وعبارات مناسبة .

الحل :

var tutorialTeam: String = "55"
var editorialTeam = 23
 
var tutorialTeamNum: Int? = Int(tutorialTeam)
 
if let numTutorial = tutorialTeamNum  {
  if(numTutorial > editorialTeam)  {
    print("\(numTutorial) is greater than \(editorialTeam)")
  } else if (numTutorial < editorialTeam) {
    print("\(numTutorial) is less than \(editorialTeam)")
  } else  {
    print("\(numTutorial) is equal to \(editorialTeam)")
  }
} else  {
  print("Invalid entry")
}

تعليقات 5

  1. كيف نثبت نظام الماك وهمي

    الرد
  2. شرح وافى جدا جدا
    شكرا عل المجهود الكبير وجزاكم الله خيرا

    الرد
  3. Great hammer of Thor, that is poluwferly helpful!

    الرد
  4. If time is money you’ve made me a wealhtier woman.

    الرد

أرسل

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *