C Proqramlaşdırmasında sahə qaydaları

Sistem dizaynı ilə bağlı müsahibə sualları o qədər açıq ola bilər ki, düzgün hazırlaşmağı bilmək çox çətindir. İndi satın aldıqdan sonra Amazon, Microsoft və Adobe-nin dizayn dövrlərini sındıra bilirəm Bu kitabı. Gündəlik bir yenidən nəzərdən keçirin dizayn sualı və söz verirəm ki, dizayn dövrünü sındıra bilərsiniz.

Dəyişənin əhatə dairəsi həmin dəyişənin proqram daxilində və ya funksiya və ya blok daxilində görünməsidir. C, proqramın istənilən yerində dəyişənləri elan etməyə imkan verir. Digər proqramlaşdırma dilindən fərqli olaraq, proqramın əvvəlində onları elan etməyimizə ehtiyac yoxdur. Bu xüsusiyyətə görə, geliştiricinin proqram üçün tələb olunan bütün dəyişənləri bilməməsi lazımdır. Lazım olduqda onları elan edə bilər. Ancaq bu tip elanların problemi ömürlərinin uzanmasıdır. Geliştirici proqram müddətində və ya elan etdiyi yerlərdə həyat müddətindən xəbərdar olmalıdır. Buna dəyişənin əhatə dairəsi deyilir.

İki ədədin cəmini tapmaq üçün bir proqram nəzərdən keçirin. Bu proqramı müxtəlif yollarla yaza bilərik: tək əsas proqramdan istifadə edərək, dəyişənləri giriş nöqtəsində elan etməklə, proqram daxilində funksiyadan istifadə etməklə və s.

//Method 1
#include 
void main(){
	int intNum1, intNum2;
	int intResult;

	intNum1 = 50;
	intNum2 = 130;

	intResult = intNum1 + intNum2;

	printf("Sum of two number is : %d", intResult);
}

Bu metodda proqramda əldə edilən bütün dəyişənlər əsas funksiyanın əvvəlində elan olunur. Bu, dəyişənlərin elan edilməsinin ənənəvi üsuludur. Bu dəyişənlər əsas funksiya daxilində hər hansı bir ifadəyə və ya ifadələrə daxil olmaq üçün mövcuddur. Bu dəyişkənlərə proqramda və ya başqa bir proqramda başqa bir funksiya və ya blok daxil ola bilməz. Funksiya və ya hər hansı bir blok daxilində elan olunan dəyişənlərə deyilir yerli dəyişən bu funksiyaya və ya bloka. Bu o deməkdir ki, yerli dəyişənlərin əhatə dairəsi elan olunduğu funksiya və ya blokla məhdudlaşır və elan olunduğu funksiyanın və ya blokun sonuna qədər mövcuddur. Yerli bir dəyişən elan edildikdə, avtomatik olaraq işə salınmır. Buna açıq şəkildə dəyər verməliyik.

//Method 2
#include 
void main(){
	int intNum1, intNum2;

	intNum1 = 50;
	intNum2 = 130;

	int intResult = intNum1 + intNum2;

	printf("Sum of two number is : %d", intResult);
}

Bu metodda əsas proqramda cəm hesablandıqda nəticə dəyişən elan olunur. Beləliklə intResult elan edildikdən sonra meydana gəlir. IntResult-a elan edilməmişdən əvvəl daxil olmağa çalışsaq, proqram intResult-un elan edilmədiyini söyləyərək bir səhv atacaq. Bəyan edildikdən sonra əsas funksiyanın sonuna qədər əldə edilə bilər. Yəni dəyişənin əhatə dairəsi elan olunduğu blokun sonuna qədər mövcuddur. Eyni zamanda, intNum1 və intNum2 əsas funksiyanın əvvəlində elan olunur və proqram boyu əldə edilə bilər.

//Method 3
#include 

int intResult; // Global variable

void main(){
	int intNum1, intNum2;
	
	intNum1 = 50;
	intNum2 = 130;

	intResult = intNum1 + intNum2;

	printf("Sum of two number is : %d", intResult);
}

Burada intResult dəyişən əsas funksiyanın xaricində elan olunur. Başqa bir funksiyada və ya blokda yoxdur. Buna görə də adlanır qlobal dəyişən. Bu dəyişən heç bir blok və ya funksiyanın içində olmadığına görə hər hansı bir funksiya, blok və ya ifadə ilə əldə edilə bilər. Beləliklə, qlobal dəyişənlərin əhatə dairəsi heç bir funksiya və ya blokla məhdudlaşmır; ancaq proqram daxilində hər hansı bir funksiya və ya blok tərəfindən əldə edilə bilər. Qlobal dəyişənlər onun məlumat növü üçün müəyyən edilmiş ilkin dəyərə başlayır.

