close
دانلود فیلم
ساختمان داده
فیلم های آموزشی درس ساختمان داده به زبان فارسی 3 dvd

درس ساختمان داده ها و الگوریتم ها یکی از بنیادین ترین درس های بسیاری از رشته های علوم پایه و مهندسی است. هدف این درس مطالعه و تحقیق در مورد روش های گوناگون ذخیره، نگهداری و بازیابی اطلاعات در یک سیستم کامپیوتری است به گونه ای که این اطلاعات بتوانند به طور کارآمد مورد استفاده قرار گیرند.

 

مجموعه آموزشی فوق شامل

جلسه اول - زمان اجرای الگوریتم ها . الگوریتم مرتب سازی درجی

جلسه دوم - مقایسه زمان اجرای الگوریتم ها . رشد توابع

جلسه سوم - تحلیل الگوریتم های ترتیبی . مرتب سازی حبابی و ادغامی

جلسه چهارم - حل رابطه بازگشتی

جلسه پنجم - قضیه اصلی

جلسه ششم - تحلیل سرشکن

جلسه هفتم -لیست ها

جلسه هشتم -

جلسه نهم - درخت ها

جلسه دهم - درخت ها

جلسه یازدهم - درخت عبارت

جلسه دوازدهم - درخت دودویی جست و جو

جلسه سیزدهم - هرم بیشینه

جلسه چهاردهم - درهم سازی ؛ آدرس دهی مستقیم ، توابع درهم سازی

جلسه پانزدهم - درهم سازی ؛ آدرس دهی باز ، درهم سازی پویا

جلسه شانزدهم - مرتبه

جلسه هفدهم - مرتب سازی

جلسه هجدهم - الگوریتم مرتب سازی مقایسه ای

جلسه نوزدهم - الگوریتم مرتب سازی خطی

جلسه بیست و یکم - درخت قرمز-سیاه

جلسه بیست و دوم

 پرداخت هزینه درب منزل به قیمت 16000 تومانپرداخت آنلاین با تخفیف به قیمت 13000

 

آموزش کاملا فارسی

به صورت مالتی مدیا

آموزش به صورت مفهومی

 

آموزش توسط استاد پای تخته !

   مناسب برای تمامی دانشجویان

با ما استاد را به خانه بیاورید !

کیفیت مناسب صدا و تصویر

 

 

 

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

 


ساختمان داده

زیر برنامه های بازگشتی

تابع فاکتوریل

حل مثال از انواع توابع بازگشتی

تابع محاسبه باقیمانده به صورت بازگشتی

پیاده سازی تقسیم به صورت بازگشتی

تابع آکرومان به صورت بازگشتی

تابع محاسبه مجومع دو عدد به صورت بازگشتی

تابع محاسبه حاصلضرب به صورت بازگشتی

تابع محاسبه ب م م به صورت بازگشتی

تابع محاسبه سری فیبوناچی به صورت بازگشتی

پیچیدگی زمانی و مرتبه اجرایی

مفهوم O (n)

مرتبه اجرایی جملات توانی

مرتبه اجرایی حلقه FOR

مرتبه اجرایی حلقه های FOR تو در تو

مرتبه اجرایی حلقه While

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

حل مثال از سرعت رشد توابع

مفهوم امگا و تتا

حل مثال از امگا و تتا

آرایه و پشته

آرایه یک بعدی

طریقه محاسبه آدرس شروع آرایه

طریقه محاسبه تعداد عناصر آرایه

مثال از قسمت آرایه ها

روش های جستجو در آرایه ها

آرایه نامرتب جستجوی ترتیبی یا خطی

آرایه مرتب جستجوی دودویی یا باینری

حل مثال از جستجو 

تعداد مقایسه جستجوی ترتیبی و باینری

نحوه ذخیره آرایه دو بعدی

تعریف آرایه دو بعدی

تعداد عناصر آرایه دو بعدی

طریقه محاسبه آدرس شروع آرایه دو بعدی

روش سطری و روش ستونی 

روش های ذخیره سازی آرایه ۳ بعدی

ضرب ماتریس ها

حل مثال از ضرب ماتریس ها

ماتریس اسپارس sparse

ماتریس ترانهاده 

ماتریس بالا مثلثی

ماتریس پایین مثلثی

پشته stack-LIFO

صف FIFO

حل مثال از صف و پشته

شرط خالی بودن پشته 

شرط پر بودن پشته

عملیات درج و حذف از پشته push-pop

صف معمولی

عملیات اصلی روی صف  حدف و اضافه

کدهای عملیات روی صف

حل مثال از قسمت صف ها

صف حلقوی 

عملیات prefix پیشوندی

infix میانوندی

postfix پسوندی

انواع تبدیلات پیشوندی میانوندی و پسوندی 

حل مثال های گوناگون از تبدیلات پیشوندی میانوندی و پسوندی 

لیستهای پیوندی

حل مثال از لیست های پیوندی

انواع عملیات در لیست های پیوندی

پیاده سازی پشته با لیست پیوندی

لیست حلقوی یکطرفه

لیست پیوندی دو طرفه

درخت

مفهوم درخت

درخت باینری

درخت متوازن

درخت پر

درخت کامل

درخت دودویی محض

فرمول های درختها

حداکثر تعداد گره ها

درخت دودویی پر با n گره

ضرب ۴ ماتریس

پیمایش درخت دودویی

انواع پیمایش درخت preorder و postorder

 

راهنمای خرید محصول :

نحوه خرید : از این سایت می توانید به روش های زیر خریداری کنید .

خرید نقدی :

در این روش محصول را در سایت انتخاب کرده و پس از انتخاب استان و شهر خود  هزینه آن را به صورت نقدی و از درگاه بانکی پرداخت می کنید . پس از آن محصول با پست سفارشی و یا پیشتاز که خودتان انتخاب می کنید ، تحویل شما خواهد گردید . ضمنا پرداخت نقدی سفارش دارای تخفیف بوده و بسته شما در اولویت ارسال قرار می گیرد

خرید پستی و پرداخت هزینه درب منزل :
در این روش محصول را از سایت انتخاب و پس از انتخاب استان و شهر خود  نسبت به تکمیل مشخصات اقذام و محصول برای شما ارسال می شود و شما در هنگام دریافت بسته هزینه را به مامور پست پرداخت می کنید

 پرداخت هزینه درب منزل به قیمت 16000 تومانپرداخت آنلاین با تخفیف به قیمت 13000
دانلود فیلم های ساختمان داده ها دانشگاه شریف-محمد علی آبام

درس ساختمان داده ها و الگوریتم ها یکی از بنیادین ترین درس های بسیاری از رشته های علوم پایه و مهندسی است. هدف این درس مطالعه و تحقیق در مورد روش های گوناگون ذخیره، نگهداری و بازیابی اطلاعات در یک سیستم کامپیوتری است به گونه ای که این اطلاعات بتوانند به طور کارآمد مورد استفاده قرار گیرند.

 

دکتر محمد علی آبام عضو هیئت علمی دانشگاه صنعتی شریف است. ایشان مدرک دکتری خود را از دانشگاه ادینهوون هلند دریافت کرده است و زمینه های تحقیقاتی مورد علاقه وی هندسه محاسباتی٬ الگوریتم بهینه IO و الگوریتم های تصادفی است.

ادامه مطلب...

این جزوه توسط مهندس محمدی تنها برای کمک به یادگیری بهتر درس ساختمان داده ها ارائه شده است و شامل همه مطالب نیست ، لذا به دانشجویان توصیه شده تا از کتابهای مرجع نیز بهره مند گردند.

 

عنوان جزوه : ساختمان داده ها

نویسنده : مهندس محمدی

زبان : پارسی

کیفیت جزوه : تایپ شده

تعداد صفحات : ۷۰

ساختار فایل : PDF

حجم فایل : ۱.۳ مگابایت

مطالب بررسی شده در این جزوه :

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

در این جزوه ، عناوینی چون آرایه ها ، پشته ها ، صف ، مرتب سازی ، لیست پیوندی ، لیست دو پیوندی ، گراف و درخت به چشم می خورد.

عنوان جزوه : ساختمان داده ها

مدرّس : دکتر محمد قدسی

ساختار فایل : PDF

کیفیت جزوه : تایپ شده

زبان جزوه : پارسی

تعداد صفحات : ۶۹

حجم فایل : ۱.۳ مگابایت

ادامه مطلب...

سرفصل های این جزوه عبارتند از : مقدمه ای بر ساختمان داده ها ، پشته ها ، صف ها ، لیست های پیوندی ، درخت های دودویی ، درخت های عمومی ، گراف ها و کاربردهای آن.

عنوان جزوه : ساختمان داده ها در C

مدرّس : استاد آقایی

ساختار فایل : PDF

کیفیت جزوه : تایپ شده

زبان جزوه : پارسی

تعداد صفحات : ۴۱۴

حجم فایل : ۳.۲ مگابایت

ادامه مطلب...

با سلام خدمت دوستان عزیز ، در این پست از سایت  حل تمرین درس ساختمان داده آورده شده است . این حل تمرین در 27 صفحه آماده شده و شامل حل تمرینهای درس ساختمان داده دانشگاه پیام نور می باشد امیدوارم مفید باشد.

دانلود حل تمرین ساختمان داده ها در ادامه:

ادامه مطلب...

با سلام ، در ادامه آماده سازی ویس کلاس اساتید صاحب نام ، امروز ویس های کلاس ساختمان داده دکتر ابراهیمی مقدم را برای شما آماده کرده ایم. این کلاس در موسسه نصیر تشکیل شده و شامل 9 جلسه کامل می باشد برای استفاده بهتر از این صداها بهتر است ابتدا جزوه  ساختمان داده هماهنگ با این کلاس را تهیه کنید شما می توانید جزوه ساختمان داده ابراهیمی مقدم را از طریق لینک زیر دانلود کنید

