SpareNet Servers Advertising & Link Exchange

اطلاعیه

بستن
هیچ اطلاعیه ای هنوز ایجاد نشده است .

آموزش زبان برنامه نویسی c به زبان ساده

بستن
X
 
  • فیلتر
  • زمان
  • نمایش
پاک کردن همه
نوشته‌های جدید

  • #16
    (اشاره گرها)

    با سلام

    یکی از فاکتورهای قدرتمند زبان c توانایی این زبان در کار با اشاره گرها و یا pointers هست.
    و برنامه های زیادی در c وابسته به اشاره گرها هستند.
    زمانی که ما قصد داشته باشیم که با حافظه به صورت مستقیم کار کنیم و سرعت و راندمان رو افزایش بدیم.
    می تونیم از اشاره گرها استفاده کنیم. البته برای درک بیشتر بهتر هست که یک دید حداقل جزیی از حافظه داشته باشیم.
    وقتی که ما از اشاره گرها صحبت می کنیم در واقع به محل ذخیره سازی داده ها در حافظه اشاره می کنیم.
    هر خونه از حافظه دارای یک شماره و یا یک اندیس هست. این شماره همون آدرس ما هست.
    به طور کلی در مورد اشاره گرها ما با آدرس سروکار داریم.
    برای توصیف یک اشاره گر که نشان دهنده ی محل ذخیره سازی یک عدد صحیح در حافظه باشه به این شکل عمل می کنیم ;int *ptr
    که از علامت * برای تعریف یک اشاره گر استفاده می کنیم. که با یک نام ptr همراه هست.
    که به * اپراتور Derefrencing هم میگن که یک نشانی رو توصیف میکنه و اپراتور & یا همون Address که اشاره به آدرس داده ها داره.
    دقت کنید که از کلمه ی اپراتور استفاده کردم. و این دو اثر هم رو خنثی میکنن.
    format specifier %p هم برای نمایش آدرس در فرمت هگز به کار میره.
    خب دیگه توضیح کافیه.
    این هم یک مثال ساده :

    برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: Screenshot1.png
مشاهده: 99
حجم: 31.2 کیلو بایت

    برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: Screenshot2.png
