الگوریتمستان - برنامه‌نویسی

نوشته‌ها با موضوع برنامه‌نویسی

وب‌سایت CodinGame.com یک ابزار آنلاین تمرین برنامه‌نویسی و حل مسئله بر اساس حل معماهای مختلف برنامه‌نویسی است. در این وب‌سایت معماهای مختلف برنامه‌نویسی در قالب طراحی عامل هوشمند و در سطوح مختلف وجود دارد که به کاربر کمک می‌کند با شروع از سطوح آسان استفاده از انواع ابزارهای برنامه‌نویسی برای حل مسئله را تمرین کند ...

زبان برنامه‌نویسی ++C دو کلاس set و unordered_set را برای پیاده‌سازی مفهوم مجموعه (ظرفی با عناصر غیرتکراری) دارد. کلاس set علاوه بر بررسی تکراری نبودن عناصر، آنها را به صورت مرتب ذخیره می‌کند. پس اگر بخواهیم برای نگه داشتن عناصری از کلاس دلخواه خودمان از set استفاده کنیم، باید حداقل عملگر > را سربارگذاری کرده باشیم تا ظرف set قابلیت تشخیص ترتیب عناصر را داشته باشد ...

ویدئوهای راه حل سوالات مسابقه جهانی ACM-ICPC 2016 را در کانال آپارات الگوریتمستان مشاهده کنید: aparat.com/algorithmha ...

زمانی پیش میاد که بخوایم اطلاعات دیتابیس رو به صورت چند بخشی پردازش کنیم؛ مثلا وقتی که نیاز داریم یه لیست رو در چند صفحه نشون بدیم. در این حالت یه راه اولیه اینه که کل اطلاعات رو از دیتابیس بخونیم و بعد متناسب با نیازمون یه بخش از اون رو انتخاب کنیم ...

زبان برنامه‌نویسی ++C علاوه بر ابزارهایی مانند cin و cout برای عملیات I/O، توابع scanf و printf را هم برای همین کارها از زبان برنامه‌نویسی C به ارث برده است. هر کدام از این دو دسته مزایایی دارند که ممکن است بخواهیم از هر دو در برنامه‌نویسی استفاده کنیم ...

بعد از نصب Qt ممکن است زمان اجرا با خطای Cannot find -lGL برخورد کنید. در این حالت باید نصب بودن کتابخانه‌ی libgl-dev بررسی شود. ...

ابزار Microsoft Solver Foundation امکان اجرای شبیه‌سازی‌های ریاضی، مدل‌سازی و حل مسائل بهینه‌سازی با استفاده از بستر Net. را فراهم می‌کند. به عنوان مثال می‌توان با این ابزار هر نوع مساله‌ی بهینه‌سازی خطی را حل کرد ...

برای محاسبه زمان اجرای کد در ++C می‌توان از دو تابع clock یا time استفاده کرد. تابع clock، تعداد کلاک‌های در اختیار برنامه از CPU تا آن لحظه را برمی‌گرداند که با تقسیم بر CLOCKS_PER_SEC به ثانیه تبدیل می‌شود ...

وب‌سایت Virtual Judge این امکان را فراهم می‌کند که با ترکیب دلخواهی از سوالات وب‌سایت‌های مخزن سوالات برنامه‌نویسی همچون UVA ، Codeforces و خود سوالات ACM-ICPC ، مسابقه مجازی برگزار کرد. از این حیث برای تمرین تیم‌های مسابقات ACM-ICPC بسیار مناسب و کارا است ...

هنگام شرکت در مسابقات برنامه‌نویسی تایپ اسم تک تک هدرفایل‌های مورد نیاز برای اجرای برنامه به زبان ++C زمان نیاز دارد. هدر فایل bits/stdc++.h این زحمت را کم می‌کند. زمانی که این هدر را include می‌کنیم، تمام فایل‌های سرآیند استاندارد به برنامه اضافه می‌شوند و اصولا نیاز به اضافه کردن هدرفایل جدیدی نیست ...

برای حل سوال Graphical Editor باید هر خط از ورودی بررسی و اگه دستور معتبر بود اجرا شود. اما اگر دستور نامعتبر بود، باید کل خط نادیده گرفته شود. مشکل اینجاست که مشخص نیست چه داده‌هایی و به چه تعداد در اون خط وجود دارند ...

گاهی لازم است یک برنامه خارجی را از برنامه خودمان اجرا و خروجی آن را استفاده کنیم. این برنامه می‌تواند یک برنامه اجرایی دیگر یا یکی از ابزارهای سیستم عامل مانند ping یا حتی اجرای یک برنامه java باشد. آنچه که مهم است اجرا شدن از خط فرمان و تولید خروجی متنی است ...