Aşağıda iki ədəd əlavə etmək üçün başqa bir metod var. Burada nəticəni əlavə etmək və göstərmək üçün ayrıca bir funksiya yazılmışdır. Əsas funksiyanın iki lokal dəyişənləri - intNum1 və intNum2 funksiyaya ötürülür. Lokal dəyişən olduğu üçün proqramdakı digər funksiyalar tərəfindən əldə edilə bilməz. Funksiyaya keçdiyindən bu dəyişənlərə AddNum () funksiyası ilə çatmaq olar. Ancaq burada əsas funksiya ilə AddNum funksiyasındakı dəyişənlər arasındakı fərqi qeyd etməliyik. Əsas funksiyadakı dəyişənlər onun üçün lokaldır və yalnız onunla əldə edilə bilər. Bu lokal parametrlər AddNum funksiyasına ötürülür və indi bu funksiya üçün lokaldır. Funksiyanın bu parametrlərinə bir funksiyanın formal parametri deyilir. Çağırış funksiyasından ötürülən dəyişənlərlə eyni ad və ya fərqli ola bilər. Tutaq ki, əsas funksiyanın lokal dəyişəni və formal parametr üçün eyni adımız var. Bu halda, tərtibçi eyni ad və dəyərə sahib olmasına baxmayaraq hər ikisini fərqli dəyişənlər kimi qəbul edir. Burada əsas funksiyada və AddNum funksiyasında dəyişənlərin yaddaş ünvanı fərqlidir. Bu tip keçən dəyişənə dəyər ötürmə deyilir.

Aşağıda hər iki funksiyada da fərqli adlar verdik. Eyni dəyərə sahib olduqlarına və eyni dəyişənlərin funksiyaya ötürülməsinə baxmayaraq, hər ikisinə digər funksiyalarda çatmaq olmur. Məsələn, AddNum funksiyasında intNum1 və intNum2-yə daxil olmağa çalışsaq, bir səhv atacaq. Eynilə, intResult, AddNum-un lokal dəyişənidir və yalnız daxilində daxil ola bilər

//Method 4
#include 

void AddNum(int a, int b);

void main(){
	int intNum1, intNum2;

	intNum1 = 50;
	intNum2 = 130;

	AddNum(intNum1, intNum2);

//	printf("Sum of two number is : %d", intResult);
}

void AddNum(int a, int b){
	int intResult;

	intResult = a + b;

	printf("Sum of two number is : %d", intResult);
}

Tutaq ki, intResult-u qlobal dəyişən elan edirik. Sonra ya əsas funksiyada, ya da AddNum funksiyasında əldə edə bilərik. Qiymətləndirilən son ifadəyə əsaslanan dəyəri ehtiva edir. İntResult-un qlobal dəyişən elan olunduğu aşağıdakı proqramı nəzərdən keçirin. İndi hər hansı bir funksiyadan əldə edilə bilər. Bu funksiyada qiymətləndirilən ifadədən asılı olaraq dəyəri ehtiva edir.

//Method 5
#include 

void AddNum(int a, int b);
int intResult;

void main(){
	int intNum1=100, intNum2 =200;

	AddNum(intNum1, intNum2);
	intNum1 = 50;
	intNum2 = 130;

	intResult = intNum1 + intNum2;
	printf("Sum of two number is : %d\n", intResult);
}


void AddNum(int a, int b){
	intResult = a + b;

	printf("Sum of two number is : %d\n", intResult);
}

Bütün bu nümunələrdən başa düşdük ki, yerli dəyişənlərə yalnız funksiya daxilində və ya elan olunduğu blok daxilində, qlobal dəyişənlərə isə proqram boyu daxil olur.

Aşağıdakı bir kod blokunu nəzərdən keçirin:

//Method 6
#include 

void main(){
    int intArr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    for (int index =0, index<10, index++)
        printf("%d\t", intArr[index]);

    //printf("\nIndex = %d\n", index); // this row will throw an error
}

Burada indeks dəyişəni 'for' dövrünün içərisində elan olunur. İndeks əsas funksiyanın içində olsa da, əsas funksiyadakı bir blokun içində elan edilir. Bu, indeksin lokal dəyişən olmasına baxmayaraq, loop blok və onun içində elan edilmiş dəyişənlərin lokal olduğu üçün qəbul edilir. Beləliklə for loop içərisindəki indeksə daxil ola bilərik (tək sətir olmamalıdır - birdən çox sətir ola bilər), ancaq loop xaricində - blok xaricində əldə edilə bilməz. Dəyişən indeksin əhatə dairəsi və ya ömrü, blokun sonu - döngə bitən kimi bitər.

Crack Sistemi Dizayn Müsahibələri
Translate »