مقداری است که برای مقایسه مسیرهای مختلف استفاده میشود، مانند پهنای باند، تاخیر، و هزینه.
اشارهگر (Pointer) در برنامهنویسی به متغیری گفته میشود که آدرس حافظه یک متغیر دیگر را در خود ذخیره میکند. به عبارت دیگر، اشارهگرها به شما این امکان را میدهند که به جای ذخیرهسازی دادهها، به آدرس حافظه آنها اشاره کنید. استفاده از اشارهگرها باعث افزایش کارایی برنامهها و کاهش استفاده از حافظه میشود، اما در عین حال میتواند مشکلاتی مانند خطای دسترسی به حافظه (memory access errors) را نیز ایجاد کند.
در زبانهایی مانند C و C++، اشارهگرها ابزار بسیار قدرتمندی هستند که میتوانند برای انجام انواع عملیات مانند تخصیص حافظه پویا (dynamic memory allocation)، انتقال دادهها و ایجاد ساختارهای دادهای پیچیده استفاده شوند. در این زبانها، اشارهگرها میتوانند به متغیرها، آرایهها، ساختارها و حتی توابع اشاره کنند.
در اینجا یک مثال ساده از استفاده از اشارهگر در زبان C آورده شده است:
#include <stdio.h> int main() {
int x = 10;
int *ptr = &x; // ptr اشارهگری است که آدرس متغیر x را ذخیره میکند
printf("Value of x: %d\n", x);
// چاپ مقدار x
printf("Address of x: %p\n", &x);
// چاپ آدرس حافظه x
printf("Value stored in ptr: %p\n", ptr); // چاپ آدرس ذخیره شده در ptr
printf("Value pointed by ptr: %d\n", *ptr); // چاپ مقداری که ptr به آن اشاره میکند
return 0; } در این مثال، متغیر x با مقدار 10 تعریف شده است. سپس یک اشارهگر ptr به آدرس حافظه x اشاره میکند. با استفاده از عملگر & میتوان آدرس حافظه یک متغیر را به دست آورد و با استفاده از عملگر * میتوان مقدار موجود در آدرس حافظه را دسترسی پیدا کرد.
در زبان C++ نیز مشابه C از اشارهگرها استفاده میشود. در اینجا یک مثال از اشارهگرها در C++ آورده شده است:
#include <iostream> using namespace std; int main() {
int x = 20;
int *ptr = &x; // ptr اشارهگر به متغیر x
cout << "Value of x: " << x << endl;
// چاپ مقدار x
cout << "Address of x: " << &x << endl;
// چاپ آدرس حافظه x
cout << "Value stored in ptr: " << ptr << endl; // چاپ آدرس ذخیره شده در ptr
cout << "Value pointed by ptr: " << *ptr << endl; // چاپ مقداری که ptr به آن اشاره میکند
return 0; } در این مثال، مشابه C، از اشارهگرها برای ذخیره و دسترسی به آدرس حافظه متغیر استفاده شده است. در C++ نیز میتوان از اشارهگرها برای انجام انواع عملیات مشابه استفاده کرد.
یکی از کاربردهای رایج اشارهگرها در برنامهنویسی، تخصیص حافظه پویا است. در زبان C، میتوان از توابعی مانند malloc() و free() برای تخصیص و آزادسازی حافظه استفاده کرد. در C++، از عملگرهای new و delete برای تخصیص و آزادسازی حافظه استفاده میشود.
در نهایت، اشارهگرها میتوانند مشکلاتی مانند نشت حافظه (Memory Leak) و دسترسی به حافظه غیرمجاز ایجاد کنند. بنابراین، باید از آنها با دقت استفاده کرد و در هنگام تخصیص و آزادسازی حافظه، توجه خاصی به جزئیات داشت.
برای اطلاعات بیشتر، میتوانید از سایت saeidsafaei.ir و اسلایدهای محمد سعید صفایی بهرهبرداری کنید.
در این مبحث، پس از مطالعه مقدماتی در زمینه برنامهنویسی، اولین برنامه به زبان سیپلاسپلاس نوشته شده و به تحلیل قسمتهای مختلف آن پرداخته میشود. همچنین، مفاهیم اساسی مانند انواع متغیرها، عملگرها، ثابتها، تبدیل نوع، حوزه متغیرها و برخی از خطاهای رایج برنامهنویسی بررسی خواهند شد. هدف این جلسه، آشنایی با اصول اولیه برنامهنویسی در C++ و درک ساختار برنامهها و نحوه مدیریت دادهها است.
مقداری است که برای مقایسه مسیرهای مختلف استفاده میشود، مانند پهنای باند، تاخیر، و هزینه.
گراف وزنی گرافی است که در آن به هر یال یک وزن یا هزینه اختصاص داده میشود.
یک کیلوبایت معادل 1024 بایت است و به عنوان واحدی برای اندازهگیری دادههای کم حجم استفاده میشود.
یادگیری تقویتی (RL) یک نوع یادگیری ماشین است که در آن عامل با انجام اقداماتی در محیط و دریافت بازخورد، یاد میگیرد که چگونه تصمیمات بهتری بگیرد.
پروتکلی که برای ارتباطات شبکههای محلی (LAN) از آن استفاده میشود.
زبانهای برنامهنویسی سطح پایین به زبانهایی اطلاق میشوند که به کد ماشین نزدیکترند و معمولاً برای تعامل مستقیم با سختافزار استفاده میشوند.
کلاس در برنامهنویسی شیگرا قالبی است که برای ایجاد اشیاء استفاده میشود. هر کلاس میتواند ویژگیها و متدهایی را تعریف کند.
ساختارهایی در برنامهنویسی شیگرا هستند که دادهها و متدهای مربوط به آنها را به یک واحد منطقی گروهبندی میکنند.
کابلی که از دو سیم مسی تشکیل شده و در شبکهها برای انتقال داده استفاده میشود.
اعلان تابع فرآیند اعلام نام و نوع تابع است که در آن نوع داده بازگشتی و نام پارامترها مشخص میشود، اما بدنه آن در این مرحله تعریف نمیشود.
عملگر افزایش پس از عملگر ()++ است که ابتدا مقدار متغیر را میخواند و سپس آن را افزایش میدهد.
واقعیت افزوده (AR) محیط واقعی را با اطلاعات دیجیتال یا تصاویر ترکیب میکند تا تجربهای تعاملی و غنی ایجاد کند.
مدل استاندارد شبکهای که ارتباطات سیستمهای مختلف را در 7 لایه مجزا تنظیم میکند. هر لایه وظایف خاص خود را دارد و با لایههای مجاور خود ارتباط برقرار میکند.
بلاکچین در زنجیره تأمین به استفاده از فناوری بلاکچین برای ردیابی و تأمین شفافیت در فرآیندهای زنجیره تأمین اطلاق میشود.
یک برنتابایت معادل 1024 زتابایت است و به عنوان واحدی برای اندازهگیری دادههای بسیار بزرگ در مقیاسهای جهانی مطرح است.
مدلهایی از هوش مصنوعی هستند که از الگوریتمهایی برای شبیهسازی مغز انسان استفاده میکنند. این شبکهها از لایههای مختلفی تشکیل شدهاند که اطلاعات را پردازش میکنند.
یک بیت کوچکترین واحد ذخیرهسازی داده است که تنها میتواند یکی از دو مقدار 0 یا 1 را نگهداری کند.
دیسکهای مغناطیسی که معمولاً به عنوان حافظههای ثانویه (مثل هارد دیسکها) برای ذخیرهسازی دائمی دادهها استفاده میشوند.
کامپیوترهایی هستند که منابع یا خدمات خاصی را در یک شبکه به دیگر سیستمها ارائه میدهند.
علم اعصاب شناختی به مطالعه نحوه عملکرد مغز و سیستمهای عصبی در پردازش اطلاعات و تصمیمگیری اطلاق میشود.
حافظههای دینامیک (DRAM) که نیاز به رفرش مداوم دارند، برای حافظههای اصلی به کار میروند. این نوع حافظهها ظرفیت بیشتری نسبت به SRAM دارند.
یادگیری تقویتی عمیق یک نوع یادگیری ماشین است که از بازخوردهای مثبت و منفی برای آموزش مدلها استفاده میکند.
آرایه ایستا، آرایهای است که در آن اندازه از قبل تعریف میشود و نمیتوان در زمان اجرا اندازه آن را تغییر داد.
فاکتوریل یک عدد n با ضرب آن در تمام اعداد صحیح مثبت کوچکتر از خودش تعریف میشود. این مقادیر بهطور معمول برای محاسبات ریاضی یا بازگشتی استفاده میشوند.
خودروهای خودران به خودروهایی اطلاق میشود که میتوانند بدون دخالت انسان حرکت کنند و تصمیمات رانندگی را اتخاذ کنند.
حالت انتقال داده دو طرفه همزمان که در آن هر دو دستگاه میتوانند به صورت همزمان دادهها را ارسال و دریافت کنند.
کلمه کلیدی const در زبانهای برنامهنویسی برای تعریف متغیرهایی استفاده میشود که مقدار آنها ثابت است و نمیتوان در طول اجرای برنامه تغییر داد.
روش تقسیمبندی ثابت زیربخشهای شبکه که در آن تمامی زیربخشها از اندازه یکسان برخوردارند.
محاسبات ژنومی به استفاده از تکنیکهای محاسباتی برای تجزیه و تحلیل دادههای ژنتیکی و ژنومیک اطلاق میشود.
بافرینگ به ذخیرهسازی موقت دادهها در یک بخش از حافظه گفته میشود تا زمانی که سرعت ارسال یا دریافت دادهها با هم هماهنگ شوند.
زنجیرههای تأمین خودران به شبکههایی اطلاق میشود که قادرند بهطور خودکار فرآیندهای تولید و تأمین را بهینهسازی کنند.
پردازش زبان طبیعی برای مراقبتهای بهداشتی به کاربرد NLP برای تجزیه و تحلیل دادههای متنی در مراقبتهای بهداشتی اطلاق میشود.
یک اگزابایت معادل 1024 پتابایت است و برای اندازهگیری دادههای بسیار بزرگ در مقیاس جهانی به کار میرود.
فرآیندی که در آن روترها مسیرهای بهترین برای ارسال بستههای داده به مقصد را تعیین میکنند.
هوش مصنوعی لبه (Edge AI) استفاده از مدلهای یادگیری ماشین و پردازش دادهها را در دستگاههای لبه شبکه (نزدیک به کاربر) تسهیل میکند.