ادامه مطلب...

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

ادامه مطلب...

زمان اجرا مقدار زمانی از کامپيوتر است که برنامه برای اجرای کامل مصرف می کند. برای محاسبه پيچيدگی زمان الگوريتم ابتدا تعداد قدم های الگوريتم به صورت تابعی از اندازه مسئله مشخص می شود، برای انجام اين کار تعداد تکرارعمليات اصلی الگوريتم محاسبه می شود و به صورت تابع f(n) (که n تعداد ورودی هاست) بيان می شود. سپس تابع g(n)، که مرتبه بزرگی تابع f(n) را وقتی اندازه ورودی به اندازه کافی بزرگ است نشان می دهد، بدست می آيد. در نهايت پيچيدگی الگوريتم برای نشان دادن رفتار الگوريتم با ورودی های مختلف با استفاده از نمادها O ، Θ و Ω بيان می شود.

تعريف Big-O (حدبالا)

تابع f(n) را نظر بگيريد که برای کليه n≥0 است، می گوئيمf(n) = O(g(n)) اگر ثابت های مثبت n0 و c وجود داشته باشند به طوريکه از يک n0 به بعد هميشه f(n)≤ cg(n) برقرار باشد.

اين نماد حدبالائی برای تابع f(n) می دهد و وقتی بکار می رود که رفتار الگوريتم بدترين حالت و بيشترين زمان اجرا را برای مقادير معين ورودی دارد

تعريف Big-Ω (حدپائين)

تابع f(n) را نظر بگيريد که برای کليه n≥0 است ، می گوئيم f(n) = Ω (g(n)) اگر ثابت های مثبت n0 و c وجود داشته باشند به طوريکه از يک n0 به بعد هميشه f(n)≥ cg(n) برقرار باشد.

اين نماد حد پائينی برای تابع f(n) می دهد و وقتی بکار می رود که رفتار الگوريتم بهترين حالت و کمترين زمان اجرا را برای مقادير معين ورودی دارد

تعريف Big-Θ (حدمتوسط)

تابع f(n) را نظر بگيريد که برای کليه n≥0 است، می گوئيم f(n) = Θ(g(n)) اگر ثابت های مثبت n0، c1 و c2 وجود داشته باشند به طوريکه از يک n0 به بعد هميشه c1g(n) ≤f(n) ≤ c2g(n) برقرار باشد.

اين نماد حدمتوسطی برای تابع f(n) می دهد و زمان اجرای الگوريتم را به صورت ميانگينی از تعداد عمليات انجام شده با کليه نمونه ورودی های مسئله نشان می دهد.


قضيه. اگر f(n)=amnm+am-1nm-1+…+a1n+a0 در اينصورت f(n)=O(nm) است.


مثال. الگوريتم مرتب سازی حبابی را درنظر بگيريد.

for (i:=1 to n-1)
   for (j:=1 to n-1)
     if aj>aj+1 then exchange(aj,aj+1)

با درنظر گرفتن عمل مقايسه بعنوان عملگر اصلی، دستور If در الگوريتم فوق (n-1)2 بار تکرار می شود. بنابراين f(n)= (n-1)2=n2-2n+1 و طبق قضيه g(n)=n2 است. بنابراين پيچيدگی الگوريتم فوق برابر با O(n2) می باشد.


نکته. اگر زمان الگوريتم وابسته به ورودی نباشد با نماد O(1) نشان داده می شود.

نکته. بايد به اندازه کافی الگوريتم را درک کرده باشيم تا بهترين و بدترين رفتار را توليد و محاسبه کنيم. چون برآورد رفتار آماری ورودی ها امری دشوار است، در اکثر موارد به بدترين حالت قناعت می کنيم.

نکته. اگر الگوريتم شامل بخش های مختلفی باشد که هر قسمت پيچيدگی متفاوتی دارد، مرتبه بزرگی هر قسمت را پيدا کرده و بزرگترين مرتبه را بعنوان پيچيدگی کل الگوريتم درنظرمی گيريم.


غالبا پيچيدگی g(n) يکی از توابع زير است: n (پيچيدگی خطی)، log n (لگاريتمی)، na (چندجمله ای) و an که a≥2 (نمائی).

در زير مرتبه اجرائی چند تابع به ترتيب صعودی نوشته شده است.

O(1) < O(log n) < O(n) < O(n log n) < O(n2) < O( n3) < O(2n) < O(n!)

 

محصول مرتبط با این پست : 

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

صفحات :۱۵۳

پایان نامه رشته کامپیوتر
  
فیلم های فارسی ساختمان گسستهفیلم های فارسی ساختمان داده هاکتاب عشق شیرین - نسخه کامل

ساختمان داده‌ها (Data Structure) از جملهٔ بنیادی‌ترین مباحث مورد نیاز جهت یادگیری و درک بسیاری از مفاهیم عمده در علوم رایانه است. مدل منطقی یا ریاضی سامان‌دهی به داده‌ها به یک شکل خاص، ساختمان داده نام دارد. هر برنامه رایانه‌ای از الگوریتم و ساختمان داده‌ها تشکیل شده‌است. موارد زیر از جمله مهمترین ساختمان داده‌ها هستند. در کتابی که اینبار برای دانشجویان و علاقه مندان به علوم رایانه ای آماده کرده ایم بطور کامل و در بیش از پانصد صفحه با ساختمان داده ها آشنا خواهید شد. 

عنوان : دانلود رایگان کتاب اصول ساختمان داده ها به زبان فارسی
نویسنده : حسین ابراهیم زاده
فرمت : PDF
تعداد صفحات :514
زبان : فارسی

حجم فایل : 12.01 مگابایت

ادامه مطلب...

با سلام، همچنان که می دانید ساختمان داده هم در دوره کارشناسی و هم در دوره کاردانی برای کلیه گرایش ها دارای اهمیت بالایی می باشد به همین دلیل ما در سایت اسفند سعی داریم همه منابع آموزشی این درس را جمع آوری کنیم در این پست هم  با دانلود کتاب ساختمان داده دکتر ناصر رضوی در خدمت شما هستیم امیدوارم مفید و مورد استفاده باشد.  دانلود در ادامه

ادامه مطلب...

اهمیت درس ساختمان داده در دوره کارشناسی بر کسی پوشیده نیست. بی شک این درس مهمترین درس در این دوره می باشد یادگیری این درس به معنی یادگیری مهمترین مفاهیم پایه ای و اصولی رشته کامپیوتر می باشد این در س در کنکور ارشد مهندسی کامپیوتر از دروس مشترک برای چهار گرایش نرم افزار، هوش، معماری و الگوریتم و محاسبات بوده و ضریب 4 دارد. با توجه به استقبال دانشجویان از کتابهای مقسمی سایت  تلاش دارد تا همه کتابهای مقسمی را جهت دانلود به سایت اضافه کند. در این پست کتاب ساختمان داده مقسمی تقدیم می شود. تا زمان نوشتن این پست 70 صفحه از کتاب آماده شده و لینک دانلود آن در ادامه مطلب آورده شده است بقیه کتاب به محض آماده شدن در همین پست اضافه خواهد شد.

ادامه مطلب...
دانلود کتاب راه حل پایگاه داده
توضیحات

امروزه پایگاه داده چهارچوب زیرین سیستم اطلاعاتی را تشکیل می دهد و راه انجام کارهای بسیاری از شرکتها و اشخاص را بطور اساسی تغییر داده است. توسعه این تکنولوژی طی چندین سال گذشته سیستم های پایگاه داده ای را ایجاد کرده است.
در کتاب حاضر شما بیشتر با اصول طراحی پایگاه داده آشنا خواهید شد این کتاب سعی کرده با روش های استاندارد به آموزش گام به گام طراحی پایگاه داده بپردازد.

 

  • نویسنده: tomas connolly
  • مترجم: حامد نجارپور
  • موضوع: آموزش و ترفند، شبکه
  • تعداد صفحات: ۳۴۶
  • فرمت: PDF
  • زبان: فارسی
ادامه مطلب...

عنوان جزوه : پایگاه داده های پیشرفته

تعداد صفحه :  ۸۵

قالب کتاب : PDF

حجم فایل :  ۱,۱۴۰  کیلوبایت

 

دانلود در ادامه:

توضیحات : تعریف علمی و تئوریکی که از پایگاه داد ها در دنیای نرم افزار ارائه گردیده است عبارت است از : مجموعه ای از داده های بهم مرتبط که طبق یک ساختار مشترک ، تحت کنترل متمرکز و با حداقل افزونگی به صورت اشتراکی و همزمان قابل استفاده باشند . اما امروز وقتی صحبت از فناوری های نوین در عرصه پایگاه داده ها و نرم افزار های مرتبط با آن به میان می آید، محیطی به مراتب قدرتمند تر و انعطاف پذیر تر از تعریف فوق به ذهن می آید که برای مدیران ، طراحان و برنامه نویسان پایگاه داده ها نوید لذت بخش توسعه و تولید سریع(RAD) محیطهای مبتنی بر بانک های اطلاعاتی را بهمراه دارد . در سالهای اخیر متولیان و تصمیم گیران بسته های بانک های اطلاعاتی با توجه به شرایط حاکم بر دنیای امروز از قبیل رشد روز افزون داده ها و اطلاعات ، وسعت ، گستردگی حیطه کاربری و ….. استانداردهای متنوع دیگری را برای اینگونه محصولات تدوین نموده اند که در ذیل به برخی از آنها اشاره می گردد

