تبلیغات :
آکوستیک ، فوم شانه تخم مرغی، صداگیر ماینر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




نمايش نتايج 1 به 6 از 6

نام تاپيک: درخواست منبع برای مطالعه مبانی اساسی کامپوتر؟

  1. #1
    در آغاز فعالیت
    تاريخ عضويت
    Dec 2017
    پست ها
    19

    پيش فرض درخواست منبع برای مطالعه مبانی اساسی کامپوتر؟

    سلام دوستان

    من چون رشته ی تحصیلیم کامپوتر و نرمافزار نیست و برنامه نویسی رو تجربی یاد گرفتم

    الان نیاز دارم یه اطلاعات بیشتری راجع به جزییات برنامه نویسی و اساس کارکرد کامپوتر بدونم و دنبال منبع مناسب هستم برای مطالعه

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

    وقتی یه متغییر مثلا از نوع Integer تعریف میکنم و مقداری رو در اون میزارم این مقدار چه جوری و به چه شکل و در کجای حافظه ی RAM نوشته میشه ؟

    تبدیل اعداد به مبنای 2 و مبنای 16 در کامپوتر برای چیست و به چه معناست ؟

    به طور کلی دنبال نام درسی از رشته مهندسی نرم افزار هستم که راجع به این مسائل توضیح داده باشه

    ممنون./

  2. #2
    کـاربـر بـاسـابـقـه am_merman01's Avatar
    تاريخ عضويت
    May 2006
    محل سكونت
    یه جایی گوشه دهکده جهانی تو یه کانکشن دایال آپ
    پست ها
    893

    پيش فرض

    با عرض سلام و تبریک سال نو
    دوست عزیز من هم مثل شما تجربی یاد گرفتم و چیز زیادی بلد نیستم اما چند نکته که خوندم رو بهتون میگم شاید براتون مفید باشه
    اول اینکه حافظه ram مخفف کلمه حافظه با دسترسی تصادفی هستش بنابراین اطلاعات به صورت کاملا تصادفی بر روی اون میشینن ولی جایی که قرار گرفتن یک آدرس داره که اون آدرس توی حافظه کش cpu (معمولا کش L1 ) که در واقع خودش( cpu ) دستور داده تا اطلاعات اونجا برن به صورت موقت تا زمان از بین رفتن اطلاعات ذخیره میشه. بنابراین دونستن مکان و نحوه ذخیره اطلاعات بر روی رم چندان کاربردی نیست و چیزی نیست که هر روز بخوای ازش استفاده کنی مگر برای موارد خیلی خاص.
    فقط کافیه بدونی که رم مثل یک زنجیره بلند از خونه هاس (بایت ها) که هر خونه به ۸ اتاق (بیت) تقسیم شده و اطلاعات برای ذخیره شدن حداقل باید یک خونه (بایت) رو اشغال کنن یا به بیان دیگه اطلاعات نمیتونن یک خونه رو ناقص اشغال کنن مثلا نمیشه داده ای حجمش ۱.۵ بایت باشه یا یک بایته و یا دو بایت و یا بیشتر (فکر نکنم چندان خوب توضیح داده باشم ولی خلاصه چندین صفحه مقاله انگلیسی بود که چند سال پیش خوندم شما سعی کن خودت تصورش کنی )
    در مورد تبدیل مبنای ۲ به ۱۶ هم یک دلیل ساده وجود داره. همونطور که بالا گفتم (البته نگفتم ) کوچکترین واحد در کامپیوتر بیت هستش که میتونه صفر و یا یک باشه (روشن و یا خاموش) و از کنار هم قرار گرفتن ۸ بیت یک بایت بوجود میاد که کوچترین واحد ذخیره سازیه و در اصطلاح بهش یک کارکتر هم گفته میشه. حالا اگه کمی باینری( سیستم عددی ۲ تایی) بلد باشی متوجه میشی که بزرگترین عدد ممکنه که با فقط ۴ بیت میشه ساخت عدد ۱۱۱۱ هستش که تبدیلش به سیستم دسیمال یا ۱۰ تایی میشه عدد ۱۵ و تبدیلش به سیستم هگزادسیمال یا ۱۶ تایی میشه F به این شکل یک بایت که از ۸ بیت تشکیل شده رو میشه فقط با دو رقم نمایش داد که اینجوری خوانایی بایت ها کمی راحت تر میشه و احتمال بروز خطا در اثر خواندن حجم زیاد داده کمتر میشه.(حتی خودم هم نفهمیدم چی گفتم )
    در کل این دست اطلاعات که دنبالش هستید کمیش مربوط به ساختمان داده میشه و کمیش مربوط به طراحی سخت افزار ولی در کل باز هم تکرار میکنم این اطلاعات چیزی نیست که یک برنامه نویس لازم داشته باشه هر روز ازش استفاده کنه ، همین قدر که بدونیم مثلا داده نوع int16 دو بایته و تا موقعی که ما یک متغیر از این نوع استفاده میکنیم دو بایت از رم اشغال میشه معمولا کافیه.
    امیدوارم تونسته باشم کمک کوچکی کرده باشم
    و صد البته امیدوارم اساتید گرامی بتونن این بحث رو کامل تر برای شما و بنده توضیح بدن

  3. این کاربر از am_merman01 بخاطر این مطلب مفید تشکر کرده است


  4. #3
    در آغاز فعالیت
    تاريخ عضويت
    Dec 2017
    پست ها
    19

    پيش فرض

    مرسی دوست عزیز

    دقیقا همین موضوعات رو میخوام خیلی تخصصی تر یاد بگیرم و بدونم تو کدوم درس از رشته مهندسی کامپیوتر تدریس میشه ؟

  5. #4
    ناظر انجمن .NET Framework _H2_'s Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    یک جایی بین Framework و نارمک!
    پست ها
    4,746

    پيش فرض

    سلام
    ضمن تایید صحیت های دوستمان am_merman01، میتوانم اضافه کنم...

    در عمل برای اجرای هر برنامه ای یک بخش از RAM کدهای دستورات برنامه بارگذاری میشود
    و بطور معمول، دو بخش از RAM به ذخیره متغییرها و داده تخصیص داده میشود.
    یک بخش که با نام حافظه STACK شناخته میشود و مختص هرریسمان/Thread است و متغییرهای struct ای هر تابع در آن ذخیره میشود.
    یک بخش دیگر با نام حافظه HEAP شناخته میشود و داده های class برنامه در آن ذخیره میشود.

    داده ها در STACK بطور کامل پشت سرهم ذخیره میشوند و در شروع هر تابع STACK پرتر و در پایان هر تابع خالی تر میشود.
    اگر شما توابعی را پشت سر هم به تعداد زیاد فراخوانی کنید و هیچ کدام تمام نشود و مجدد تابع بعدی را اجرا کنید، خطای مشهور Stack-Overflow را دریافت خواهید کرد که به پر شدن STACK اشاره دارد.
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    این که واقعا داده های شما دقیق در کدام آدرس RAM ذخیره شود مشخص نیست و حتی بین هر اجرا متفاوت است.
    بستگی به مدیریت حافظه سیستم عامل دارد که در لحظه اجرا ، کجای RAM خالی باشد و آن را به برنامه ها قرض دهد.
    با فعال سازی unsafe در سی-شارپ میتوانید کد زیر را اجرا کنید که آدرس واقعی را در می آورد و مشاهده میکنید درهر اجرا فرق میکند.
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    ولی این را هم عرض کنم که واژه "تصادفی" در RAM بیشتر به کلمه "دلخواه" دلالت دارد.
    قدیم برخی حافظه ها مانند نوارهای مغناطیسی Tape رایج تر بودند الان هم برای پشتیبان گیری انبوه اطلاعات وبرای طولانی مدت هنوز استفاده میشوند.
    ساختار این حافظه ها "ترتیبی" بوده ، زیاد وارد بحث نشوم ، یعنی نمیشود یک دفعه شما بگویید من بایت 1000000 ام Tape را میخواهم... ... ...
    ولی در RAM شما میتوانید در هرلحظه و "تصادفی/دلخواه" به هر نقطه ای دسترسی پیدا کنید. یعنی یک لحظه میتوانید بایت 100 ام را بخوانید و در لحظه بعد میتوانید بایت 1000000 ام را تغییر دهید و...


    نقل قول نوشته شده توسط vb.civil
    وقتی یه متغییر مثلا از نوع Integer تعریف میکنم و مقداری رو در اون میزارم این مقدار چه جوری و به چه شکل و در کجای حافظه ی RAM نوشته میشه ؟
    بطور عادی اگر این متغییر را درون یک تابع/متد تعریف کنید.
    این متغییر در شروع تابع (در دات نت 4 بایت) از حافظه STACK بصورت معکوس میگیرد.

    عدد 305419896 برابر 0x12345678 در مبنای 16 است.
    یعنی اگر عدد 0x12345678 درون این int باشد، بایت های 0x78 و بعد 0x56 و بعد 0x34 و بعد 0x12 درون STACK خواهند نشست.

    نقل قول نوشته شده توسط vb.civil
    تبدیل اعداد به مبنای 2 و مبنای 16 در کامپوتر برای چیست و به چه معناست ؟
    چون ذات رایانه 1 و 0 است.
    اعداد هم در سلول های RAM و هارد و سی.دی و... واقعا بصورت رشته ای از یک ها و صفرها ذخیره میشود.
    پس با دیدن باینری(مبنای 2) اعداد میتوان درک بهتری از برخی دستورات داشت.
    ارزش مبنای 16 هم از این بابت است که بدلیل آنکه 16 توان صحیح از 2 است ، تبدیل یا نمایش مبنای 2 و 16 به یکدیگر بسیار ساده است و حتی ذهنی هم میتوان اعداد مبنای 2 و 16 را به هم تبدیل کرد...
    الان نمیخواهم اطاله کلام کنم، ولی بدانید تبدیل فوق ساده ای دارد، پس یک بایت را بجای 8 رقم باینری ، میتوان در دو رقم هگزادسیمال نمایش داد.
    هر دو رقم مبنای 16 معادل یک بایت را نمایش میدهد.

    در همین مثال قبل اگر شما عدد 305419896 را در 4 بایت ذخیره کنید به خروجی زیر خواهید رسید:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    یعنی عدد بزرگ 305419896 در غالب چهار بایت کوچک 120 و 86 و 52 و 18 در حافظه ذخیره میشود!
    خیلی معنی خاصی ندارد؟ درست است؟

    ولی اگر به این اعداد باچشم هگزادسیمالی نگاه کنیم ، خواهیم دید معنی خیلی منطقی دارد
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    با دید مبنای 16 کاملا مشخص است که عدد بزرگ 0x12345678 در چهار بایت شسته-رفته در RAM شکسته شده است.

    همچنین برای اعمال فلاگی و ماسک و And و Or و Not و شیفت بیتی و... و... با تبدیل مبنای 16 میتوان بهتر عملی که در رایانه انجام میشود را درک کرد.
    با تبدیل مبنای 16 برای خودمان، در واقع با چشم رایانه به این اعداد نگاه میکنیم.

    نقل قول نوشته شده توسط vb.civil
    به طور کلی دنبال نام درسی از رشته مهندسی نرم افزار هستم که راجع به این مسائل توضیح داده باشه
    دوستمان am_merman01 هم اشاره ای کردند.
    نزدیک ترین مبحث دانشگاهی واحد "ساختمان داده ها" است که در مقاطع مختلف شاخه نرم افزار دوباره و دوباره تدریس میشود.
    که البته باید عرض کنم خیلی هم عمیق وارد نمیشوند ولی اگر خودتان کتابهایی با این عنوان را تهیه و مطالعه کنید، شاید به جواب هایتان برسید.

    موفق باشید.
    Last edited by _H2_; 24-03-2018 at 21:45.

  6. 3 کاربر از _H2_ بخاطر این مطلب مفید تشکر کرده اند


  7. #5
    در آغاز فعالیت
    تاريخ عضويت
    Dec 2017
    پست ها
    19

    پيش فرض

    [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] مرسی دوست عزیز از توضیحات خوبتون

    برای کتاب "ساختمان داده ها" نام کتاب داخلی که معمولا تدریس میشه رو هم میشه به من بگید من همونو تهیه کنم ؟

  8. #6
    کـاربـر بـاسـابـقـه am_merman01's Avatar
    تاريخ عضويت
    May 2006
    محل سكونت
    یه جایی گوشه دهکده جهانی تو یه کانکشن دایال آپ
    پست ها
    893

    پيش فرض

    باز هم سلام خدمت دوست عزیز
    نام کتاب همین هست که استاد گرمی H2 عزیز بهش اشاره کرد و نام درس هم تو دانشگاه همینه ولی کتاب های زیادی توسط افراد متفاوت نوشته شده که بعضا دارای کلیات نزدیک به هم هستند(بعضی از اساتید تو دانشگاه دوست دارن کتابی رو که مثلا خودشون نوشتن رو تدریس کنن تا یکم کلاس بزارن برای دیگران ). شما با یک سرچ ساده میتونی چند تاش رو از اینترنت دانلود کنی.
    امیدوارم تونسته باشم کمک کنم.

  9. این کاربر از am_merman01 بخاطر این مطلب مفید تشکر کرده است


Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •