Category

python

دروس بايثون للمبتدئين تابع جمل التحكم الشرطية او العبارات الشرطية

الدرس العاشر من دروس بايثون للمبتدئين
تابع جمل التحكم الشرطية او العبارات الشرطية
conditional statement
اتكلمنا فى الدروس السابقة على جمل التحكم الشرطية وعرفنا ان الهدف من كتابتها هو التحكم فى مسار البرنامج
وانها عبارة عن بلوك من الاكواد يرتبط تنفيذها بتحقق شرط معين .

وبدائنا بشرح الحالة الاولى من عبارة if وهى
– simple if
و الحالة الثانية وهى if else
النهاردة هنتكلم على الحالة الثالثة من حالات if وهى if else if
وهى تكتب بالصورة التالية elif .
وتستخدم فى حالة وجود أكثر من شرط او احتمال .

نتيجة بحث الصور عن if statement in python

وهى تاخذ الصيغة التالية

if(condition):
statements1
elif (condition):
statements2
elif (condition):
statements3
.
.
else :
statements

يتم كتابة جملة الشرط بأستخدام عبارة if else if كالتالى :
نبداء بكتابة الكلمة المحجوزة if وبعدها نفتح قوسين ونكتب بداخلهم العبارة او العبارات المراد التحقق من صحتها او الشرط
ويجب ان تكون النتيجة المرجعة منة
boolean (true or false)
وذلك باستخدام احد معاملات المقارنة السابق شرحهم comparison operators
والدمج بينهم عند وجود اكثر من شرط او عبارة باستخدام
and
or
وبعدها نكتب الجملة او الجمل المراد تنفيذها فى حالة تحقق هذا الشرط .
ثم نكتب عبارة elif ونفتح قوسين ونكتب بداخلهم العبارة او العبارات المراد التحقق من صحتها او الشرط الاخر
وبعدها نكتب الجملة او الجمل المراد تتفيذها فى حالة تحقق هذا الشرط .
بعدها يتم تكرار عبارة elif بعدد الاحتمالات او الشروط المتوقعة .
ثم نكتب عبارة else ونكتب بداخلها الجملة او الجمل المراد تنفيذها فى حالة عدم تحقق اى شرط من الشروط السابقة .

ونلاحظ الاتى :
_ فى حالة تحقق الشرط ( نتيجة الشرط true )فى اى شرط يتم تنفيذ الجملة او الجمل الخاصة بهذا الشرط وبعدها يخرج مباشرة من جملة if دون اختبار باقى الشروط .
اما فى حالة عدم تحقق الشرط (نتيجة الشرط false ) فى اى شرط يتم الانتقال مباشرة الى الشرط الذى يلية لحين تحقق الشرط او طباعة الجمل بداخل else (فى حالة ان تكون جميع نتائج جمل الشرط false ).
ثم يتجة البرنامج مباشرة لتنفيذ باقى الاكواد الموجودة داخل البرنامج .

مثال للتوضيح : لو اردنا كتابة برنامج ياخذ رقم من المستخدم وبناء على هذا الرقم يتم طباعة اليوم .

سيتم تعريف متغير يحمل رقم اليوم ومن الممكن استخدام طريقة الادخال السابق شرحها فى الادخال .
بعدها يتم اختبار الشرط الاول فاذا كانت قيمة المتغير تساوى القيمة الموجودة بهذا الشرط (نتيجة الشرط true )
سوف يتم طباعة اليوم . وبالتالى الخروج مباشرة من جملة if دون تنفيذ باقى جمل الشرط .
اما اذا كانت قيمة المتغير لاتساوى القيمة الموجودة بهذا الشرط
سوف ينتقل البرنامج مباشرة الى الشرط الذى يلية وهكذا يتم الانتقال الى الشرط الذى يلية طالما ان نتيجة الشرط false