ادامه مطلب...
اگر برروي درايو ويندوز خود دچار کمبود جا هستيد، مي‌توانيد سري به فولدر Temp ويندوز بزنيد و محتويات درون آن را حذف كنيد؛ اين شاخه براي نگه‌داري فايل‌هاي موقت ويندوز و برنامه مورد استفاده قرار مي‌گيرد. 
قبل از رفتن به سراغ اين فولدر بهتر است برنامه‌هاي در حال اجرا را ببنديد.  پس از آن بايد در قسمت run از منوي شروع در قسمت را تايپ کنيد %temp% و فولدر Temp را باز کنيد، در اين فولدر مي‌توانيد فايل‌ها را مشاهده و يا حذف كنيد
یه تمرین جالب برای کار با آرایه های کاراکتری:

- برنامه ای بنویسید که ابتدا عددی به عنوان تعداد کاراکتر رشته گرفته و سپس به طور کاملا تصادفی یک رشته ی کاراکتری با طول عدد گرفته شده درست کرده و سپس از کاربر بپرسد که آن رشته چیست و کاربر با وارد کردن هر حرف، آن حرف به جای - قرار میگیرد و یک نمره ی مثبت یا منفی در نظر گرفته میشود و در آخر، رشته ی ایجاد شده و امتیاز کاربر را نمایش دهد.
ادامه مطلب...

ياهو

Yahoo!Mail دومين فراهم کننده سرويس پست الکترونيک جهان بعد از گوگل و يکی از قابل اعتماد ترين آنها در وب است. اين سرويس رايگان است و براحتی می توانيد آنرا ساخته و استفاده کنيد. در اين صفحه با نحوه ساخت حساب کاربری، کار و نکاتی درباره Y!Mail آشنا می شويد.

Yahoo! توسط Jerry Yang و David Filo دانشجويان مهندسی الکترونيک دانشگاه Stanford در ژانويه 1994 برپا شد. سايتی که طراحی کرده بودند يک دايرکتوری سلسله مراتبی به سايت های ديگر بود. در آوريل همان سال سايت خود را Yahoo! نام نهادند. ياهو به سرعت رشد کرد و مشابه موتورهای جستجو و دايرکتوری های ديگر به يک پورتال وب تبديل شد. ياهو ابتدا از گوگل برای ليست نتايج جستجو استفاده کرد تا سال 2004 تکنولوژی جستجوی خود را پياده کرد.

پورتال وب ياهو با آدرس www.yahoo.com آخرين اخبار، سرگرمی ها و اطلاعات ورزشی را فراهم می کند. پورتال سرويس های ديگری مانند Yahoo!Mail، Yahoo!Map و Yahoo!Messenger را هم به کاربران می دهد.

Yahoo!Mail

نحوه ساخت حساب کاربری

کار با Y!Mail

اعمال ديگر در Y!Mail

phishing چيست؟


 


بانظرات خودما را یاری کنید

برنامه ای بنویسید که به کاربر بگوید یک عدد بین 1 و 99 در نظر بگیرد. سپس از 50 شروع کرده و از کاربر سوال کند که بزرگتر از آن است یا کوچکتر یا مساوی تا به عدد مورد نظر برسد.(به کمکdo while)
ادامه مطلب...

اسمبل و اجرای برنامه

برای ايجاد برنامه به سه ابزار نياز است: يک اديتور متن، يک اسمبلر برای تبديل برنامه به فايل مقصد و يک لينکر برای توليد فايل اجرائی.

برنامه اسمبلی را در يک اديتور متن نوشته و با پسوند .asm ذخيره کنيد. فراموش نکنيد که حتما از يک اديتور اسکی استفاده کنيد. توسط اسمبلر (masm.exe يا tasm.exe) از فايل مبدا .asm فايل مقصد .obj را ايجاد کنيد. اسمبلر برنامه زبان اسمبلی را به کد ماشين تبديل می کند. اگر خطائی در برنامه وجود داشته باشد اسمبلر خطا را گزارش می دهد. لينکر (link.exe يا tlink.exe) از يک يا ترکيب چند فايل .obj يک برنامه قابل اجرا از نوع .exe يا .com را می سازد.


مثال. برنامه first.asm را در اديتور متن ذخيره کنيد. سپس در خط فرمان سيستم عامل، در محلی که اسبلر نصب شده است، دستورات زير را به ترتيب وارد کنيد تا فايل اجرائی first.exe ايجاد شود.

C:masm>masm first
C:masm>link first
C:masm>first


مثال: در برنامه زير دو عدد با هم جمع می شود.

        .MODEL small
        .STACK [size]
        .DATA
number1 DW 0800h   ;=128
number2 DW ffebh    ;=-493
sum         DW ?            ;store result

        .CODE
begin:
   mov AX,@Data
   mov DS,AX
   mov AX,number1 ;get first number in AX
   add AX,number2  ;add AX with second number
   mov sum,AX      ;store result in Sum
   mov AX,4c00h
   int 21h
END begin

مثال: تکه برنامه زير اعداد 1 تا 10 را در آرايه ای از نوع word ذخيره می نمايد.

        .MODEL small
        .STACK [size]
        .DATA
Array DW 10 dup(?)
        .CODE
begin:
   mov AX,@Data
   mov DS,AX
   mov CX,1
   mov SI, offset Array
Forl:
   mov [SI], CX
   inc SI
   inc SI
   cmp CX,10
   je endf
   inc CX
   jmp forl
Endf:
   mov AX,4c00h
   int 21h
END begin

برای دسترسی به عناصر آرايه معمولا از عملوند غيرمستقيم ثباتی استفاده می شود. برای تخصیص آدرس آفست يک آرايه می توان از دستور LEA هم استفاده کرد. دقت کنيد چون عناصر آرايه دو بايتی هستند هربار دو واحد به SI اضافه می شود. در حالتی که عناصر آرايه از نوع بايت تعريف می شوند به اشاره گر آرايه يک واحد اضافه می شود.

مثال: کاراکتر * را نمايش می دهد.

        .MODEL small
        .STACK [size]
        .CODE
main PROC
   mov AH,2h
   mov DL,2ah
   int 21h
   mov AX,4c00h
   int 21h
main ENDP
END main

 

در زبان برنامه نويسی C هر متغير قبل از استفاده بايد اعلان شود. اعلان متغير کامپايلر را از نام، نوع و مقدار اوليه متغير آگاه می کند. اگر برنامه سعی کند از متغيری استفاده کند که قبلا اعلان نشده است کامپايلر پيغام خطا صادر می کند.

اعلام متغير به فرم کلی زير است:

typename varname;

typename نوع متغير را مشخص می کند که بايد يکی از نوع های داده ای زبان C باشد. varname نام متغير است که بايد از قواعد گفته شده تبعيت کند.

می توان در يک خط چند متغير را از يک نوع تعريف کرد.


مثال. متغيرهای count، number و start از نوع int و متغيرهای percent و total از نوع float اعلان شده اند.

int count, number, start;   /* three integer variables */
float percent, total;          /* two float variables */


در بخش توابع درقسمت حوزه متغيرها درباره محل اعلان متغير در برنامه توضيح داده شده است. فعلا کليه متغيرها را در آغاز تابع ()main اعلان کنيد.


کلمه کليدی typedef

کلمه کليدی typedef برای ايجاد نامی جديد به نوع داده موجود بکار می رود و در واقع يک مترادف برای آن نوع توليد می کند.


مثال. عبارت زير برای نوع داده ای int مترادف integer را ايجاد می کند. بنابراين در برنامه می توان از کلمه integer برای اعلان متغيرهای از نوع int استفاده کرد.

typedef int integer;
integer count;


توجه داشته باشيد که typedef نوع داده جديدی را توليد نمی کند بلکه تنها به شما اجازه نامگذاری نوع داده ای که قبلا تعريف شده را می دهد. کاربرد زياد آن در نوع های داده ای ترکيبی است که در بخش ساختمان مطالعه خواهيد کرد.

دستورات چرخش رشته های بيتی را به صورت دايره ای حرکت می دهد اين دستورات مشابه شيفت عمل می کنند با اين تفاوت که بيتی که از يک طرف از داده خارج می شود به طور دوار از جهت ديگر وارد آن می شود. پردازنده 8086 چهار دستورالعمل چرخش (rol ، ror ، rcl و rcr) دارد.

ROL
ROR
RCL
RCR


ROL

دستورالعمل (rotate left) rol بيت های عملوند خود را به سمت چپ چرخش می دهد. فرم کلی آن به صورت زير است:

rol dest, count

دستورالعمل rol بيت های عملوند مقصد خود را به تعداد count به سمت چپ چرخش می دهد. بيتی که از سمت چپ خارج می شود از سمت راست وارد عملوند می شود.با ارزش ترين بيت عدد در فلگ carry کپی می شود.

عملوند اول عملوند مقصد است و عملوند دوم تعداد شيفت ها را مشخص می کند و می تواند عدد 1 يا برای تعداد بيشتر ثبات CL باشد. نوشتن عدد فوری بيشتر از 1 مستقيما در دستور غير مجاز است.

دستورالعمل rol به شکل های زير می تواند استفاده شود:

rol register, 1
rol memory, 1
rol register, CL
rol memory, CL

دستورالعمل rol بيت های فلگ را به صورت زير تغيير می دهد:

• فلگ carry حاوی آخرين با ارزش ترين بيت عملوند می شود.
• اگر تعداد چرخش يکبار باشد و علامت عدد بعد از چرخش تغيير کند فلگ overflow يک می شود. برای چرخش بيشتر از يکبار نامعين است.
• روی فلگ های Sign ، Zero ، Parity و Auxiliary carry تاثير ندارد. اگر نيازداريد مقدار اين فلگ ها را بعد از عمل چرخش بدانيد نتيجه را با صفر مقايسه کنيد تا اين فلگ ها تنظيم شوند.