مشاهده: 95
حجم: 19.8 کیلو بایت

    مراقب خودتون باشید.
    فعلا یا علی.

    نظر


    • #17
      (کاراکترها و رشته ها)

      با سلام

      کاراکترها و رشته ها نوعی از داده هستند که با استفاده از اون ها می تونیم با متن ها کار کنیم.
      و در زبان c امکانات خوبی برای کار با کاراکترها و رشته ها وجود داره.
      من در این بخش در مورد کاراکترها توضیح میدم و در بخش بعدی در مورد رشته ها.
      اول این رو بگم که خود کاراکترها یک نوع داده از جنس عدد صحیح هستند و کاراکترها می تونند یک حرف و یا یک علامت باشند.
      برای تعریف کاراکترها در زبان c باید از نوع داده ی char استفاده کنیم و همین طور کاراکترها در داخل تک کوتیشن قرار می گیرند. مثل 'A'
      خب کتابخونه های مختلفی برای کار با کاراکترها در c وجود داره که یکی از کتابخونه های مهم کتابخونه ی ctype.h هست که توابع مختلفی در اون وجود داره.
      سعی می کنم که چند تابع از این کتابخونه رو توضیح بدم.
      یکسری توابع تشخیص نوع کاراکتر در این کتابخونه وجود داره که کاربردی هست.
      مثل تابع ()isdigit که چک می کنه کاراکتر ما از جنس عدد هست یا نه و یک آرگومان ورودی هم بیشتر نمی گیره.
      اگر مقداری رو که بر می گردونه بزرگتر از صفر باشه کاراکتر ما عددی هستش و اگر صفر باشه یک کاراکتر عددی نیستش.

      برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: Screenshot1.png مشاهده: 0 حجم: 21.9 کیلو بایت

      برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: Screenshot2.png مشاهده: 0 حجم: 9.7 کیلو بایت

      مشابه تابع ()isdigit تابع ()isalpha رو داریم که چک می کنه کاراکتر ما از نوع حرف هست یا نه. حالا چه بزرگ و چه کوچک.

      برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: Screenshot3.png مشاهده: 0 حجم: 21.9 کیلو بایت

      برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: Screenshot4.png مشاهده: 0 حجم: 9.5 کیلو بایت
      ویرایش توسط Reza.Black : https://www.iranhack.com/forum/member/8206-reza-black در ساعت 11-04-2023, 08:23 PM

      نظر


      • #18
        و یا تابع ()islower که چک می کنه کاراکتر ما حرف کوچک هست یا نه. این کار رو میشه با آرایه ای از کاراکترها و یک حلقه ی while به خوبی نشون داد.

        برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: Screenshot5.png مشاهده: 0 حجم: 22.8 کیلو بایت

        برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: Screenshot6.png مشاهده: 0 حجم: 12.3 کیلو بایت


        واقعا توابع زیادی وجود داره که نمیشه همه رو اینجا توضیح داد.
        ویرایش توسط Reza.Black : https://www.iranhack.com/forum/member/8206-reza-black در ساعت 11-04-2023, 08:46 PM

        نظر


        • #19
          رضا جان ممنون از فعالیتت

          نظر


          • #20
            با سلام

            رشته ها در واقع آرایه ای از کاراکترها هستند.
            و در زبان c ما داده ی خاصی به نام رشته نداریم.
            و در واقع نوع داده ی اصلی ما همون نوع داده ی char یا کاراکتر هستش که رشته ها رو ایجاد می کنند.
            برای تعریف رشته در زبان c به این شکل عمل می کنیم. ;"char s[] = "Reza
            مفهوم این عبارت این هست که s آرایه ای از کاراکترها هست. که عبارت "Reza" رو در خودش جا داده.
            دقت کنید که در پایان رشته یک کاراکتر موسوم به Null رو داریم که انتهای رشته ی ما رو مشخص می کنه. '0\'
            البته آرایه ها به طور معادل با اشاره گرها هم می تونند توصیف بشن و فرقی نداره.
            مثل : ;"const char *s = "Reza
            پس اشاره گر به کاراکتر همون رشته هست.
            خیلی هم خوب.
            حالا چطوری رشته ها رو از ورودی حالا توسط کاربر دریافت کنیم.
            برای مثال آرایه ای از کاراکترها به طول مشخص تعریف می کنیم مثلا 10 تا ;char s[10]
            البته در واقع 9 کاراکتر هست یکی هم شامل همون Null کاراکتر انتهایی هستش.
            خیلی ساده با تابع ()scanf از کاربر ورودی می گیریم. البته روش های دیگه ای هم وجود داره.
            فقط از فرمت "s%" که منظورمون یک رشته هست که قصد داریم از ورودی دریافت کنیم.
            و از دادن آدرس & خودداری می کنیم کافی هست که نام آرایه که s هست رو بنویسیم.
            چون که یک آرایه هست و چون خودش رفتاری مثل اشاره گر رو داره.
            البته این روش ناامن هست و روش درست این هست که طول رو در ()scanf یکی کمتر از طول آرایه ی کاراکتری در نظر بگیریم.
            که در این مثال همون 9 تا هستش. این هم باز به خاطر کاراکتر Null انتهایی هست. که بعدا شاید یک آموزش در این مورد در انجمن ایجاد کردم.
            ولی فعلا در همین حدود بدونید.

            این هم یک مثال ساده :

            برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: Screenshot1.png
مشاهده: 80
حجم: 17.2 کیلو بایت

            برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: Screenshot2.png
مشاهده: 77
حجم: 10.2 کیلو بایت

            در بخش بعدی در مورد کتابخونه ی string.h که یک کتابخونه ی تخصصی کار با رشته ها هست توضیح میدم.
            فعلا یا علی.

            نظر


            • #21
              با سلام

              کتابخونه ی string.h یک کتابخونه ی اختصاصی برای کار با رشته ها هست.
              و در اون توابع زیادی برای کار با رشته ها وجود داره. مثل کپی و چسباندن و مقایسه و یا جستجو و غیره...
              که من چند مورد رو نام می برم.
              اولی تابع ()strcpy هست که برای کپی یک رشته در یک رشته ی دیگه به کار میره.
              ترتیبش به این شکل هست که رشته ی سورس رو در رشته ی مقصد کپی می کنه و مقصد رو در خروجی نمایش میده.

              برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: Screenshot1.png
