recent
أخبار ساخنة

الحلقات التكرارية Loops في لغة السي C الدرس|8|

الصفحة الرئيسية
loops c

الحلقات التكرارية Loops لغة سي C

الحلقة التكرارية "الحلقات التكرارية Loops" نقوم بإستخدام الحلقات في البرمجة لتسهل علينا عدم كتابة نفس الكود عدة مرات, في حال أردنا إستخدامه لمرات عديدة نقوم بوضعه بداخل حلقة و هي سوف تقوم بدوره في إعادة تكراره على حسب طلبنا و شروط الكود.

هناك ثلاث حلقات تكرارية في لغة السي وهي:

  1. حلقة for loop.
  2. حلقة while loop.
  3. حلقة do while loop.

كل حلقه من هذه نقوم بإستخدامها في عمل معين في البرنامج, سنتعرف في الأمثلة على أهمية حلقات و إستخدامها.

هذا الدرس هو أحد اهم دروس بلغة السي C و هو الحلقات التكرارية, سنتعرف على كل نوع من انواع حلقات تكرار و كيفيه بنائها.

 

حلقة For Loop في لغة السي C

تستخدم حلقة for التكرارية لتكرار تنفيذ عملية محددة عدة مرات و تأخذ الصيغة الآتية

For(initial-value ; condition ; increment)
Statements;

حيث أن

  • initial-value هي القيمة المبدئية.
  • condition الشرط انهاء التكرار.
  • increment القيمة الزيادة في التكرارية.

مثال 1

اكتب برنامج يقوم بطباعة كلمة programmer tech عشر مرات عن طريق إستخدام الأمر printf طباعة فقط بدون إستخدام الحلقات التكرارية.

#include<stdio.h>
main()
{
    printf("Programmmer tech \n");
    printf("Programmmer tech \n");
    printf("Programmmer tech \n");
    printf("Programmmer tech \n");
    printf("Programmmer tech \n");
    printf("Programmmer tech \n");
    printf("Programmmer tech \n");
    printf("Programmmer tech \n");
    printf("Programmmer tech \n");
    printf("Programmmer tech \n");
}

عندما نقوم بتشغيل هذا الكود سنحصل على نتيجته وهي طباعتها عشر مرات

for loop c

نلاحظ اننا قمنا بتكرار امر الطباعة عدة مرات و تكبَّد الكثير من العناء في كتابته و حجم الكود, ماذا إذا كنت اريد طباعة "1000" سطر من هذه الجملة لكن هنالك حل و هو إستخدام حلقة for التكرارية و هي كتابة كود صغير جداً.

 

مثال 2

اكتب برنامج يقوم بطباعة كلمة programmer tech عشر مرات عن طريق مستخدماً حلقة for التكرارية في لغة سي.

#include<stdio.h>
main()
{
    Int a;
    For(a=0;a<10;a++)
    printf("Programmmer tech \n");
}

وضعنا متغير عددي وهو a ثم دخلنا لحلقة تكرارية ووضعنا شرط a تساوي 0 و في حال. قيمة a اضغر من 10 قم بطباعة كلمة Programmmer tech وفي كل دورة قم بزيادة العداد 1 إلى أن تصل 10 دورات.

عند تنفيذ الكود سوف تكون نفس النتيجة في المثال الأول لكن هنا بشكل مختصر بإستخدام حلقة for.


مثال 3

اكتب برنامج كرر به مجموعة من النصوص و هي CS و DB و Kaissar مستخدماً الحلقة for و دع البرنامج يطبعهم عشرة مرات و يتوقف.

#include<stdio.h>
main()
{
    int  a;
    for(a=0;a<10;a++)
    {
printf("cs \n");
printf("DB \n");
printf("Kaissar \n");
    }
}

من الملاحظ بأننا قمنا بفتح قوسين مجمعة بعد حلقة for لأنه قمنا بعمل عدة statements.

ناتج خرج حلقة for


دعونا الآن لا نستخدم تلك الأقواس التي بعد الحلقة السابقة

#include<stdio.h>
main()
{
    int  a;
    for(a=0;a<10;a++)
printf("cs \n");
printf("DB \n");
printf("Kaissar \n");
}

و تنفيذ هذا الكود سوف يطبع لنا فقط cs عشر مرات.

طباعة جملة عشر مرات

الآن الفكرة اصبحت واضحة لنا, عند إستخدام الأقواس في الكود الأول و عدم إستخدامهما في الكود الثاني حدث ما يلي:

  • في حالة إستخدام الأقواس في التكرار سيكون كل الـ statement التي بداخل الحلقة "تنفيذ مجموعه من الجمل".
  • في حالة عدم إستخدام الأقواس فإن التكرار سيكون لأول statement "تنفيذ اول جملة".
 
مثال 4
اكتب برنامج يقوم بطباعة الأعداد من 0 إلى 9.
#include<stdio.h>
main()
{
    int a;
    for(a=0;a<10;a++)
printf("\n a= %d  \n" , a) ;
}
عند تشغيل هذا الكود ستكون النتيجة هي من 0 حتى 9 كما يلي
a= 0
a= 1
a= 2
a= 3
a= 4
a= 5
a= 6
a= 7
a= 8
a= 9

مثال 5

اكتب برنامج يقوم بطباعة مجموعة اعداد و زيادة بمعدل 2 فارق بين كل عدد.

#include<stdio.h>
main()
{
    int a;
    for(a=0;a<10;a+=2)
printf("\n a= %d  \n" , a) ;
}