مثال.

mov AX, C123h
mov CL,3
rol AX, CL    ;AX = 091Eh, CF = 0


ROR

دستورالعمل (rotate right) ror بيت های عملوند خود را به سمت راست چرخش می دهد. فرم کلی آن به صورت زير است:

ror dest, count

دستورالعمل ror بيت های عملوند مقصد خود را به تعداد count به سمت راست چرخش می دهد. بيتی که از سمت راست خارج می شود از سمت چپ وارد عملوند می شود.

مشابه دستورالعمل rol عملوند دستورالعمل ror می تواند ثبات يا حافظه باشد. تعداد چرخش عدد 1 يا ثبات CL است.

کم ارزش ترين بيت عملوند وارد فلگ carry می شود. بقيه فلگ ها مشابه دستورالعمل rol تاثير می پذيرند.


مثال.

mov AX, C123h
mov Cl,2
ror AX, CL     ;AX = F048h, CF = 1


RCL

دستورالعمل (rotate through carry left) rcl همانطور که از نامش پيدا است، بيت ها را از طريق فلگ carry به سمت چپ می چرخاند. شکل کلی آن به صورت زير است:

rcl dest, count

دستورالعمل rcl محتوای فلگ Carry را از سمت راست وارد عملوند مقصد می کند، سپس بيت های عملوند را به سمت چپ شيفت می دهد و آخرين بيت سمت چپ را وارد فلگ Carry می شود.

دستورالعمل rcl مشابه rol استفاده می شود و روی فلگ ها تاثير می گذارد.


RCR

دستورالعمل (rotate through carry right) rcr بيت های داده را از طريق فلگ carry به سمت راست می چرخاند. شکل کلی آن به صورت زير است:

rcr dest, count

دستورالعمل rcr محتوای فلگ Carry را از سمت چپ وارد عملوند مقصد می کند، سپس بيت های عملوند را به سمت راست شيفت می دهد و آخرين بيت سمت راست را وارد فلگ Carry می شود.

دستورالعمل rcr مشابه ror استفاده می شود و روی فلگ ها تاثير می گذارد.

 

برای آشنائی سريعتر با ساختار برنامه ++C يک برنامه ساده کوچک در اينجا ارائه می شود که ممکن است در وحله اول کاملا قابل درک نباشد. توضيحات بيشتر درباره برنامه در دنباله آن داده شده است.


مثال. برنامه Hello.cpp يک پيغام را روی صفحه نمايش می دهد.

/* HELLO.CPP */
#include <iostream>
using namespace std;
int main()
{
   //print hello word on the screen
   cout << "Hello World!n";
   return 0;
}


تابع اصلی

در زبان C برنامه از يک سری تابع (function) تشکيل می شود (توضيحات بيشتر درباره تابع). هر برنامه الزاما يک تابع اصلی به نام main دارد که برنامه از آن شروع به اجرا می کند.

نوع برگشتی تابع در خط اعلان تابع و قبل از نام تابع تعيين می شود. که برای تابع اصلی معمولا نوع صحيح يا int درنظر گرفته می شود. چون برخی از سيستم عامل ها نيازدارند برنامه مقداری را به آنها برگرداند تابع main يک عدد صحيح را بر می گرداند تا سيستم عامل متوجه بشود که همه چيز درست است. البته در بعضی موارد تابع اصلی را می توان به صورت void main() هم تعريف کرد. کلمه void مشخص می کند تابع چيزی بر نمی گرداند.

مقداری که تابع بر می گرداند در مقابل دستور return نوشته می شود. اگر تابعی مقداری برنگرداند و از نوع void تعريف شده باشد نيازی به استفاده از دستور return در تابع نيست.

بدنه توابع و بلوک های کد مابين دو کروشه باز و بسته { } قرار می گيرند. کروشه مرز يک بلاک از کد را معين می کند. وقت کنيد که برای هر کروشه باز { يک کروشه بسته } بايد وجود داشته باشد.

int main()
{
   return 0;
}


فايل های ضميمه

معمولا اولين عمل در هر برنامه C++ ضميمه کردن فايل های هدر است. فايل های هدر (include file) فايل هائی شامل تعاريف توابع يا کلاس ها هستند. اگر توابع يا متغيرهائی وجود دارند که در برنامه های مختلف مورد استفاده قرار می گيرند بهتر است در يک فايل هدر قرار داده شوند، سپس فايل هدر در هرجائی که از آن استفاده می شود ضميمه شود.

برای ضميمه کردن يک فايل به برنامه علامت # سپس include و نام فايل ضميمه در داخل < > ذکر می شود.

اولين خط برنامه Hello.cpp فايل هدر iostream.h را ضميمه برنامه می کند.

#include <iostream.h>

تعداد زيادی از فايل های هدر در ++C برای استفاده از توابع کتابخانه ای همراه با نصب کامپايلر در اختيار برنامه نويس قرار می گيرند. يکی از اين فايل ها فايل هدر iostream.h است که توابعی برای عمليات ورودی و خروجی دارد. اگر اين فايل در ابتدای برنامه ضميمه شود کليه کلاس ها و توابع تعريف شده در آن قابل دسترسی هستند.

پسوند .h مشخص مي کند يک فايل هدر است. اگر کامپايلر C را استفاده می کنيد پسوند .h بايد مشخص شود ولی در ++C نياز نيست. البته بهتر است که ذکر شود تا توسط کامپايلرها پشتيبانی شود.


نمايش پيغام

تابع cout برای نمايش داده ها و پيغام ها روی صفحه نمايش بکار می رود. اين توابع در فايل هدر iostream قرار دارد که بايد به برنامه ضميمه شده باشد.

cout << "Hello World!n";

در زبان ++C يک رشته کاراکتری بايد بين دو علامت " " محصور شود

n به کامپايلر می گويد از يک خط جديد شروع کند.


فضای اسمی

فضای اسمی (namespace) اجازه گروه بندی مجموعه ای از توابع يا اشيای سراسری را تحت يک نام می دهد (توضيحات بيشتر درباره فضاهای اسمی). وقتی يک فايل هدر اضافه می شود محتويات آن در فضای اسمی استاندارد std قرار می گيرد. برای دسترسی به کتابخانه های استاندارد درون std بايد از عملگر :: استفاده شود.

مثال. وقتی iostream در برنامه ضميمه شده است برای دسترسی به تابع cout از اين کتابخانه بايد فضای اسمی std قبل از آن و بدنبالش علامت :: تعيين شود:

Std::cout <<"Hello World!n";

البته به سادگی می توان با استفاده از عبارت using فضای اسمی مورد استفاده را در برنامه تعيين کرد و به عناصر درون std تنها با صدازدن نامشان دسترسی پيدا کرد.

وقتی پسوند .h اضافه می شود نيازی به اضافه کردن فضای اسمی استاندارد نيست ولی به طور معمول بهتر است که از استاندارد ANSI/ISO تبعيت بشود و فضای اسمی std توسط عبارت using تعيين شود.

نکته. کامپايلرهای قديمی عبارت using را قبول نمی کنند.


توضيحات

توضيحات (comment) عباراتی هستند که هنگام ترجمه ناديده گرفته می شوند. توضيحات شرح مرحله به مرحله از عمليات برنامه را برای برنامه نويس، يا هر فردی که روی کد برنامه کار می کند، ارائه می دهد.

در ++C دو روش برای ساختن توضيح وجود دارد؛ يک روش که برای توضيحات کوتاه است با علامت // شروع می شود. کامپايلر از اين علامت تا انتهای خط را به عنوان توضيح درنظر می گيرد.

روش ديگر که معمولا برای توضيحات طولانی تر استفاده می شود بستن توضيحات بين علائم /* */ است.

//print hello word on the screen
/* This is my first program in C++ */

نکته. توضيحات يک خطی به دنبال علامت // تنها در کامپايلرهای ++C قابل استفاده است.

تعدادی از دستورات 8086 که برای انجام عمليات جمع و تفريق بر روی اعداد صحيح بکار می روند عبارتند از:

ADD
ADC
INC
SUB
SBB
DEC
NEG
CMP


ADD

اين دستورالعمل حاصل جمع صحيح دو عملوند خود را محاسبه و نتيجه را در عملوند اول قرار می دهد.

add dest, src

دستورالعمل add محتوای عملوند src را با عملوند dest جمع می کند و نتيجه را در dest ذخيره می کند (dest := dest + src).

دستورالعمل add به شکل های زير می تواند استفاده شود:

add register, register
add register, memory
add memory, register
add register, immediate data
add memory, immediate data
add AX/AL, immediate data


مثال. دستور زير محتوای ثبات های AX و BX را جمع کرده و حاصل را در ثبات AX ذخيره می کند.

add AX,BX


فلگ های زير با توجه به نتيجه دستورالعمل add تاثير می پذيرند:

• فلگ Overflow اگر يک شوددلالت بر سرريزی در محاسبات علامتدار است.
• فلگ Carry اگر يک شود دلالت بر سرريزی در محاسبات بدون علامت دارد.
• فلگ Sign اگر يک شود نشان می دهد که نتيجه منفی بوده است. يعنی با ارزش ترين بيت عدد يک است.
• فلگ Zero اگر يک شود بيان کننده اين است که نتيجه جمع صفر بوده است.
• فلگ Auxiliary Carry شامل سرريزی BCD از نيبل پايين است.
• فلگ Parity با توجه به 8 بيت پايين نتيجه تغييرمی کند. اگر تعداد بيت های يک نتيجه زوج باشد اين فلگ يک می شود. و اگر تعداد فردی بيت 1 در نتيجه باشد اين فلگ صفر می شود.
روی بقيه فلگ ها اثر ندارند.

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

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