دروس بايثون للمبتدئين تابع جمل التحكم الشرطية او العبارات الشرطية
كتاب مدخل أساسيات لغة بايثون
كتاب القوائم في لغة بايثون
Constructors في لغة البايثون 
المتغيرات في البايثون
من صنع أول كمبيوتر ؟
SQL في inner join شرح ال
مايكروسوفت أوفيس 2019 الأن متاحاً على أنظمة ويندوز
أساليب القرصنة
RESTful API ماهو
Cases صناديق الكمبيوتر وأنواعها
أفضل سبعة متاجر أندرويد مجانية
الألوان على الهارديسك إلى ماذا تشير؟

المعاملات الحسابية بلغة البايثون

تنقسم الى المعاملات في لغة البايثون الى عدة معاملات وهناك اربعة معاملات اساسية وهي موضحة أدناه وسيتم شرح المعاملات الحسابية في هذا الدرس و باقي المعاملات في دروس إخرى
– Arithmetic operators المعاملات الحسابية
– Assignment operators. معاملات اسناد القيم
– Comparison operators معاملات المقارنة
– Logical operators. المعاملات المنطقية

نتيجة بحث الصور عن ‪operators in python‬‏

المعاملات الحسابية Arithmetic operators
الجمع +
الطرح –
الضرب *
القسمة /
باقى القسمة %
الأس **
القسمة الصحيحة //
وهنوضحها بمثال

num1=6
num2=2
print(num1+num2)

سوف يتم طباعة 8

print(num1-num2)

سوف يتم طباعة 4

print(num1*num2)

سوف يتم طباعة 12

print(num1/num2)

سوف يتم طباعة 3

print(num1%num)

سوف يتم طباعة 0

print(num1**num2)

سوف يتم طباعة 36

