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

می‌خواهیم یکسری پیام دیجیتالی را بین دو سیستم تبادل کنیم. در مقصد لازم است پیام‌ها از هم تفکیک شده باشند، تا بتوان آن‌ها را تفسیر کرد و به داده‌ی مدنظر رسید. جداسازی پیام‌ها چگونه امکان پذیر است؟ در این پست به بررسی الگوریتم COBS که یکی از راه‌های ممکن برای حل این مشکل است، می‌پردازیم. برای جداسازی پیام‌ها راه‌های مختلفی …

مشاهده بیشتر »

مقدار دهی اولیه آرایه | C-style array

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

مشاهده بیشتر »

به‌روزرسانی فایل gitignore | نادیده‌گرفتن فایل و دایرکتوری در Git

اگر بخواهیم Git فایل یا دایرکتوری‌هایی از repository را نادیده بگیرد، باید از gitignore استفاده کرد. به این ترتیب که در محل اصلی repository فایلی با نام gitignore. ایجاد می‌کنیم و در آن آدرس دایرکتوری‌ها، نام فایل‌ها یا حتا پسوند فایل‌های مدنظرمان را وارد می‌کنیم. مثلاً در اینجا در خط اول مشخص کردیم که Git دایرکتوری build و کل محتویاتش …

مشاهده بیشتر »

در عملگر تساوی، ثابت را سمت چپ بگذارید!

هنگامی که قرار است دو عبارت را با عملگر تساوی(==) مقایسه کنید، عادت خوب این است که همیشه سمت چپ را عبارتی قرار دهید که ثابت است: این عادت ساده اما اثر بخش می‌تواند مانع از ایجاد باگ در اثر عدم تایپ یکی از مساوی‌ها شود. اگر شما به دلیل اشتباه تایپی در برنامه کد زیر را بنویسید: کامپایلر به …

مشاهده بیشتر »

کلاس std::map | زبان برنامه نویسی ++C

در این پست می‌خواهیم سراغ کلاس std::map، یکی دیگر از data container های رایج در زبان ++C برویم. فرض کنید می‌خواهیم برنامه دیکشنری انگلیسی به فارسی بنویسیم. داده‌های ما در دیکشنری در یک سمت کلمات انگلیسی هستند و در سمت دیگر توضیحات فارسی این کلمات. کلمات انگلیسی بر خلاف توضیحات همیشه یکتا هستند. مثلاً شما می‌توانید “Home” و “House” با …

مشاهده بیشتر »

خطر اندیس متغیر در آرایه‌‌ | زبان برنامه نویسی C

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

مشاهده بیشتر »

کلاس std::vector | زبان برنامه نویسی ++C

یکی از انواع container class های تعریف شده در ++C، که در گروه آرایه‌های پویا(dynamic) قرار می‌گیرد، std::vector است. آرایه‌ی پویا به این معنی است که سایز آرایه می‌تواند در طول اجرای برنامه تغییر کند. این ویژگی به ما در استفاده بهینه‌تر از حافظه‌ کمک می‌کند. اگرچه در عوضش باید پردازشی صرف این تغییر کار کنیم که سرعت را از …

مشاهده بیشتر »

کلاس std::stirng | زبان برنامه نویسی ++C

یکی از کاربردی‌ترین بخش‌های زبان برنامه‌نویسی ++C/C مربوط می‌شود به کار با string یا رشته. دلیل این نام‌گذاری هم این است که رشته‌ای از کارکترها یک string را می‌سازند. این موضوع در زبان C ملموس‌تر است. چراکه ما به طور مستقیم متغیری از جنس string نداریم و برای داشتن یک رشته باید آرایه‌ای از جنس char تعریف کنیم. اگر چه …

مشاهده بیشتر »

چگونه به خط بعد برویم؟ | راهنمای استفاده از ‘n\’ و std::endl | زبان برنامه نویسی ++C

می‌خواهیم عبارت “!Hello DIGILOGIST” را در صفحه نمایش یا یک فایل متنی چاپ کنیم: شاید فکر کنید پردازنده به محض دیدن این دستور، کارکترها را برای مقصد ارسال می‌کند. اما در عمل این اتفاق نمی‌افتد. اجازه بدید با یک استعاره توضیح بدم. فرض کنید می‌خواهیم با تاکسی از ابتدای مسیر خطی به مقصدمان برویم. احتمالاً شما هم این تجربه را …

مشاهده بیشتر »

Const Object | زبان برنامه نویسی ++C

احتمالاً با تعریف متغیر ثابت از انواع پایه مثل int آشنا باشید. نکته‌ی زیاد خاصی ندارد. فقط باید بدانید که تنها جایی که کامپایلر به شما اجازه‌ی مقداردهی آن را می‌دهد، هنگام تعریفش است. حالا می‌خواهیم بپردازیم به const object. در اینجا هم وقتی شی را به صورت const تعریف می‌کنیم، اجازه نداریم که data memberها را در جایی به …

مشاهده بیشتر »