چون جمع حافظه و حافظه وجود ندارد اگر بخواهيد دو متغير را با هم جمع کنيد بايد عملوندهای حافظه را در ثبات ها منتقل کنيد.


مثال. يک حالت ممکن برای انجام عمل جمع متغيرها به صورت J := K + M + N + P; می تواند به شکل زير باشد:

mov BX, K
mov AX, M
add BX, N
add AX, P
add AX, BX
mov J, AX

مثال. می توان يک ثبات را با محلی از حافظه جمع کرد. اجباری نيست که هردو عملوند ثبات باشد.

mov AX, K
add J, AX

مثال. می توان يک مقدار ثابت را با حافظه جمع کرد.

add J, 2


ADC

دستورالعمل (add with carry) adc مشابه دستورالعمل add است با اين تفاوت که حاصل جمع دو عملوند و فلگ Carry را محاسبه می کند (dest :=dest+source+CF). بنابراين اگر Carry صفر باشد نتيجه مشابه add می شود.


INC

دستورالعمل (increment) inc يک واحد به عملوند خود اضافه می کند. شکل کلی آن به صورت زير است:

inc dest

اين دستورالعمل عدد 1 را با dest جمع و حاصل را در خود dest ذخيره می کند.

دستور inc به شکل های زير می تواند باشد:

inc register
inc memory

عملوند دستور می تواند ثبات يا مکانی از حافظه باشد. اندازه عملوند می تواند 8 يا 16 بيتی باشد.

دستور inc فشرده تر و اغلب سريع تر از دستور add است.

به استثنای فلگ Carry بقيه فلگ ها مشابه دستورالعمل add تغيير می کنند. توجه کنيد که اين دستور بر روی فلگ Carry تاثير ندارد و برای تاثير روی فلگ Carry بايد از دستورالعمل ADD استفاده شود.

افزايش شمارنده حلقه و انديس آرايه يکی از متداولترين کاربردهای دستور inc است.


SUB

دستورالعمل (subtract) sub حاصل تفريق عملوند دوم از عملوند اول را محاسبه می کند. شکل کلی آن به صورت زير است:

sub dest, src

دستورالعمل sub مقدار src را از dest کم کرده حاصل را در dest ذخيره می کند.

مشابه دستورالعمل add، دستور sub به صورت های زير می تواند باشد:

sub register, register
sub register, memory
sub memory, register
sub register, immediate data
sub memory, immediate data
sub AX/AL, immediate data

دستور sub به طريق زير فلگ ها را تغيير می دهد:

• اگر نتيجه صفر شود فلگ Zero يک می شود. اين در حالتی اتفاق می افتد که عملوندها با هم برابر باشند.
• اگر نتيجه منفی شود فلگ sign يک می شود.
• اگر سرريزی رخ دهد فلگ overflow يک می شود.
• فلگ Auxiliary Carry در صورت نياز برای عمليات BCD يک می شود.
• فلگ Parity با توجه به تعداد بيت های يک نتيجه تنظيم می شود.
• فلگ Carry در صورت بروز سرريزی در محاسبات بدون علامت يک می شود.

توجه داشته باشيد که تفريق خاصيت جابجائی ندارد.


مثال. دستورات زير عمل J := J - K; را انجام می دهند.

mov ax, K
sub J, ax

مثال. دستورات زير عمل J := K - J; را انجام می دهند.

mov ax, K
sub ax, J
mov J, ax


بعد از عمل تفريق از مقادير فلگ های Carry، Sign، Overflow و Zero می توان برای بررسی مساوی، نامساوی، بزرگتر يا کوچکتر بودن هر عملوند با ديگری استفاده کرد. جزئيات بيتشر در دستور cmp گفته خواهد شد.


SBB

دستورالعمل (subtract with borrow) sbb مشابه دستور sub است با اين تفاوت که حاصل تفريق عملوند دوم و CF از عملوند اول را محاسبه می نمايد(dest:=dest-src-CF)


DEC

دستورالعمل (decrement) dec يک واحد از عملوند خود کم می کند و حاصل را در خود عملوند دخيره می نمايد.

dec dest

عملوند دستور dec می تواند ثبات يا حافظه باشد.

به استثنای فلگ Carry بقيه فلگ ها مشابه دستورالعمل sub تغيير می کنند.


NEG

دستورالعمل (negate) neg مکمل2 عملوند خود را محاسبه می کند. فرم کلی ان به صورت زير است:

neg dest

دستور neg حاصل تفريق تنها عملوند خود را از عدد صفر را محاسبه کرده (عملوند را منفی می کند) و نتيجه را در آن ذخيره می کند. درنتيجه اجرای دستور علامت عملوند عکس می شود.

عملوند دستور neg می تواند ثبات يا محلی از حافظه باشد:

neg register
neg memory

اين دستور روی فلگ ها به صورت زير تاثيرمی گذارد:

• اگر نتيجه برابر با صفر شود فلگ Carry صفر و در غير اين صورت يک می شود. اگر عملوند صفر بوده باشد دستور اثری روی آن نمی گذارد ولی فلگ Carry را صفر می کند. منفی کردن هر مقدار ديگر فلگ Carry را يک می کند.
• اگر عملوند يک بايتی و حاوی مقدار -128 باشد و يا دوبايتی و حاوی عدد -32768 باشد، منفی کردن عملوند را تغييير نمی دهد اما فلگ Overflow را يک می کند.
• روی فلگ های S، P و Z مانند دستور sub اثر می گذارد.


مثال. دستور زير علامت متغير J عکس می شود.

neg J

مثال. دستورات اسمبلی زير مکمل K را محاسبه و در J ذخيره می کند(J=-k;).

mov AX, K
neg AX
mov J, AX


CMP

دستوالعمل (compare) cmp مانند دستور sub است با اين تفاوت که حاصل تفريق را ذخيره نمی کند(dest-src). نحوه کلی آن به صورت زير است:

cmp dest.src

به صورت های زير می تواند استفاده شود:

cmp register, register
cmp register, memory
cmp memory, register
cmp register, immediate data
cmp memory, immediate data
cmp AX/AL, immediate data

فلگ ها مانند دستورالعمل sub با توجه به نتيجه تفريق تغيير می کنند.

دستور زير را درنظر بگيريد:

cmp AX, BX

اين دستور حاصل AX-BX را محاسبه می کند و با توجه به حاصل فلگ ها را تنظيم می کند. فلگ ها به صورت زير تغيير می کنند و می توانند برای بررسی نتيجه مقايسه بکار برده شوند:

• فلگ Zero يک می شود اگر AX=BX باشد. مساوی يا نامساوی بودن دو عملوند را مشخص می کند.
• فلگ Carry وقتی يک می شود که در محاسبات بدون علامت AX<BX باشد. يعنی تفريق BX از AX احتياج به رقم قرضی داشته باشد.
• فلگ Sign به همراه فلگ Overflow در محاسبات علامتدار نشان می دهد کدام عملوند بزرگتر است.
• دستورالعمل cmp روی فلگ های Parity و Auxiliary Carry هم تاثير دارد ولی بندرت هنگام مقايسه مورد بررسی قرار می گيرند.

به طور خلاصه برای مقايسه دو عملوند با توجه به فلگ های زير می توان نتيجه گيری کرد:

عملوندهای بدون علامت
فلگ ها
AX = BXZ=1
AX ≠ BXZ=0
AX < BXC=1
AX >= BXC=0
عملوندهای علامتدار
فلگ ها
AX = BXZ=1
AX ≠ BXZ=0
AX < BX(S=0 and O=1)or(S=1 and O=0)
AX >= BX(S=0) and (O=0) or (S=1) and (O=1)

دستورالعمل های انتقال داده مقادير را از يک محل به محل ديگر کپی می کنند.

MOV
XCHG
LEA


MOV

ساده ترين دستورالعمل mov است که دارای دو عملوند است. اين دستورالعمل محتوای دومين عملوند خود را در اولين کپی می کند. فرم کلی آن به صورت زير است:

mov Dest, Source

دستور mov يک کپی از Source را گرفته و آنرا در Dest ذخيره می کند. محتوای Source بعد از اجرای دستور تغيير نمی کند ولی مقدار قبلی Dest رونويسی می شود.

دستور mov مشابه دستور انتساب در زبان های سطح بالا است ( Dest := Source; در زبان Pascal يا Dest=Source; در زبان C).

با توجه به نوع عملوندها، انواع مختلفی از دستورالعمل mov را می توان داشت. متداولترین آنها عبارتند از:

mov register, register
mov memory, register
mov register, memory
mov memory, immediate data
mov register, immediate data
mov AX/AL, memory
mov memory, AX/AL
mov segment register, memory 16
mov segment register, register 16
mov register 16, segment register
mov memory 16, segment register

چند موضوع مهم درباره دستور mov را باید همواره بخاطر داشت:

1. انتقال حافظه به حافظه وجود ندارد. يعنی هردو عملوند همزمان نمی توانند عملوند حافظه ای باشند.
2. عملوندها می تواند از نوع بايت يا کلمه باشند. اما هردو عملوند حتما بايد هم اندازه باشند (برای مثال دستور mov AX,BL اشتباه است). اين برای عملوند های حافظه و ثبات هم باید رعایت شود (اگر متغيری را يک بايتی تعريف کنيد و آنرا در ثبات AX منتقل کنيد اسمبلر پيغام خطا صادر می کند).
3. با اين دستور نمی توان يک داده فوری را در يک ثبات سگمنت منتقل کرد.
4. هر دو عملوند نمی توانند ثبات سگمنت باشند.
5. گونه هائی از دستور mov سريع تر و کوتاهتراز بقيه هستند. برای مثال هر دو دستور mov ax, mem و mov reg, mem داده ای را از حافظه به ثبات کپی می کنند اما دستورالعمل اول کوتاهتر و سريع تر از دومی است.
6. می توان يک مقدار فوری را در يک محل حافظه منتقل کرد. در اين حالت داده فوری به اندازه عملوند مقصد گسترش داده می شود (مگراينکه بزرگتر از مقصد باشد که خطا صادر می شود). البته اسمبلر نمی تواند اندازه عملوند حافظه را تعيين کند مگر اينکه عملوند حافظه ای به صورت يک متغير در برنامه اعلان شده باشد. برای حل اين مشکل از عملگر های byte ptr و word ptr برای تعيين اندازه عملوند حافظه ای می توان استفاده کرد.


مثال. دستور زيرداده فوری 10h را به اندازه يک کلمه گسترش داده و در محلی که BX به آن اشاره می کند ذخيره می کند.

mov word ptr [bx], 10h

مثال. دستورات زير داده فوری 40h را در ثبات سگمنت ES ذخيره می کند. ثبات AX به عنوان واسطه بکار رفته است. هر کدام از ثبات همه منظوره را می توان به جای AX بکار برد.

mov AX, 40h
mov ES, AX


دستور mov روی هيچکدام از فلگ ها تاثيری ندارد.


XCHG

دستورالعمل xchg محتوای دو عملوند خود را جابجا می کند. فرم کلی آن به صورت زير است:

xchg Operand1, Operand2

مقدار هردو عملوند در اثر اجرا تغيير می کند.

چهار شکل خاص برای اين دستور وجوددارد:

xchg register, memory
xchg register, register
xchg ax, register16

ترتيب علموندها اهمیت ندارد. می توانید xchg mem,reg یا xchg reg,mem را بنویسید نتیجه فرقی ندارد. اکثر اسمبلرها بطور خودکار کد کوتاهتر را انتخاب می کنند.

هردو عملوند باید یک اندازه باشند.

دستور xchg روی هيچيک از فلگ ها تاثیر نمی گذارد.


LEA

دستورالعمل (load effective address) lea برای مقداردهی اشاره گرها استفاده می شود. فرم خاص آن به صورت زیر است:

lea register16, memory

اين دستور آدرس موثر يک محل خاص از حافظه را درون یک ثبات همه منظوره ذخيره می کند. منظور از آدرس موثر آدرس نهائی حافظه بعد از کلیه محاسبات آدرسی است.


مثال. دستور زير مقدار 1234h را در ثبات AX قرار می دهد.

lea AX, DS:[1234h]


دستور mov ax, immediate data هم همین عمل را انجام می دهد. تفاوت آنها در اين است که دستورالعمل lea محاسبه آدرسی و انتقال داده را همزمان انجام می دهد.


مثال. دستور زير آدرس حاصل از محاسبه BP+SI+4 را درثبات AX قرار می دهد. ابتدا مقادير را بهم جمع کرده سپس در ثبات منتقل می کند.

lea bx, 4[bp+si]


دستورالعمل lea روی فلگ ها تاثير ندارد.

یک الگوریتم مرتب سازی الگوریتمی است که عناصر یک لیست را در ترتیب معینی قرار می دهد. کارائی مرتب سازی برای بهینه سازی کاربردهای الگوریتم های دیگر مانند جستجو و ادغام، که به لیست های مرتب نیاز دارند، اهمیت دارد. مرتب سازی برای تهیه خروجی های خوانا برای انسان نیز مفید است.

مرتب سازی حبابی

مرتب سازی انتخابی

مقايسه الگوريتم های مرتب سازی


الگوریتم های مرتب سازی اغلب بر اساس زیر دسته بندی می شوند:

• پیچیدگی زمانی مقایسه عناصر برحسب اندازه لیست (n) . معمولا برای یک الگوریتم مرتب سازی عادی O(n log n) بهترین حالت و O(n2) بدترین حالت است. زمان ایده آل O(n) است.
• پیچیدگی زمانی تعداد جابه جائی ها برای الگوریتم های درجا (in place).
• مصرف حافظه (و استفاده از منابع دیگر سیستم). برخی از الگوریتم های مرتب سازی برون از جا (out place) هستند. که به محل کمکی برای نگهداری داده های موقت علاوه بر داده های در حال مرتب شدن نیاز دارند.
• بعضی از الگوریتم ها بازگشتی یا غیر بازگشتی یا هردو هستند.
• پايداری. الگوریتم های مرتب سازی پايدار ترتیب نسبی رکوردها با کلیدهای مساوی را برقرار می کنند. یعنی اگر دو رکورد R و S با یک کلید وجود داشته باشد و R قبل از S در لیست اصلی آمده باشد، در لیست مرتب شده هم R قبل از S می آید.
• متد کلی. روش مرتب سازی داده ها که می تواند درج،‌ تعویض، انتخاب، ادغام و غیره باشد. برای مثال مرتب سازی حبابی و سریع مرتب سازی تعویضی هستند.


جستجوی دودوئی

الگوریتم جستجوی دودوئی (binary search algorithm) روشی برای جستجوی یک مقدار درون یک لیست مرتب است. عنصر وسط لیست انتخاب شده و با آرگومان جستجو مقایسه می شود تا تعیین شود از آن بزگتر، کوچکتر یا مساوی است. اگر آرگومان از عنصر انتخاب شده بزرگتر باشد جستجو در نیمه پایینی و اگر کوچکتر باشد در نیمه بالائی لیست ادامه پیدا می کند.

کد بازگشتی جستجوی دودوئی به صورت زیر است:

int BinarySearch(int A, int value, int low, int high) {
  if (high < low)
    return -1    // not found
  mid = (low + high) / 2
  if (A[mid] > value)
    return BinarySearch(A, value, low, mid-1)
  else if (A[mid] < value)
    return BinarySearch(A, value, mid+1, high)
  else
    return mid    // found
}

زمان جستجو O(log n) است که زمان بهتری نسبت به جستجوی خطی است. اگر آرگومان جستجو برابر با عنصر وسط لیست باشد با یک مقایسه پیدا می شود که بهترين حالت است. در بدترین حالت به ⌊log2 n ⌋ + 1 مقايسه نياز است.

جستجوی دودوئی مثالی از یک الگوریتم تقسیم و غلبه است.

مقدمه
دیودها جریان الکتریکی را در یک جهت از خود عبور می‌‌دهند و در جهت دیگر در مقابل عبور جریان از خود مقاومت بالایی نشان می‌‌دهند. این خاصیت آنها باعث شده بود تا در سالهای اولیه ساخت این وسیله الکترونیکی ، به آن دریچه یا Valve هم اطلاق شود. از لحاظ الکتریکی یک دیود هنگامی عبور جریان را از خود ممکن می‌‌سازد که شما با برقرار کردن ولتاژ در جهت درست (+ به آند و - به کاتد) آنرا آماده کار کنید. مقدار ولتاژی که باعث می‌شود تا دیود شروع به هدایت جریان الکتریکی نماید ولتاژ آستانه یا (forward voltage drop) نامیده می‌شود که چیزی حدود 0.6 تا 0.6 ولت می‌‌باشد.





ولتاژ معکوس
هنگامی که شما ولتاژ معکوس به دیود متصل می‌‌کنید (+ به کاتد و - به آند) جریانی از دیود عبور نمی‌کند، مگر جریان بسیار کمی که به جریان نشتی یا Leakage معرف است که در حدود چند µA یا حتی کمتر می‌‌باشد. این مقدار جریان معمولآ در اغلب مدارهای الکترونیکی قابل صرفنظر کردن بوده و تأثیر در رفتار سایر المانهای مدار نمی‌گذارد. اما نکته مهم آنکه تمام دیودها یک آستانه برای حداکثر ولتاژ معکوس دارند که اگر ولتاژ معکوس بیش از آن شود دیود می‌‌سوزد و جریان را در جهت معکوس هم عبور می‌‌دهد. به این ولتاژ آستانه شکست یا Breakdown گفته می‌شود.





دسته بندی دیودها
در دسته بندی اصلی ، دیودها را به سه قسمت اصلی تقسیم می‌‌کنند، دیودهای سیگنال (Signal) که برای آشکار سازی در رادیو بکار می‌‌روند و جریانی در حد میلی آمپر از خود عبور می‌‌دهند، دیودهای یکسو کننده (Rectifiers) که برای یکسو سازی جریانهای متناوب بکار برده می‌‌شوند و توانایی عبور جریانهای زیاد را دارند و بالاخره دیودهای زنر (Zener) که برای تثبیت ولتاژ از آنها استفاده می‌شود.
اختراع دیود پلاستیکی (plastic diode)
محققان فیزیک دانشگاه اوهایو (Ohio State University) توانستند دیود تونل پلیمری اختراع کنند. این قطعه الکترونیکی منجر به ساخت نسل آینده حافظه‌های پلاستیکی کامپیوتری و چیپهای مدارات منطقی خواهد شد. این قطعات کم مصرف و انعطاف پذیر خواهند بود. ایده اصلی از سال 2003 که یک دانشجوی کارشناسی دانشگاه اوهایو ، سیتا اسار ، شروع به طراحی سلول خورشیدی پلاستیکی نمود بوجود آمد. تیم پژوهشی توسط پاول برگر (Paul Berger) ، پروفسور الکترونیک و مهندسی کامپیوتر و همچنین پروفسور فیزیک دانشگاه اوهایو رهبری می‌شود.
 