منظور از ظرف یا نگهدارنده (Container) ساختمان داده‌ای‌ست که دسته‌ای از اطلاعات را در خود نگه می‌دارد. آنچه که این ساختمان‌ها را از هم متمایز می‌کند، نوع تخصیص حافظه، نوع دسترسی و کارایی درج و حذف عنصر در آنها است که به برخی از آنها کاربری‌های ویژه می‌دهد ...

ساختمان داده map (یا dictionary) از ابزارهای مهم و کاربردی هر زبان برنامه‌نویسی است که برای برقراری نگاشت بین هر نوع کلید و مقدار متناظر استفاده می‌شود. آرایه‌های معمولی یک عدد صحیح را به عنوان کلید به یک مقدار از هر نوع کلاس یا نوع داده نگاشت می‌کنند ...

فایل سرآیند (هدر فایل) algorithm از جمله فایل‌های سرآیند تعاریف کتابخانه‌ قالب استاندارد (STL) زبان برنامه‌نویسی ++C‌ است که به طور عمده شامل توابعی برای کار با مجموعه‌ای از داده‌ها (آرایه‌ها و لیست‌ها) است ...

اجتناب از بررسی تساوی در اعداد اعشاری اعداد اعشاری در محاسبات ریاضی - مانند عمل تقسیم یا محاسبه توابع مثلثاتی و غیره - ممکن است حاوی مقدار بسیار ناچیزی خطا باشند که عموما ناشی از عملیات گرد کردن و قطع کردن نتایج مراحل میانی محاسبات هستند ...

تعطیلات عید به این فکر افتادم که اگر حس درس و کار نداشتم، اوقات بیکاری را با کدنویسی متفرقه بگذرانم تا هم وقتم تلف نشود و هم چیزهای جدید یاد بگیرم. اولین ایده هم نوشتن بازی‌های فکری بود. چند بازی فکری مشهور و غیرمشهور را لیست کردم و بالاخره برای گام اول مین‌روب (Minesweeper) را انتخاب کردم ...

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

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

توابع دوست کلاس‌ها از‌ جمله موارد بحث برانگیز برنامه‌نویسی شی‌ءگرا به زبان ++C هستند. چرا که یکی از اصول اساسی شیءگرایی، یعنی پنهان‌سازی اطلاعات، را نقض می‌کنند. با این وجود به خاطر کاربردهای متعددی که دارند از حضورشان نمی‌توان چشم‌پوشی کرد ...

همانطور که می‌دانید، شیوه معرفی اشیاء کلاس‌های تعریف شده در ++C همانند متغیرهای عادی هستند. به عنوان مثال اگر کلاسی به نام myclass تعریف کرده باشیم، عبارت زیر یک شیء از این کلاس به نام a تعریف می‌کند: myclass a; اما اشیاء کلاس یک تفاوت اساسی با متغیرهای معمولی (مانند int ،float ،char و ...

یکی از مهمترین مباحث کاربردی هر زبان برنامه‌نویسی، اشاره‌گر و مفهوم آن است که کاربرد گسترده‌ای در شاخه ساختمان داده‌ها نیز دارد. در این فرصت با مفهوم اشاره‌گر و همینطور روش تعریف آن در زبان ++C آشنا می‌شوید ...

زبان برنامه‌نویسی C از دو نوع متغیر پشتیبانی می‌کند: متغیرهای معمولی و اشاره‌گرها (متغیرهای حاوی آدرس حافظه). زبان ++C نوع سومی را به این مجموعه اضافه کرده است: متغیرهای مرجع (Reference). متغیرهای مرجع از روی دو نوع دیگر ساخته می‌شود و به نوعی می‌توان گفت نام مستعار برای متغیر اصلی به حساب می‌آید ...

زبان برنامه‌نویسی ++C از کلاس‌های حافظه‌ (Storage Classes) مختلفی برای تعریف متغیرها پشتیبانی می‌کند. کلاس حافظه اتوماتیک (auto) این کلاس اصلی‌ترین کلاس حافظه زبان ++C محسوب می‌شود. متغیرهایی که توسط این کلاس تعریف می‌شوند، با خروج از محدوده تعریف به طور خودکار از بین می‌روند ...

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

یکی از امکانات جالب و مفید زبان ++C قالب‌ها (Templates) هستند که انعطاف زیادی به کدنویسی می‌دهند. فرض کنید در یک برنامه نیاز به تعویض مقادیر دو متغیر هست. یعنی مثلا می‌خواهیم مقادیر a و b را با هم عوض کنیم ...

زبان ++C همانند اکثر زبان‌های برنامه‌نویسی دیگر، ساختاری به نام آرایه دارد که امکان تعریف مجموعه‌ای از متغیرهای هم‌نوع (اصطلاحا مجموعه عناصر همگن) را فراهم می‌کند. چنین ساختاری به صورت زیر تعریف می‌شود: type name[number of elements]; که در آن type یکی از انواع داده‌های استاندارد ++C، ساختمان و یا کلاس است ...