MENU ▽ بیلگی
آذربایجان تورکجه‌سینده بیلگی‌لر

  • آنا صفحه‌سی
  • فلسفه
  • کامپیوتر
  • بیزه گؤره
  • ایشاره‌چی فانکشن‌لر

    C پروقرامچیلیق یاشامیندا، فانکشنه احتیاج اولارکن و ایشاره‌چی میقدارین قایتارماغی اوچون، ایشاره‌چیلرین قوللانماسینا گؤره بیله‌جکسینیز و بونون نئجه چوخ ساییدا آرایا گلمه‌سیندن شاشیرا بیلرسینیز.

    نیسه، بو فصلده نئجه ایشاره‌چی فانکشنی اوچون آدرس ایختیصاص وئرمه‌یی و حتی بیری‌نین تنظیم و اؤزل‌لشدیرمه‌سینی (cutomize) ده آچیقلایاجاییق.

    نئجه بیر فانکشن اوچون چوخلو یول‌لار ایله ایشاره‌چی‌یی ایستیفاده ائتمه‌یی، نئجه ایشاره‌چی‌یی بیر فانکشنه گؤندرمک و نئجه ایشاره‌چیلری بیر فانکش‌دن گئری قایتارماغی دا صؤحبت ائده‌جه‌ییک.

    بو کیتابدا سایسیزجا ایشاره‌چیلری ایستیفاده ائتسک ده، ماراقلانمایا بیلرسینیز.

    آشاغیداکی اؤرنگه گؤز دولاندیرین:

    #include <stdio.h>
    int main()
    {
    char x;
    printf("Type a character: ");
    scanf("%c",&x);
    printf("Character %c\n",x);
    return(0);
    }

    یاخشی، scanf فانکشنه باخسانیز، ائله ایشاره‌چی ایشله‌دیب‌دیر. x موتغیریندن اؤنجه‌کی & اوپراتوی دا ائله بو مسئله‌یی آچیقلاییر.

    داها دوغروسو، & اوپراتوری، x موتغیری اوچون حافیظه‌ده‌کی یئری اسکن ائدیر و اونو فانکشن اوچون قایتاریر.

    ایندیه‌جن باش تاپا بیلدیگینیز تکین، میقدارین فانکشن اوچون قایتاریلماسی، یالنیز فانکشن‌ده باش وئرمیر، بلکه فانکشنین گؤردوگو ایش، بیر ایشاره‌چی ایله میقداری موستقیما و دیرک‌جه x موتغیری اوچون ایختیصاص وئرمک‌دیر.

    هوش‌لو یول‌دور، دگیل‌می؟!

    سونراکی کودا باخین.

    بورادا scanf فانکشنینده، name موتغیریندن اؤنجه & یوخدور!

    عیلّتی ده name موتغیرین دوٚزن اولماسی‌دیر.

    #include <stdio.h>
    int main()
    {
    char name[15];
    printf("Your name? ");
    scanf("%s",name);
    printf("You are %s.\n",name);
    return(0);
    }

    اؤزونوز اوچون ده ایشاره‌چی ایله چالیشان بیر فانکشن یارادا بیلرسینیز. بوتون لازیم اولدوغونوز زاد، یالنیز قایتاران میقدار یوخسا آرقومان تکین اؤزل بیر ایشاره‌چی‌دیر.

    آشاغیداکی کودو نظرده آلین:

    #include <stdio.h>
    void minus10(int *v);
    int main()
    {
    int value = 100;
    printf("Value is %d\n",value);
    minus10(&value);
    printf("Value is %d\n",value);
    return(0);
    }
    void minus10(int *v)
    {
    *v = *v - 10;
    }

    گؤردویونوز تکین، ۲-جی سطرده minus10 تکین بیر فانکشن معرفی اولوبدور.

    سونرا ۱۱-جی سطرده تعریف اولوبدور.

    آرقومان اولاراق بیر ایشاره‌چی موتغیری بو فانکشن قبول ائدیبدیر.

    سونرا بو آدرسه مخصوص اولان میقداری، ‎10 سایی‌جا آزالدیب و یئنی میقدار ایندیکی آدرس اوچون ایختیصاص وئریلیب‌دیر. البته بو فانکشن بیر میقدار قایتارماسا دا، اؤزل بیر آدرس اوچون میقداری دگیشدیگینه گؤره، میقدار قایتارماق تکین گؤرونور.

    یاخشی، دئملی ساده‌جه اینتیجر بیر عددی ۱۰ واحد آزالدیر!

    سونرا قاییداق اوٚستده‌کی سطرلره.

    ۵-جی سطرده value تکین بیر اینتیجر موتغیر تعریف اولاراق، ‎100 میقداری اونون اوچون ایختیصاص وئریلیب‌دیر.

    ۶-جی سطرده چاپ اولوب و ۷-جی سطرده ایسه آچیقلادیغیمیز فانکشن وار.

    بو فانکشن اوچون آلینان آرقومان‌دان اؤنجه & اوپراتوری وار و بو تامامی ایله ایندیکی موتغیر اوچون آدرسی، اؤنجه تعریف ائتدیگیمیز فانکشنه گؤندریر.

    ایندی آشاغیداکی پروقراما باخین:

    #include <stdio.h>
    #include <string.h>
    char *longer(char *s1, char *s2);
    int main()
    {
    char *string1 = "A long time ago";
    char *string2 = "In a galaxy far, far away";
    char *result;
    result = longer(string1,string2);
    printf("String \"%s\" is longer.\n",result);
    return(0);
    }
    char *longer(char *s1, char *s2)
    {
    int len1,len2;
    len1 = strlen(s1);
    len2 = strlen(s2);
    if( len1 > len2 )
    return(s1);
    else
    return(s2);
    }

    گئنه ده ۳-جو سطرده بیر پروتوتایپ واریمیز کی فانکشنی ایلک یول اولاراق، پروقرام اوچون معرفی ائدیر. سونرا دا بوتون زادلار ۹-جو سطره قدر بللی‌دیر.

    ۹-جو سطرده result ایسترینگی اوچون میقدار، longer فانکشنی ایله و قاباقکی ایکی string1 و string2 موتغیرلره باخاراق تعیین اولوبدور.

    اما longer فانکشنی:

    ۱۳-جو سطرده آرقومان‌لار اوچون ایشاره‌چی ایختیصاص وئریلمه‌یی گؤره بیلرسینیز. یعنی s1 و s2 ایشاره‌چیلری. سونرا ایکی ایسترینگین اوزونلوقلاری توتوشدورولاراق، بیر شرط‌دن سونرا، اوزون اولان ایسترینگ قایتاریلیر. s1 میقداری s1 ایشاره‌چی اوچوندور و s2 ده s2 اوچون.

    فانکشنه بیر داها باخسانیز، longer کلمه‌سیندن ده اؤنجه اولدوز وار، آرقومان‌لاردان دا اؤنجه.

    قاباقجا دئمیشدیک کی فانکشن‌لر بیر ساییدان چوخ میقدار قایتارا بیلمزلر و البته کی ماتریس ده قایتارا بیلمزلر، آنجاق ایشاره‌چی اولان یئرده، بونلارین بوتون‌لری ممکن اولور. ائله بو سون پروقرام‌دا نئجه نئچه‌لر ساییدا میقدارلارین قایتاریلماسینی گؤره بیلرسینیز. اصلینده حافیظه‌ده‌کی آدرسه أل چاتیرسا، یاپا بیلمه‌ین ایش قالمیر.

    #include <stdio.h>
    #include <ctype.h>
    void shouting(char *input);
    int main()
    {
    char string[64];
    printf("Type some text: ");
    fgets(string,64,stdin);
    printf("You typed:\n%s\n",string);
    shouting(string);
    printf("If you were shouting, you'd typed:\n%s\n",string);
    return(0);
    }
    void shouting(char *input)
    {
    while(*input)
    {
    *input = toupper(*input);
    input++;
    }
    }

    قاباقکی پروقرام، ایشاره‌چی ایله ایسترینگی بیر فانکشن‌ده ایداره ائتمک اوچون بیر اؤرنکدیر کی بوراداکی فانکشن بیر میقداری قایتارماغا دا مجبور دئییل.

    اؤنجه ۱۴-جو سطری مباحثه ائدک.

    بو فانکشن، input تکین بیر ایشاره‌چی‌یی آرقومان اولاراق آلیر، سونرا بوتون کاراکترلریسینی، یئکه حرفه چئویریر. بیر زادی دا قایتارماغا مجبور دئییل، حافیظه‌ده‌کی آدرسی دگیشمک، میقداری قایتارماق‌دان داها ائتکی‌لی‌دیر. ایندی آشاغیداکی کودا باخین:

    #include <stdio.h>
    #include <ctype.h>
    char *encrypt(char *input);
    int main()
    {
    char *instructions = "Deliver the package to Berlin";
    printf("Here are your secret instructions:\n%s\n",
    encrypt(instructions));
    return(0);
    }
    char *encrypt(char *input)
    {
    char output[64];
    int x = 0;
    while(*input)
    {
    if(isalpha(*input))
    output[x] = *input + 1;
    else
    output[x] = *input;
    x++;
    input++;
    }
    return output;
    }
    Output Terminal
    Here are your secret instructions:
    (null)
    
    Process returned 0 (0x0)   execution time : 0.009 s
    Press ENTER to continue.

    گؤردویونوز تکین، فانکشنین بوراخدیغی میقدار، (null) چاپ اولوبدور! سیزجه نه‌دن؟

    باخسانیز کامپایلرین بوراخدیغی اویاری‌لاری گؤره بیلرسینیز.

    یاخشی، قایتاریلان کاراکترسل output موتغیری اوچون، بیر زادی نظرده آلمالیسینیز.

    قاباقجا دئدیگیمیز تکین، فانکشن‌لر بیر ساییدا میقدار قایتارا بیلرلر، دوٚزن و یا نئچه ساییدا میقدارلاری قایتارا بیلمزلر.

    دقیقا ده ایشاره‌چیلرین اولماغی دا بوردا أن بؤیوک یاردیمچی اولا بیلر.

    آنجاق ۱۰-جو سطرده‌کی دستورالعملی static یازسانیز، میقدارلار لوکال اولماق یئرینه، استاتیک قالیب و اوخونا دا بیلرلر.

    ۱۰-جو سطری بوجور دگیشین و یئنیدن چالیشدیرین. بو یوا بوراخیشدا بونو گؤرملیسینیز:

    char static output[64];
    Output Terminal
    Here are your secret instructions:
    Efmjwfs uif qbdlbhf up Cfsmjo
    
    Process returned 0 (0x0)   execution time : 0.004 s
    Press ENTER to continue.

    داها ایندی اویاری‌لاری دا گؤرمویه‌جکسینیز.

    البته بو پروقرامین ایرادلارینی باشقا یول ایله ده دوٚزلده بیلرسینیز.

    ائله بو مسئله‌یی صؤحبت ائتمک اوچون سونراکی پروقرامی ایزله‌یین:

    #include <stdio.h>
    #include <ctype.h>
    char *encrypt(char *input);
    int main()
    {
    char *instructions = "Deliver the package to Berlin";
    printf("Here are your secret instructions:\n%s\n",
    encrypt(instructions));
    return(0);
    }
    char *encrypt(char *input)
    {
    char static output[64];
    char *temp;
    temp = output;
    int x = 0;
    while(*input)
    {
    if(isalpha(*input))
    output[x] = *input + 1;
    else
    output[x] = *input;
    x++;
    input++;
    }
    return temp;
    }

    بوراخیش ایسه بئله اولاجاق:

    Output Terminal
    Here are your secret instructions:
    Efmjwfs uif qbdlbhf up Cfsmjo
    
    Process returned 0 (0x0)   execution time : 0.016 s
    Press any key to continue.