واحد پردازش مرکزی

پردازنده يا واحد پردازش مرکزی (Central Processing Unit) يا (CPU) از واحد کنترل و واحد محاسبات و منطق ساخته شده است. وظيفه آن خواندن و نوشتن محتويات سلول حافظه، انتقال داده بين سلول های حافظه و ثبات های خاص، رمزبرداری و اجرای دستورالعمل های ذخيره شده در حافظه اصلی است.

CPU هر دستورالعمل را در يک سری مراحل اجرا می کند و برای همگام کردن سيکل اجرای دستورالعمل از يک ساعت (Clock) استفاده می کنند. ساعت در يک فرکانس ثابت پالس می زند که سرعت ساعت ناميده می شود. اين ساعت دقيقه و ثانيه را نگه نمی دارد بلکه فقط در نرخ ثابتی ضربان دارد. مدارهای الکترونيکی کامپيوتر از اين ضربان ها برای انجام صحيح عمليات خود استفاده می کنند. تعداد ضربه ها يا اصطلاحا سيکل های مورد نياز يک دستورالعمل بستگی به نسل و مدل CPU دارد.


مثال. وقتی يک کامپيوتر 1.5GHz می خريد، 1.5 GHz فرکانس اين ساعت است. يعنی در هر ثانيه 1.5 ميليارد پالس می زند (گيگاهرتز GHz يا يک ميليارد سيکل در ثانيه است).


مجموعه دستورالعمل ها

مجموعه ای از تمام دستورالعمل هائی که يک نوع پردازنده می تواند اجرا می کند مجموعه دستورالعمل (Instruction Set) ناميده می شوند که درواقع زبان ماشين آن نوع پردازنده را شکل می دهد. دستورالعمل های زبان ماشين به صورت اعداد رمز می شوند و عموما ساده هستند. زيرا زبان ماشين با اين هدف طراحی می شود که پردازنده قادر باشد مقصود دستورالعمل را سريع کشف کند تا بتواند به طور موثر آن را اجرا کند..

هر پردازنده زبان ماشين منحصر بفرد خود را دارد. و مجموعه دستورالعمل از ماشينی به ماشين ديگر متفاوت است. به همين دليل مثلا برنامه های نوشته شده برای Mac نمی توانند روی يک IBM-PC اجرا شوند. برنامه های نوشته شده در زبان های ديگر بايد توسط کامپايلر به زبان ماشين پردازنده ای که روی آن اجرا می شود تبديل شود. معمولا عملکرد کامپايلرها بر روی ماشين با دستورالعمل کمتر آسان تر است.


مجموعه ثبات ها

دستورالعمل ها ممکن است نياز به داده ای داشته باشند تا روی آن عمل کند. هر پردازنده دارای يکسری سلول های حافظه است که داده های دستورالعمل را در خود ذخيره می کنند. اين سلول ها ثبات (register) ناميده می شوند و درون خود پردازنده قرار دارند. پردازنده می تواند به داده درون ثبات سريع تر از داده درون حافظه دسترسی پيدا کند. اغلب کامپيوترها مجموعه ای از ثبات ها را برای ذخيره موقت داده دارند. البته تعداد ثبات های پردازنده اندک است، بنابراين برنامه نويس ناچار است تنها داده های جاری را در ثبات ذخيره نمايد.


انواع پردازنده ها

پردازنده ها به گروه های زير دسته بندی می شوند:

1. Complex Instruction Set Computers - CISC
     • پردازنده هائی که مجموعه دستورالعمل کاملی با پشتيبانی سخت افزاری برای انواع وسيعی ازعمليات را دارند. در عمليات علمی، مهندسی و رياضی معمولا اکثر کارها را در کوتاهترين زمان انجام می دهند.
2. Reduced Instruction Set Computers - RISC
     • پردازنده هائی که مجموعه دستورالعمل فشرده و کوچکی دارند. در کاربردهای تجاری و برنامه هائی که توسط کامپايلر ايجاد شده اند معمولا اکثر کارها را در کوتاهترين زمان انجام می دهند.
3. Hybrid
     • پردازنده هائی که ترکيبی از روش CISC و RISC هستند و سعی دارند تعادلی بين مزايای هر دو روش برقرار کنند.
4. Special purpose
     • پردازند هائی که برای وظايف خاصی بهينه شده اند. Digital signal processors و انواع co-processors نوع متعارف اين دسته هستند.
5. Hypothetical
     • پردازنده هائی که هنوز وجود ندارند يا هرگز وجود نداشته اند. پردازنده هائی که در فاز طراحی هستند يا برای کارهای نظری درنظر گرفته شده اند. معروف ترين آنها MIX است که يک پردازنده فرضی آموزش ساخته شده توسط Donald E. Knuth برای ارائه الگوريتم های کامپيوتری است.

کدگذاري ASCII

کد گذاری ASCII (American Standard Code for Information Interchange) به حروف، ارقام، علائم و کاراکترهای مختلف يک عدد باينری 7 بيتی نسبت می دهد و هشتمين بيت را 0 درنظر می گيرد. به اين صورت هر کاراکتر يک بايت را اشغال می کند.

روشن است که اين روش برای نمايش اعداد مناسب نيست، چون در فرمت باينری يک بايت اعداد 0 تا 255 را نمايش می دهد، اما با کد ASCII يک بايت تنها برای نمايش يک رقم کافی است. به همين دليل کلا اين روش برای نمايش متن در حافظه استفاده می شود.


مثال. نمايش عدد 123 با دو فرمت ASCII و باينری

ASCII vs. Binary

نوع توسعه يافته اين سيستم شامل 8 بيت برای هر کاراکتر است و 256 حالت مختلف را شامل می شود. کدهای 0 تا 127 برای کاراکترهای استاندارد، کدهای کنترلی و ارتباطی و مقادير 128 تا 255 برای نمايش سمبل های گرافيکی و حروف يونانی هستند.


مثال. رشته "ABC123" به صورت 41h 42h 43h 30h 31h 32h نشان داده می شود.


يک کدگذاری کامل تر که جای ASCII را دارد می گيرد Unicode است. تفاوت کليدی بين اين دو نوع کدگذاری در اين است که ASCII يک بايت را برای کدکردن يک کاراکتر استفاده می کند در حاليکه Unicode برای هر کاراکتر دو بايت را درنظر می گيرد. بنابراين کاراکترهای بيشتری را می تواند نمايش دهد که اين برای نمايش کاراکترهای کليه زبان های دنيا کاربردی است.


مثال. کدگذاری ASCII کد 41h يا 65 را به کاراکتر A می دهد. کدگذاری Unicode کد 0041h هگز را می دهد.


نکته1. تفاوت يک حرف بزرگ با يک حرف کوچک تنها در بيت شماره 5 است؛ اين بيت در حروف بزرگ 0 و در حروف کوچک 1 است. ("m"= 01101101 و "M"= 01001101)
نکته2. ارقام 0 تا 9 کدهای 30h تا 39h را دارا می باشند.
نکته3. کاراکترهای قابل چاپ بين 20h تا 7Eh است.
نکته4. کاراکترهای 0 تا 1Fh و 7Fh کاراکترهای کنترلی نام دارند که قابل رويت نمی باشند.
نکته5. کاراکتر ESC با کد 1Bh همراه با کاراکترهای ديگر اغلب برای يک عمل خاص به دستگاه های جانبی ارسال می شود.
نکته6. کدهای 41 تا 5Ah کاراکترهای A تا Z و کدهای 61 تا 7Ah کاراکترهای a تا z هستند.
نکته7. کاراکتر CR و LF با کدهای 0Dh و 0Ah به ترتيب باعث حرکت مکان نما به شروع خط جاری و خط بعد می شود.

 

ماتريس‌ی كه عناصر صفر آنها زياد است و نسبتا تعداد کمی عنصر غير صفر دارد را ماتريس خلوت يا اسپارس (sparse matrix) مي نامند.
ماتريس هاي قطري و مثلثي نمونه‌هايي از ماتريس‌هاي خلوت هستند.

روش طبيعي نمايش ماتريس ها در حافظه به صورت يک آرايه‌هاي دوبعدي براي اين گونه ماتريس ها مناسب نيست. براي جلوگيري از اتلاف حافظه مي توان تنها عناصر غير صفر را ذخيره كرد. آرايه حاصل داراي سه ستون است که براي ذخيره مختصات سطر و ستون و مقدارعنصر غير صفر بکار می روند و تعداد سطرهای آن به تعداد عناصر غير صفراست. اين روش ذخيره ماتريس خلوت را point access method می نامند


نكته. تعداد عناصر غيرصفر ماتريس مثلثي n بعدي برابر است با: 1+2+3+…+n=n(n+1)/2 و تعداد عناصر صفر آن برابر است با: n2 – n(n+1)/2 = n(n-1)/2.

نكته. حاصلضرب دو ماتريس اسپارس ديگر اسپارس نيست.

تعاريف ماتريس

ماتريس ها معادل آرايه هاي دو بعدي هستند. A‌ يك ماتريس m×n است شامل m×n عدد قرار گرفته در m سطر و n‌ ستون به شكل:

A11 A12 … A1n
A21 A22 … A2n
………………
Am1 Am2 … Amn

يك ماتريس با تعداد سطر و ستون برابر را ماتريس مربعي (square matrix) مي نامند.

قطر اصلي يك ماتريس مربعي شامل عناصر A11,A22,…,Ann است. يعنی اگر i=j باشد Aij روی قطر اصلی است.

