الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

أحد ينقذني .. بشرح Function !

مغلق
بدأه Pre في 21 ديسمبر 2006 · 1 رد · 585 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمه الله وبركاته

هذه أول مشاركة لي في منتداكم الرائع وللأسف الشديد أول مشاركة هي طلب أتممممنى تساعدوني فيه بليييييييز

ورطاااانه ورطه بطااالة

اختباري في مادة C++ يوم الأحد واتتتتمنى احد يقدر يساعدني بس في هالنقطة وبكووووون شاكرة

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

البرامج هـــــــــــــــــي

ـــــــــــــــــــــــــــــــــــــــــــــــــــ

(1) الأول

#include<iostream>

using std::cin;

using std::cout;

using std::endl;

void function (unsigned short );

int main()

{

unsigned short x=1;

do

{

function (x);

x*=5;

}while (x<20);

return 0;

}

void function (unsigned short a)

{

static int x;

for (int i=0; i<30; i+=10)

{

cout<<x<<" ";

x+=a;

}

cout<<endl;

}

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

(2) الثاني

#include<iostream>

using std::cin;

using std::cout;

using std::endl;

void function (unsigned short );

int main()

{

unsigned short x=1;

do

{

function (x);

x*=5;

}while (x<20);

return 0;

}

void function (unsigned short a)

{

static int x=20;

for (int i=0; i<30; i+=10)

{

cout<<x<<" ";

x-=a;

}

cout<<endl;

}

ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

(3) الثالث

#include<iostream>

using std::cout;

using std::cin;

using std::endl;

void function(void );

int main()

{

int counter = 1;

while(counter !=8)

{

function();

if(counter % 2 ==0)

cout<<endl;

counter*=2;

}

return 0;

}

//function definition

void function(void)

{

static int x;

for(int i=1; i<30; i*=3)

{

cout<<x<<" ";

x+=7;

}

}

#2

وعليكم السلام ورحمة الله

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

مثل كذا

#include<iostream>

using std::cin;
using std::cout;
using std::endl;


void function (unsigned short );

int main()
{
unsigned short x=1;

do
{
function (x);
x*=5;
}while (x<20);

return 0;
}

void function (unsigned short a)
{
static int x;
for (int i=0; i<30; i+=10)
{
cout<<x<<" ";
x+=a;
}
cout<<endl;

}

الهدف من البرنامج واضح, وهو انهم يضيعونك بوضع الكيوورد static في الدالة

عند وضع هذه الكلمة قبل اي متغير فماذا تفعل؟؟؟

تحفظ قيمته بعد الخروج من الدالة, يعني حتى لو تم نداء هذه الدالة مرة اخرى تكون قيمة هذا المتغير هي اخر قيمة له في النداء السابق

والقيمة الافتراضية لمتغير static عددي هي الصفر مالم تسند قيمة اخرى له

وهذا الذي حدث, المتغير x قيمة الاساسية = 0 , بعد الدخول الى الدالة تغير في اللوب الى 1 وبعدها 2 وبعدها 3 وهذه القيمة 3 تبقى حتى بعد الخروج من الدالة, (اللوب اخذت 3 لفات)

في النداء الثاني بقي x على قيمته الاولى اللي هي 3 وبعدها زاد الى 8 وبعدها الى 13 بسبب امر الاسناد

تحياتي

هذا الموضوع مغلق.

مواضيع مشابهة