print(num1//num2)

سوف يتم طباعة 3

ساقوم بتوضيح علامة % او باقى القسمة
ناتج قسمة 6/2 هو 3 (2*3=6 ) اما باقى القسمة يكون صفر .

اولويات العمليات الحسابية
انا عرضتها بحسب اولوية التنفيذ
( )
**
* /
+ –
مثال للتوضيح

num1=10
num2=5
num3=4
print(num1+num2*num3)

قد يعتقد البعض بان تنفيذ هذة العملية يكون كالتالى
هو جمع قيمة المتغير num1 مع قيمة المتغير num2 ثم ضرب هذا الناتج فى قيمة المتغير num3
الا ان هذا غير صحيح راجع اولويات تنفيذ المعاملات الحسابية التى تم شرحها . نجد ان البرنامج سوف يقوم اولا بضرب قيمة المتغير. num2 فى قيمة المتغير num3 ثم جمع هذا الناتج على قيمة المتغير num3 فيكون الناتج هو 30
بعض الملاحظات :
– فى حالة وجود اكثر من معامل لة نفس اولوية التنفيذ يتم التنفيذ من الشمال الى اليمين .
– فى حالة الرغبة فى اعطاء اى عملية اولوية التنفيذ يتم وضعها داخل الاقواس ( ) .

مثال اخر بس مش انا الا هحلة انا بطلب من اى حد يشوف البوست دا هو الا هيحلة .

(4+2**3)/2+(4*4+6/2)

البرمجة الكائنية باستخدام بايثون
Constructors في لغة البايثون 
كتاب تعلم بايثون بكل سهولة
كتاب مدخل للبرمجة وللغة البايثون
كتاب مدخل أساسيات لغة بايثون
كيف تحفظ الكود البرمجي ؟
الأساسية WIN إختصارات المفتاح
Mysql أنواع البيانات في
الخاص بي IP كيفية معرفة ال
(Intel) كل ما تريد معرفته عن معالجات إنتل
كيف يكسب المخترقون الأموال
مقال مفصل عن نظم التشغيل وانواعها ومعلومات عنها
access token كن حذراَ عندما تستخدم ال

Constructors في لغة البايثون 

Constructor او الكنستركتور او المنشئ هو نوع خاص من الطرق (الفانكشين) يتم استخدامه لتهيئة نموذج مثيل للكلاس  .

يمكن أن يكون Constructor  من نوعين.

 1- Parameterized Constructor
2- Non-parameterized Constructor

يتم تنفيذ تعريف Constructor عندما نقوم بإنشاء كائن من هذه الكلاس. يتحقق المُنشئون أيضًا من وجود موارد كافية للكائن لأداء أي مهمة بدء.

وهنلخصة فى عدة نقاط :
تعريف constructors .
طريقة انشاء دالة constructor
ماهى وظيفة constructors .

نتيجة بحث الصور عن ‪Constructors in python‬‏

تعريف constructors :
ببساطة هو دالة خاصة (special methods ) داخل الكلاس
يتم أستدعائها (تنفيذها)تلقائيا مع بداية انشاء object
من الطبيعى بعد انشاء اى دالة لايتم تنفذها مباشرة وانما يتم تنفيذ الدالة من خلال تمرير اسم الدالة داخل البرنامج .
اما دالة constructor يتم تنفيذها تلقائيا وقت انشاء object بدون استدعاء اسم الدالة .
car1=car( )
car( ) constructor تمثل دالة
بتكون فى شكل دالة جاهزة للتنفيذ وبداخل هذة الاقواس يتم تمرير قيم للمتغيرات .

طريقة انشاء دالة constructors
اتكلمنا فى التعريف السابق ان constructor هو دالة وبالتالى مثل اى دالة سوف يبداء بالكلمة def وهى الكلمة المحجوزة لتعريف اى دالة يليها كلمة _init_
كالتالى :
def _init_( ):

ويكتب بداخل constructors مجموعة من الاجراءات المطلوب تنفيذها تلقائيا او اسناد قيم للمتغيرات بمجرد انشاء object عن طريق تمرير parameters داخل constructors. واسناد قيم لها اثناء انشاء object

ماهى وظيفة constructors
انا قلت فى تعريف constructors انه يتم تنفيذة مع بداية انشاء ال object وبالتالى لو عاوز انفذ اجراء (كود معين) او اعطاء قيم للمتغيرات
initialize data of object( variables )
مع بداية انشاء الكائن فيكون دا من اهم استخدامات constructors .

هعرض فيديو يوضح تنفيذ دالة constructor وتمرير قيم للمتغيرات تلقائيا مع بداية انشاء object .
وهعرض طريقة اسناد قيم للمتغيرات عن طريق تمرير قيم لهذة المتغيرات داخل الدالة .بالطريقة السابق شرحها .

سؤال خاص بالموضوع ؟
هل ممكن انشاء اكثر من constructors داخل الكلاس ؟
ممكن انشاء اكثر من constructors داخل الكلاس .
وان شاء الله سيتم شرحة فى المرة القادمة وكذلك شرح constructor with Inheritance .

كتاب مدخل للبرمجة وللغة البايثون
Constructors في لغة البايثون 
كتاب مدخل أساسيات لغة بايثون
كتاب البايثون بلمسة
كتاب احترف البايثون الآن
إليك القائمة الكاملة للطرق التي يحمي بها نظام الأندرويد اوريو هاتفك وبياناتك
صفارات الماذربورد
Edx ما هو موقع
الطريقة الأمنة لفورمات الهارد ديسك في نظام ويندوز
جميع إختصارات الكيبورد في ويندوز
ساعتين يومياً على مواقع التواصل الاجتماعي كافية لإصابتك بهذا المرض
نصائح للتقدم للوظائف من خلال الأنترنت
canon ip7240 إعدادات الواي فاي في طابعة

البرمجة الكائنية باستخدام بايثون

البرمجة الكائنية باستخدام بايثون أو OOP – Object oriented programming هي عبارة عن نمط برمجة متقدمة، وفيه يقسم البرنامج إلى وحدات تسمى الكائنات (Objects) كل كائن object عبارة عن حزمة من الصفات Attributes (يعبر عنها بالمتغيرات variables )  والافعال Actions ( يعبر عنها بالدوال functions ).
وكل كائن يؤدى وظيفة محددة.
ويتم بناء البرنامج بواسطة استخدام الكائنات وربطها مع بعضها البعض .

نتيجة بحث الصور عن ‪Object oriented programming python‬‏

فى البرمجة الكائنية يوجد مفهومين :
هما الكلاس class والكائن object .
وهنوضح الفرق بينهم حالا

Class. (Template)

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

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

والسؤال كيف يتم انشاء كلاس فى بايثون ؟
ببساطة يتم انشاء الكلاس كالتالى :

class className:
variables
Functions

نتيجة بحث الصور عن ‪create class in python‬‏

طب السؤال كيف اعمل object من الكلاس .

بيكون كالتالى:

ObjectName=className()

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

objectName.[variables|methods]

طبعا انا حاولت اعرض فيديو يوضح بعض الشيء عن كلامى
عملت كلاس اسمة Emoloyees
وبداخلة ثلاث متغيرات id ,name,salary
بدون اعطائهم اى قيمة ولكن تم اعطائهم فقط قيم ابتدائية وهى zero للمتغيرات الرقمية وnull للمتغيرات النصية .
ودالة ( ) printData وهى تطبع قيمة المتغيرات السابقة
وعملت كائن اسمة emp1 وكائن اخر اسمة emp2
اخذت نسخة من الكلاس Employees
وقمت بالتعامل مع المتغيرات والدوال الموجودة فى الكلاس Employees فى الكائن emp1 والكائن emp2
عن طريق اعطائهم قيم واستخدام الدالة الموجودة داخل الكلاس .

كتاب البايثون بلمسة
المعاملات الحسابية بلغة البايثون
كتاب #أتعلم البايثون
Python Programming Fundamentals
كتاب البرمجة بلغة بايثون – الجزء الثاني
javascript داخل php هل يمكن إستخدام كود
CMD أهم الأوامر في موجه الأوامر
SQL SERVER بشكل عام عن
(Object-relational mapping) ORM ما هو الـ
الانترنت عبر الضوء ! تعرف أكثر على تقنية الاي فاي
بعض النصائح لكي تصبح مصمما محترفا
تعني أن الموقع أمن ؟ https هل
DDL أوامر

المتغيرات في البايثون

Variables او المتغيرات إن المتغيرات ببساطة هى مخازن مؤقتة للبيانات , وطالما انها مخازن للبيانات وبالتالى هقدر انى اخزن بداخلها بيانات وكمان اقدر انى استرجع منها هذة البيانات .

طريقة تعريف المتغيرات فى لغة بايثون  ببساطة يتم تعريف المتغيرات بالصيغة التالية

varibleName=value

نتيجة بحث الصور عن ‪variable in python‬‏

تعريف المتغير يبداء باسم المتغير ثم نكتب equal يلية القيمة المراد تخزينها بداخل المتغير .
على سبيل المثال

num1=5
num2=1.5
name=’python’

وهذة القيمة التى يتم تخزينها بداخل المتغير هى التى تحدد نوع المتغير . ويتم اسناد هذة القيمة للمتغير اما عن طريق اسناد القيمة مباشرة او عن طريق المستخدم من خلال استخدام دالة الادخال السابق شرحها ( ) input .
واول شي لازم نعرفة ان بايثون موفرة عدة انواع من المتغيرات منها .

number
String
List
Tuple

Dictionary

نتيجة بحث الصور عن ‪variable in python‬‏اولا :نوع البيانات رقمى numberعلى سبيل المثال
num1=5
المتغير num1 من النوع int لان القيمة المخزنة بة رقم صحيح
num2=1.5
المتغير num2 من النوع float لان القيمة المخزنة بة رقم عشرى

ثانيا : نوع البيانات نصى string
name=’python’
المتغير name من النوع string لان القيمة المخزنة بة نصية
ملحوظة :يتم وضع قيم المتغيرات النصية بين single code or double code .
اما باقى الانواع الاخرى للمتغيرات سيتم دراستها لاحقا .

وهناك شروط فى تسمية المتغير ات
١_ يجب ان يبداء بحرف .
٢_ لا يزيد طول المتغير عن ٣٠ .
٣_ لايمكن استخدام كلمة من الكلمات المحجوزة فى تعريف المتغير
بمعنى انة لا يمكن تسمية المتغير باسم if مثلا .

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

نتيجة بحث الصور عن ‪variable print in python‬‏

print(variableName)

لطباعة قيمة المتغير num1 كالتالى

print(num1)

سوف يتم طباعة 5
نلاحظ ان المتغير يتم كتابتة مباشرة دون استخدام single or double code .

بعض الاسئلة خاصة بالدرس
هل من الممكن معرفة نوع المتغير من خلال دالة معينة ؟
ببساطة يتم استخدام الدالة ( ) type
على سبيل المثال لو اردنا معرفة نوع المتغير num1
نكتب الكود التالى( type(num1
سوف يطبع البرنامج int .

هل يمكن تحويل نوع البيانات الى نوع اخر ؟
نعم وذلك من خلال عمل casting
وهو كتابة النوع المطلوب التحويل له قبل اسم المتغير
على سبيل المثال لو اردنا تحويل نوع المتغير num1 من النوع int الى النوع float يتم ذلك كالتالى

float(num1)

سوف يتم طباعة 5.0

هل من الممكن تغيير القيمة المخزنة فى المتغير؟
نعم يمكن تغيير القيمة المخزنة داخل المتغير اثناء كتابة البرنامج
على سبيل المثال

num1=5



num1=10
print(num1)

سوف يتم طباعة 10 لان القيمة 5 تم تغيرها واصبحت 10

واخيرا المتغير num1 ليس هو Num1 لان بايثون حساسة للحروف case sensitive وبالتالى فكلاهما متغيرين مختلفين .

Hands on Python Book
كتاب كيفية برمجة برنامج شات بالبايثون
Python Programming Fundamentals
كتاب القوائم في لغة بايثون
كتاب مدخل أساسيات لغة بايثون
Mysql أنواع البيانات في
البرمجة الكائنية باستخدام بايثون
تحديث أندرويد أوريو يعطل هاتفك الذكي جالكسي نوت 8
كيف تحفظ الكود البرمجي ؟
تحليل المواقع الالكترونية
تعلم البرمجة عبر لعبة مميزة بطريقة ممتعة ومسلية
الخاص بي IP كيفية معرفة ال
ساعتين يومياً على مواقع التواصل الاجتماعي كافية لإصابتك بهذا المرض

Python Programming Fundamentals

Computer Science is a creative, challenging, and rewarding discipline. Computer
programmers, sometimes called software engineers, solve problems involving data:
computing, moving, and handling large quantities of data are all tasks made easier
or possible by computer programs. Money magazine ranked software engineer as
the number one job in America in terms of flexibility, creativity, low stress levels,
ease of entry, compensation, and job growth within the field [4].
Learning to program a computer is a skill that can bring you great enjoyment
because of the creativity involved in designing and implementing a solution to a
problem. Python is a good first language to learn because there is very little
overhead in learning to write simple programs. Python also has many libraries
available that make it easy to write some very interesting programs including
programs in the areas of Computer Graphics and Graphical User Interfaces: two
topics that are covered in this text.
In this text, students are taught to program by giving them many examples and
practice exercises with solutions that they can work on in an interactive classroom
environment. The interaction can be accomplished using a computer or using pen
and paper. By making the classroom experience active, students reflect on and
apply what they have read and heard in the classroom. By using a skill or concept
right away, students quickly discover if they need more reinforcement of the
concept, while teachers also get immediate feedback. There is a big difference
between seeing a concept demonstrated and using it yourself and this text
encourages applying concepts immediately to test understanding. This is vital in
Computer Science since new skills and concepts build on what we have already
learned

 

please Download Book From Book Icon

المعاملات الحسابية بلغة البايثون
Hands on Python Book
كتاب مدخل أساسيات لغة بايثون
البرمجة الكائنية باستخدام بايثون
المتغيرات في البايثون
المواقع المفيدة لأى مبرمج
ما هي مضادات فايروسات الحاسوب و كيف تعمل
Constructors في لغة البايثون 
شبكات الخصومة التوليفية
دروس بايثون للمبتدئين تابع جمل التحكم الشرطية او العبارات الشرطية
افضل 5 مواقع عربية متخصصة في نظام لينكس
أكثر الألعاب مبيعاً على بلاي ستيشن 4 و إكس بوكس ون
(OpenEMIS) كل ما تريد معرفته عن نظام اوبن ايمس

Hands on Python Book

one of the best book talking about Python and how to start with, in this book you will learn all basic’s and function’s in python and this will be your guide for your first python program ,

by Dr. Andrew N. Harrington , Loyola University Chicago

كتاب مدخل للبرمجة وللغة البايثون
كتاب مدخل أساسيات لغة بايثون
كتاب البرمجة بلغة بايثون – الجزء الاول
Constructors في لغة البايثون 
كتاب القوائم في لغة بايثون
فايروس الفدية وماذا افعل إذا أصاب جهازي
كلمة غير محدود في عالم التكنولوجيا و الخدمات
تقرير سنة 2018 عن الذكاء الإصطناعي
الأساسية WIN إختصارات المفتاح
الانترنت عبر الضوء ! تعرف أكثر على تقنية الاي فاي
أفضل عشرة ألعاب على فيسبوك
البرمجة الكائنية باستخدام بايثون
ما هو السيرفر ؟

كتاب مدخل للبرمجة وللغة البايثون

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

رابط التحميل في الأسفل

كتاب البايثون بلمسة
كتاب البرمجة بلغة بايثون – الجزء الثاني
المتغيرات في البايثون
Constructors في لغة البايثون 
Hands on Python Book
أشهر المنظمات التي برزت في عالم القرصنة الرقمية
الهواتف الخلوية المقلدة قنابل مؤقتة تغزو الأسواق
أساليب القرصنة
(DNS) تعرف علي الدومين
SQL SERVER بشكل عام عن
تاريخ القرصنة الألكترونية
أسهل طريقة لإمتلاك موقع ويب
Intel و AMD الفرق بين معالجات

كتاب مدخل أساسيات لغة بايثون

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

رابط التحميل في الصورة الأسفل

كتاب كيفيــة تثبيت برنامج بايثون 3
كتاب البرمجة بلغة بايثون – الجزء الثاني
كتاب #أتعلم البايثون
كتاب تعلم البرمجة مع بايثون 3
كتاب البرمجة بلغة بايثون – الجزء الاول
تطبيق اللياقة البدنية Home Workout تمارين منزلية بدون معدات
لماذا لا يتم التواصل معك بعد إرسالك لسيرتك الذاتية ؟
تقنية الذكاء الصنعي بإختصار
DML مقدمة توضيحية عن
Access Control List ما هو ال
المعاملات الحسابية بلغة البايثون
iPhone XR تعرف على
DHCP كيف تحصل على اي بي من ال

كتاب كيفيــة تثبيت برنامج بايثون 3

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

رابط التحميل في الأسفل

كتاب احترف البايثون الآن
كتاب تعلم بايثون بكل سهولة
كتاب #أتعلم البايثون
كتاب البرمجة بلغة بايثون – الجزء الاول
كتاب تعلم البرمجة مع بايثون 3
أمن المعلومات و الأنترنت
STP بروتوكول
Joomla مقدمة في إستخدام
(BIOS) كل ما تريد معرفته عن نظام البيوس وكيفية الدخول إليه
(DNS) تعرف علي الدومين
Li-Fi كل ما تريد معرفته عن ال
تطبيق اللياقة البدنية Home Workout تمارين منزلية بدون معدات
ايه هو افضل نظام تشغيل للمطورين