يك ماتريس پائين مثلثي (lower triangle matrix) ماتريس مربعي است كه عناصر بالای قطراصلی آن همگی صفر باشند. يعنی اگر i<j باشد Aij=0 است

در ماتريس بالا مثلثی (upper triangle matrix) کليه عناصر زير قطراصلی صفر هستند. يعنی اگر i>j باشد Aij=0 است

يك ماتريس قطري، ماتريس مربعي است كه عناصر غير صفر آن روي قطر اصلي قرار دارند.

ماتريس مربعي A را متقارن مي نامند اگر براي همه i و j ها A[j,i] =A[i,j].

 

در اين نسل نرم افزار کامل تری به نام سيستم مديريت داده (Data Manegement System) به عنوان واسط بين برنامه کاربردی و محيط فيزيکی ايجاد شد.

DMS از AM استفاده می کند و ارتباط بين ديد منطقی و فيزيکی را ايجاد می کند. برای بازيابی يک رکورد DMS از AM درخواست می کند و AM رکوردهای موردنظر را از بلاک های فايل بازيابی و در اختيار DMS قرار می دهد تا کل رکورد را به برنامه بدهد

• نرم افزار DMS واسط برنامه کاربردی و داده است.
• فايل های منطقی متعددی می توانند از داده های فيزيکی مشترک بهره ببرند
• ميزان تکرار داده کاهش يافته است
• داده های مشترک در کاربردهای متنوع بکار می روند
• صحت داده تا حدی تامين می شود
• نشانی دهی در سطح فيلد يا گروهی از فيلدها ممکن است
• بازيابی بر کمک چند کليد امکان پذير است
• تسهيلاتی برای پردازش فايل پيش بينی شده است
• ترکيبی از انواع ساختارهای فايل بکار می رود

سيستم پايگاه داده (database system)

در اين روش كليه داده ها به صورت مجتمع در پايگاه داده ذخيره می شود، ولي هر كاربر ديد خاص خود را نسبت به داده ها دارد. كاربران مختلف مي توانند به طور مشترك با پايگاه داده كار كنند. به دليل تجمع داده افزونگي به حداقل ممكن كاهش مي يابد.

نرم افزاری به نام سيستم مديريت پايگاه داده ( DBMS ) به عنوان واسطه بين برنامه هاي كاربردي و پايگاه داده ايفاي نقش مي كند لذا امنيت داده ها در اين روش بيشتر است.

چند نمونه از کاربردهای سيستم پايگاه داده موارد زير هستند:

• انجام کليه تراکنش های بانکداري
• رزرواسيون و زمانبندي خطوط هوائي
• ثبت نام دانشجويان، واحدگيری و ثبت نمرات در مراکز آموزشی
• ثبت اطلاعات مشتريان، محصولات و فاکتورهای خريد و فروش
• پيگيري سفارشات و پيشنهادات در فروش online
• ثبت رکوردهاي کارمندان و محاسبات حقوق، کسورات مالياتي در سازمان

 

دو روش كلي براي ذخيره و بازيابي خودكار داده ها وجود دارد: سيستم فايلی ساده و سيستم پايگاه داده

سيستم فايلی (file system)

در اين روش، داده ها در فايل هاي مجزا قرار گرفته و سيستم های جداگانه ای به نام سيستم پردازش فايل براي استفاده از فايل های داده ای طراحي مي شوند. در اين سيستم ها هر برنامه ي كاربردي تنها به فايل داده ای مربوط به خود می تواند مراجعه مي كند.

اشکالات چنين طراحي در ذخيره داده به طور خلاصه عبارتند:

1. افزونگي و ناسازگاري داده به دليل چندين فرمت فايل و تکرار اطلاعات در فايلهاي مختلف.
2. مشکل در دستيابی داده و نياز به نوشتن برنامه جديدي براي انجام هر کار
3. قيدهای جامعيت به جاي اينکه صريحا بيان شوند در کدبرنامه از نظر پنهان مي شد. اضافه کردن قيدهاي جديد يا تغيير قيدهاي موجود به سختي صورت مي گيرد.
4. ايجاد ناسازگاري به دليل وجود چندين کپي از فقره هاي داده
5. مشکلات امنيتی به دليل دسترسي همروند و بدون کنترل توسط چند کاربر

ادامه مطلب...

پايگاه داده

يک بانك اطلاعاتي يا پايگاه داده (database) مجموعه اي سازمان يافته و بدون افزونگي از داده های مرتبط به هم است که مي تواند توسط سيستم هاي کاربردي مختلف به اشتراک گذاشته شود و به راحتي دسترسی، مديريت و بهنگام شود.

وقتی داده به صورت پايگاه داده سازماندهی می شود، کاربر و برنامه نويس نيازي به دانستن جزئيات ذخيره سازي داده ندارند. علاوه براين داده مي تواند بدون تاثير روي اجزاي ديگر سيستم تغيير کند. برای مثال از اعداد حقيقي به صحيح، از يک ساختار فايل به ديگری يا از دستگاه ذخيره سازي نوري به مغناطيسي تغيير کند.


ويژگي هاي داده در پايگاه داده

ويژگی هائی که داده در پايگاه داده بايد داشته باشند در ليست زير آمده است:

1. اشتراکی شدن (shared)
      • داده در پايگاه داده بين چندين کاربر و برنامه کاربردی به اشتراک گذاشته می شود.
2. ماندگاري(persistence)
     • وقتي داده در پايگاه داده ذخيره شد پايدار است و از بين نمی رود، مگر آنکه توسط سيستم پايگاه داده تغيير کند.
3. امنيت (security)
      • داده در پايگاه داده از فاش شدن، تغيير و تخريب بدون مجوز محافظت می شود. مدير سيستم توسط سطوح دسترسي و قيدهای امنيتی نحوه دستيابی به داده را تعريف می کند و اطمينان می دهد که دستیابی از طريق مناسب انجام می شود.
4. اعتبار (validity)
      • يا جامعيت (integrity) و يا صحت(correctness) به درستی داده در پايگاه داده نسبت به موجوديت دنياي واقعي معتبر اشاره دارد. مثلا موجودی بانک نبايد منفی باشد.
5. سازگاری (consistency)
     • داده در پايگاه داده با مقدار واقعي داده در دنياي خارج سازگار است. وقتی يک فقره اطلاع در بيش از يک نقطه ذخيره شود و لازم باشد بهنگام شود، اگر بهنگام سازی در همه نقاط انجام نشود ناسازگاری ايجاد می شود.
6. کاهش افزونگی (non redundancy)
     • داده در پايگاه داده داراي حداقل افزونگي است. افزونگي به اين معناست که هيچ دو فقره داده در بانک معرف يک موجوديت در دنياي خارج نباشد.
7. استقلال (independence)
     • تغييردر نمايش فيزيکی، تکنيک های دستيابی و سازماندهی داده تاثيری روی برنامه های کاربردی ندارد.

ادامه مطلب...

داده

داده (data) دارای تعاريف مختلفی است، به طور کلی داده ها كلمات و ارزش هاي واقعي هستند كه از طريق مشاهده و تحقيق بدست مي آيند، به عبارت ديگر داده نمودي از وقايع، معلومات، رخدادها، پديده ها و مفاهيم مي باشد.

در محاسبات، داده به اطلاعي گفته می شود که به شکلی مناسب براي انتقال و پردازش ترجمه شود. در کامپيوتر و رسانه های ارتباطاتی امروزی داده به شکل باينری تبديل مي شود. بنابراين داده يک نمايش باينری از يک موجوديت منطقي ذخيره شده در حافظه کامپيوتر است.

از نظر ساختاري داده به مقادير صفت خاصه انواع موجوديت ها اتلاق می شود.

ريشه کلمه داده از عبارت لاتين datum گرفته شده که به معنی اطلاع است. و data فرم جمع آن است. اما datum بندرت استفاده می شود و اکثرا ترجيح می دهند data را به صورت يک کلمه مفرد استفاده کنند.


اطلاع

اطلاع (information) مفهومي است که براي گيرنده آن قابل درک بوده و با دانستن آن می تواند برای حل يک مسئله تصميم گيري يا ارزيابی كند.

وقتي اطلاع وارد کامپيوتر شده ذخيره مي گردد به داده تبديل می شود. بعد از پردازش، داده خروجي مجددا به عنوان اطلاع دريافت مي شود.

وقتي اسم صفت خاصه و مقدار منسوب به آن در دست باشند اطلاعي در مورد موجوديت حاصل مي شود.

هنگاميکه اطلاعات در يک بسته خاص قرار می گيرند و براي درک موضوعی يا انجام کاری استفاده مي شود به دانش (knowledge) تبديل می شود.


موجوديت

موجوديت (entity) مفهوم کلي پديده، شيء يا فردي است که در مورد آن مي خواهيم اطلاع داشته باشيم و در کامپيوتر ذخيره کنيم.

هر نوع موجوديت دارای مجموعه اي از صفات خاصه (attribute) است که ويژگي جداکننده يک نوع موجوديت از نوع ديگر محسوب می شود.


مثال. اگر در نظر داريم يك سيستم پايگاه داده براي يك دبيرستان پياده سازي كنيم مواردي چون دانش آموزان، دبيران، دروس، كلاس ها و غيره جزء موجوديت هاي سيستم به شمار مي روند.

مثال. موجوديت دانشجو در سيستم دانشگاه مي تواند داراي صفات خاصه: نام، نام خاوادگي، سن، سال تولد، رشته تحصيلي، سال ورود و ... باشد و يا موجوديت درس صفات خاصه: كد درس، نام درس و تعداد واحد ‎

به کانال تلگرام سایت ما بپیوندید