مشاهده: 77
حجم: 20.9 کیلو بایت

              برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: Screenshot2.png
مشاهده: 74
حجم: 10.5 کیلو بایت

              و همین طور برای ادغام رشته ها از تابع ()strcat استفاده می کنیم.

              برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: Screenshot3.png
مشاهده: 76
حجم: 19.4 کیلو بایت

              برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: Screenshot4.png
مشاهده: 73
حجم: 9.3 کیلو بایت

              نظر


              • #22
                و یا تابع ()strcmp که برای مقایسه ی رشته ها به کار میره.
                که خروجی این تابع از جنس عدد صحیح هستش.
                اگر str1 بزرگتر از str2 باشه این تابع مقدارش بزرگتر از صفر هست یعنی مثبته و اگه str1 از دومی کوچک باشه.
                مقدار کمتر از صفر یعنی منفی رو بر می گردونه و اگه دو تا رشته مثل هم باشن مقدارش صفر هست.
                البته str2 و str1 در اینجا فقط یک نام هستند. و ارزش کدی در اینجا مهمه.

                این هم یک مثال :

                برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: Screenshot5.png
مشاهده: 77
حجم: 23.4 کیلو بایت

                برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: Screenshot6.png
مشاهده: 74
حجم: 11.4 کیلو بایت

                نظر


                • #23
                  (ساختارها)

                  یکی از مباحث مهم در برنامه نویسی بحث ساختارها و یا structures هست. که کاربردهای گوناگونی هم دارند.
                  و جالب هست که یه جورایی پایه های برنامه نویسی شی گرا رو شکل دادند.
                  واقعا پیاده سازی برخی از برنامه ها بدون در نظر گرفتن ساختارها کار سختی هست.
                  شباهت ساختار و آرایه این هست که داده ها رو تحت یک نام جمع آوری می کنند.
                  ولی تفاوتشون این هست که آرایه ها مبتنی بر اندیس و ساختارها مبتنی بر نام هستند.
                  و تفاوت دیگشون این هست که آرایه ها شامل و یا حاوی داده های هم نوع هستند.
                  ولی ساختارها حاوی داده های غیر هم نوع و یا غیر یکسان هستند.

                  در ساختارها ما با ویژگی ها و یا شناسه ها کار داریم و این ها هستند که موجودیت ها رو تشکیل میدن.
                  مثلا برای توصیف یک ماشین که یک موجودیت هست ما باید یکسری ویژگی برای اون تعیین کنیم.
                  مثل برند و مدل و سال ساختش

                  برای تعریف ساختار اول کلمه ی کلیدی ساختار struct رو داریم و بعد از اون یک نام برای ساختار و در داخل بلوک { }
                  نوع اطلاعات رو تعریف می کنیم. و بعد از اون ما باید یک متغیر از نوع struct مربوطه که در اینجا ماشین اول و دوم تعریف میکنیم.
                  مثلا متغیری به نام car1 در اینجا تعریف کردیم و خود این متغیر شامل چند ویژگی یا شناسه هست.
                  ولی مقداری برای اعضای داخلی اون ست نشده البته برای مقدار دهی چندین روش وجود داره.
                  میشه تقریبا مثل یک آرایه با اون رفتار کرد. و یا از اپراتور . یا dot برای دسترسی به اعضای یک ساختار استفاده کرد.
                  و تک تک اون ها رو مقدار دهی کنیم. و یا به نمایش دربیاریم.

                  برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: Screenshot1.png مشاهده: 0 حجم: 24.4 کیلو بایت

                  برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: Screenshot2.png مشاهده: 0 حجم: 10.2 کیلو بایت

                  خب این آموزش هم تموم شد. صد البته که این آموزش هم مثل تمامی آموزش ها دارای نواقصی بود.
                  یکسری مطالب رو گفتم یکسری رو هم نگفتم چون که عنوان این آموزش. آموزش زبان برنامه نویسی c به زبان ساده بود.
                  و قصد نداشتم که ذهن مخاطب رو خیلی درگیر کنم.
                  (هر کاری که می کنید فقط ناامید نشید)
                  موفق و سربلند باشید.
                  یا علی.
                  ویرایش توسط Reza.Black : https://www.iranhack.com/forum/member/8206-reza-black در ساعت 11-07-2023, 07:04 PM

                  نظر

                  صبر کنید ..
                  X