اطلاعیه

Collapse
No announcement yet.

ساختمان ها در c

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    ساختمان ها در c

    با سلام
    من کتاب اقای جعفرنژاد را دارم میخونم ولی قسمت ساختمان ها را متوجه نشدم کسیر از دوستان میتونه کمکم کنه.که این ساختمان چیه و به چه دردی میخوره

    #2
    پاسخ : ساختمان ها در c

    با سلام
    والا فایده که زیاد داره :mrgreen: تا شما بخوای چه کار باهاش انجام بدی
    به طور کلی کاری که structure انجام میده اینه که میاد داده های مختلف شما رو که می تونه از انواع مختلفی هم باشه، داخل یک بلوک میریزه .اینطوری باعث میشه شما داخل یک پک مثلا اسم یک دانشجو فامیلش و شماره دانشجویی و... رو داشته باشید.خب این خیلی باحال تره تا اینکه این ها رو به صورت جدا جدا داشته باشید. در واقع میشه اینطور گفت با ساختار شما یک نوع (type) جدید منحصر به خودتون رو دارید میسازید مثلا تایپ student که درون متغیری از این تایپ داده هایی از جنس تایپ های اصلی استفاده شده که در بالا گفتم.
    یه نکته که گفتنش بد نیست فرض کنید که شما بخواهید در زبان سی خروجی تابع تون چند داده باشه مثلا در مثال قبلی خروجی رو بخواهید اسم و فامیل و شماره دانشجویی بگردونه .خب در حالت عادی این کار امکان نداره که خروجی تابع چند چیز باشه ولی با ساختار می تونید این داده ها رو درون یک بسته قرار بدید و خروجی تابع این بسته را برگردونه(البته برای برگردوندنه چند متغیر توسط تابع می توان از پوینتر در ورودی هم استفاده کرد ولی راه مذکور هم هست)
    پی نوشت: بحث ساختار را به عنوان یک بحث اضافی در نظر نگیرید و سعی کنید خوب درکش کنید.چراکه در کتابخانه های حرفه ای از ساختارها زیاد استفاده می شود و همچنین بعدا اگر بخواهید زبان های شی گرایی را یاد بگیرید مفهومش بهتون کمک می کنه.
    ای خدا ، من باید از نظر علم از همه برتر باشم، تا مبادا که دشمنان مرا از این راه طعنه زنند. باید به آن سنگدلانی که علم را بهانه کرده و به دیگران فخر میآ‌فروشند، ثابت کنم که خاک پای من هم نخواهند شد. باید همه آن تیره دلان مغرور و متکبر را به زانو در آورم، آنگاه خود خاضع ترین و افتاده ترین مرد روی زمین باشم.
    شهید دکتر مصطفی چمران

    دیدگاه


      #3
      پاسخ : ساختمان ها در c

      نوشته اصلی توسط phoenix2000
      با سلام
      والا فایده که زیاد داره :mrgreen: تا شما بخوای چه کار باهاش انجام بدی
      به طور کلی کاری که structure انجام میده اینه که میاد داده های مختلف شما رو که می تونه از انواع مختلفی هم باشه، داخل یک بلوک میریزه .اینطوری باعث میشه شما داخل یک پک مثلا اسم یک دانشجو فامیلش و شماره دانشجویی و... رو داشته باشید.خب این خیلی باحال تره تا اینکه این ها رو به صورت جدا جدا داشته باشید. در واقع میشه اینطور گفت با ساختار شما یک نوع (type) جدید منحصر به خودتون رو دارید میسازید مثلا تایپ student که درون متغیری از این تایپ داده هایی از جنس تایپ های اصلی استفاده شده که در بالا گفتم.
      یه نکته که گفتنش بد نیست فرض کنید که شما بخواهید در زبان سی خروجی تابع تون چند داده باشه مثلا در مثال قبلی خروجی رو بخواهید اسم و فامیل و شماره دانشجویی بگردونه .خب در حالت عادی این کار امکان نداره که خروجی تابع چند چیز باشه ولی با ساختار می تونید این داده ها رو درون یک بسته قرار بدید و خروجی تابع این بسته را برگردونه(البته برای برگردوندنه چند متغیر توسط تابع می توان از پوینتر در ورودی هم استفاده کرد ولی راه مذکور هم هست)
      پی نوشت: بحث ساختار را به عنوان یک بحث اضافی در نظر نگیرید و سعی کنید خوب درکش کنید.چراکه در کتابخانه های حرفه ای از ساختارها زیاد استفاده می شود و همچنین بعدا اگر بخواهید زبان های شی گرایی را یاد بگیرید مفهومش بهتون کمک می کنه.
      خیلی ممنون دوست عزیز.میشه یه مثال بزنید
      چیزیهایی که برام خیلی گنگ هستش این است
      ما ساختمانی را با اجزا مختلف تعریف میکنیم .مثلا از انواع Char-int و Float بعد میاییم و متغییرهایی از نوع ساختمان را نیز تعریف میکنیم.خوب حالا چه جوری این متغییرهایی که تعریف کردیم میتونه انواع تعریف شده در ساختمان را در خود جای بده

      دیدگاه


        #4
        پاسخ : ساختمان ها در c

        سلام
        به نظر من ساختار ها یک لول پایین تر از کلاس ها و شی گرایی هستن و میشه با مفاهیم شی گرایی توضیحش داد.
        ببینید شما در برنامه نویسی شی گرا تمام اجزای پروژه رو به عنوان یک شی در نظر میگیرید. این شی یک سری ویژگی ها داره و یک سری توانایی. مثلا شما در یک پرتال دانشجویی با آیتم های مختلفی روبرو میشین مثل دانشجو، ترم، درس، استاد و ... .
        من دانشجو رو مثال میزنم. تمام دانشجوها دارای ویژگی هایی مثل نام، نام خانوادگی، شماره دانشجویی و ... هستن (یه سری توانایی ها هم دارن مثل انتخاب کردن درس و .. که جای این بحث اینجا نیست). خب، حالا شما برای پیاده سازی این آیتم (دانشجوها) نیاز به یک ساختمان داده دارین که میشه از struct استفاده کرد.

        کد:
        struct student
        {
        	string fn;
        	string ln;
        	unsigned int id;
        }
        قطعه ی بالا یک استارکت هست که پیاده سازی بسیار ساده از آیتم دانشجوها هست. حالا که ما استارکت دانشجوها رو تعریف کردیم به شکل بالا، میایم ازش آبجکت میسازیم، مثلا ۱۰۰ تا دانشجو داریم :

        کد:
        student students[100];
        الان شما میخواید این ۱۰۰ تا دانشجو رو ثبت نام کنین :

        کد:
        for(i = 0;i<100;i++)
        {
        	cin >> FN;
        	cin >> LN;
        	cin >> ID
        	students[i].fn = FN;
        	students[i].ln = LN;
        	students[i].id = ID;
        }
        امیدوارم که متوجه شده باشید، خیلی خلاصه گفتم. اگه مشکلی بود در خدمتیم.

        دیدگاه


          #5
          پاسخ : ساختمان ها در c

          با تشکر از دوستان چندتا سوال دیگه بابت زبان c دارم که اینجا میخوام بپرسم
          1- بابت ساختمانها یه چیزهایی متوجه شدم.حالا فرض کنید یه ساختمانی راتعریف کردم مثل زیر.
          #include <stdio.h>
          #include <conio.h>
          int main(){
          int n=0,i=0;
          struct daneshjo{
          char name[20];
          int code[200];
          float nomre[200];
          };
          struct daneshjo d[2];
          printf("enter number of student:"
          scanf("%d",&n);
          for(i=0;i<n;i++){
          printf("\nenter name of student(%d):",i+1);
          d[0].name=getche();

          }
          حالا جایی که مشکل دارم .اون خط getche() هستش که نمیتونه اجرا کنه.با دستور gets() نوشتم جواب نداد.فقط و فقط با تابع scanf() کار میکنه.چرا؟؟؟
          2- سوال دومم این هستش:فرض کنیم متغییر معمولی i و متغییر ارایه ای s[j] داریم(این دو متغییر داخل تابع main تعریف کرده ایم و توسط ارگومان به تابع دیگری ارسال میکنیم.داخل اون تابع فرعی روی هر دوپارامتر I ,s[j] تغییراتی صورت بگیرد.حالا زامنیکه از تابع فرعی به تابع اصلی برمیگردیم .متغییر معمولی ما یعنی I در تابع اصلی تغییری نکرده(چون متغییر محلی است و یک کپی از اون بعنوان پارامتر تابع ارسال شده است).ولی تغییراتی که روی اون ارایه داده شده .در تابع اصلی نیز این تغییرات لحاظ میشه.چرا؟؟؟
          خوب ارایه هم که بعنوان متغییر محلی تو تابع اصلی تعریف کردیم چرا عملکردش با تابع معمولی متفاوت هستش؟؟؟ایا استثنا وجود داره؟؟

          دیدگاه

          لطفا صبر کنید...
          X