عندما نقوم بتشغيل الكود سوف تكون نتيجته

a= 0
a= 2
a= 4
a= 6
a= 8

مثال 6

اكتب برنامج يقوم بطباعة الأعداد بشكل تنازلي أي من 10 إلى 1.

#include<stdio.h>
main()
{
    int a;
    for(a=10;a>0;a--)
printf("\n a= %d  \n" , a) ;
}

نتيجة تنفيذ هذا الكود هي

a= 10
a= 9
a= 8
a= 7
a= 6
a= 5
a= 4
a= 3
a= 2
a= 1

مثال 7

اكتب برنامج يقوم بطباعة اعداد من 1 إلى 5 تصاعدياً ثم يقوم بطباعة اعداد من 5 إلى 1 تنازلياً.

#include<stdio.h>              
main()                            
{                                 
    int a , b;
    for(a=0;a<5;a++)
    {
        printf("\n a= %d  \n" , a);
    }
    for(b=5;b>=0;b--)
    {
printf("\n b= %d  \n" , b);
    }
}

هذا الكود عند الضغط على run به سوف تكون النتيجة من 1 حتى 5 ثم من 5 حتى واحد كما يلي

a= 1
a= 2
a= 3
a= 4
b= 5
b= 4
b= 3
b= 2
b= 1
b= 0


حلقة while Loop في لغة السي C

حلقة while التكرارية في لغة سي تستخدم لتكرار تنفيذ جملة معينة او مجموعة من الجمل و يتوقف التكرار عند تنفيذ العدد الموجود في الشرط.

وتكون الصيغة العامة لحلقة while loop في سي هي

while(condition)
Statements;

هذا يعني أن طالما الشرط صحيح قم بتنفيذ الجملة و إذا كان الشرط غير صحيح توقف عن التكرار.


مثال 1

أكتب برنامج يقوم بطباعة CS عشر مرات بإستخدام حلقة while و يتوقف في المرة الحادي عشر.

#include<stdio.h>
main()
{
    int a=0;
    while(a<10(
    {   
    printf(" \n CS ");  
        a++;
    }
}

حيث أن Int a=0 تمثل القيمة المبدئية لـ a, وعند تشغيل الكود سيطبعه عشر مرات بالشكل

CS
CS
CS
CS
CS
CS
CS
CS
CS
CS

مثال 2

برنامج يقوم بتكرار اكثر من جملة saja ,doha ,ahmed.

#include<stdio.h>
main()
{
    int a=0;
    while(a<2)
    {
    printf(" \n Saja ");
    printf(" \n Doha ");
    printf(" \n Ahmed \n");
        a++;
    }
}

لأن القيمة المبدئية هي صفر و إن الحلقة ستقوم بتكرار مرتين فقط بالشكل

Saja
Doha
Ahmed
Saja
Doha
Ahmed


الفرق بين حلقتي for و while في لغة سي

  1. حلقة for عددية تعتمد على عدد معين و ينتهي التكرار فيها بإنتهاء عدد مرات التكرار.
  2. حلقة while هي حلقة تكرر الجمل التي تليها طالما أن الشرط صحيح و تنتهي بكسر الشرط أي حتى يصبح الشرط غير صحيح.
 

حلقة do while Loop في لغة السي C

الحلقة do while loop في السي تستخدم لتكرار تنفيذ جملة أو مجموعة من الجمل اكثر من مرة بناءً على شرط معين كما عند إستخدام while.

ولكن الفرق بينهما هو أن while تختبر إذا كان الشرط صحيح ام لا أما do - while تنفذ الجملة التالية لها اولاً ثم تختبر الشرط, فإذا كان صحيح تعيد تنفيذ الا تتوقف التكرار.

وتكون الصيغة العامة لحلقة do while loop في لغة سي كما يلي

Do{
Statements;}While(condition)

مثال 1

اكتب برنامج إسمه CS يقوم بطباعة الأعداد من 1 حتى 15 بإستخدام حلقة do - whlie التكرارية.

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int i = 1;
    do{
        printf("\n%d",i);
        i++;
    }while(i<16);
}

عند تشغيل هذا الكود سوف يقوم بطباعة جميع الأعداد من الرقم 1 حتى الرقم 15.


مثال 2

اكتب برنامج يقوم بطباعة كلمة Programmer Tech عشر مرات مستخدما حلقة do-while في لغة سي C.

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int x = 0;
    do{
        printf("\n Programmer Tech");
        x++;
    }while(x<10);
}

سيقوم بطباعة Programmer Tech عشر مرات و يتوقف.


مثال 3

اكتب برنامج يقوم بالطلب من المستخدم أن يكتب عدد N و يقوم البرنامج بجمع الرقم مع الأرقام الذي اقل منه إلى أن يصل إلى الـ 0 مستخدماً حلقة do-while مستخدماً في هذا لغة C.

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int N;
    printf("enter the number: ");
    scanf("%d", &N);
    int s = 0; int i=1;
    do{
        s = s+ i;
        i++;
    }while(i<N+1);
    printf("sum: %d",s);
}

فإذا قام المستخدم بإدخال الرقم 5 سوف تكون نتيجة الكود بالشكل

enter the number: 5
sum: 15

نلاحظ أنه عندما المستخدم بإدخال الرقم 5 فالبرنامج اعطانا رقم 15 يعني انه قام بجمع الرقم نفسه 5 مع الرقم الذي اقل منه 4 ثم مع الرقم 3 ثم الرقم 2 ثم 1 و المجموع كان 15.

google-playkhamsatmostaqltradent