<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/posts/rss.xsl"?>
<rss version="2.0">
<channel>

<title>https://hadi011.loxblog.com</title>
<link>https://hadi011.loxblog.com</link>
<description></description>
<language>fa-ir</language>
<generator>loxblog.com</generator>
<copyright>loxblog.com</copyright>


<item>
<title>کدام زبان برنامه‌ نویسی پیچیده‌ تر است؟</title>
<link>https://hadi011.loxblog.com/کدام-زبان-برنامه-نویسی-پیچیده-تر-است</link>
<guid>https://hadi011.loxblog.com/کدام-زبان-برنامه-نویسی-پیچیده-تر-است</guid>

<description><![CDATA[

حتما تاکنون نام زبان&zwnj;های برنامه&zwnj;نویسی زیادی را شنیده&zwnj;اید. شاید هم خودتان جزو برنامه&zwnj;نویسان حرفه&zwnj;ای یا تازه&zwnj;کاری هستید که در کدنویسی دستی بر آتش دارید. اما آیا تاکنون به این موضوع فکر کرده&zwnj;اید که کدام زبان&zwnj;برنامه&zwnj;نویسی پیچیده&zwnj;تر است؟
شاید در دنیای امروز جاوا اسکریپت خیلی کاربرد داشته باشد ولی در بسیاری مواقع این زبان هم از همان رویه گذشته تقلید می&zwnj;کند. زبان&zwnj;هایی چون کوبول، سی، سی پلاس&zwnj;پلاس، سی&zwnj;شارپ، جاوا و پایتون در واقع زبان&zwnj;های رویه&zwnj;ای هستند. جاوا اسکرپیت هم از این قاعده مستثنی نیست ولی این زبان یک تفاوت مهم دارد. جاوا اسکریپت با مشکل پیچیدگی کدنویسی روبرو است.
اما سوال اصلی اینجا است که چرا زبانی چون جاوا اسکریپت با مشخصاتی مشابه دیگر زبان&zwnj;ها که مشکل پیچیدگی کدنویسی دارد، تا این اندازه محبوب شده و عملکرد فوق&zwnj;العاده&zwnj;ای دارد؟ پاسخ در موقتی بودن آن است. جاوا اسکریپت در تاریخچه توسعه&zwnj;ی نرم افزاری در جایگاه خاصی قرار گرفته که ناگهان از یک زبان برنامه نویسی متوسط به یک زبان برنامه&zwnj;نویسی برای توسعه نرم&zwnj;افزاری سطح بالا تبدیل شده است. جاوا اسکریپت این جایگاه را مدیون انقلاب در دنیای موبایل و ابزارهای قابل حمل است.
اخیرا توسعه&zwnj;دهندگان حرفه&zwnj;ای فرصت کافی برای مجادله و برطرف کردن مشکلات با طراحان گران&zwnj;قیمت را ندارند و به همین دلیل معمولا منابع مورد نیاز به سختی در اختیار آنها قرار می&zwnj;گیرد. متاسفانه زمانی برای پاکسازی روابط وجود ندارد و حتی مدیران با توجه به اینکه نوآوری&zwnj;های بیشتری نیاز دارند، در این بخش زمانی را صرف نمی&zwnj;کنند.
نکته&zwnj;ی مبهم جایی است که برنامه&zwnj;نویسان جاوا اسکریپت به این نتیجه می&zwnj;رسند که هنوز در اواخر سال ۲۰۰۰ میلادی قرار دارند و این موضوع در بررسی&zwnj;های آماری بیشتر به چشم می&zwnj;خورد. وب&zwnj;سایت Seerene که در زمینه&zwnj;ی ارائه&zwnj;ی نتایج تحلیلی و آماری فعالیت می&zwnj;کند، با بررسی بیش از ۴۰۰ میلیارد خط از کدهای نوشته شده برای شناسایی و ارائه&zwnj;ی تصویری درست از زبان&zwnj;های برنامه&zwnj;نویسی، نتایجی را به صورت اینفوگرافیک منتشر کرده که باعث می&zwnj;شود ذهن برنامه&zwnj;نویسان بیش از پیش درگیر شود.
در ادامه می&zwnj;توانیم با بررسی اینفوگرافیک ارائه شده ببینیم پیچیده&zwnj;ترین، ناکارامدترین و گیج&zwnj;کننده&zwnj;ترین زبان&zwnj;های برنامه&zwnj;نویسی کدام&zwnj;ها هستند.
&nbsp;]]></description>

<pubDate>Fri, 26 Jun 2026 01:28:08 +0330</pubDate>
</item>


<item>
<title>کدام زبان برنامه نویسی بهتر است</title>
<link>https://hadi011.loxblog.com/کدام-زبان-برنامه-نویسی-بهتر-است</link>
<guid>https://hadi011.loxblog.com/کدام-زبان-برنامه-نویسی-بهتر-است</guid>

<description><![CDATA[

کدام زبان برنامه نویسی بهتر است
شما اگر قصد برنامه نویسی دادرید بد نیست که نمودار های زیر را ببینید
&nbsp;

&nbsp;
&nbsp;
]]></description>

<pubDate>Fri, 26 Jun 2026 01:28:08 +0330</pubDate>
</item>


<item>
<title>لیستی از محبوب ترین زبان‌های برنامه نویسی در ژانویه 2016</title>
<link>https://hadi011.loxblog.com/لیستی-از-محبوب-ترین-زبانهای-برنامه-نویسی-در-ژانویه-2016</link>
<guid>https://hadi011.loxblog.com/لیستی-از-محبوب-ترین-زبانهای-برنامه-نویسی-در-ژانویه-2016</guid>

<description><![CDATA[

همانطور که می&zwnj;دانید جاوا موفق به دریافت جایزه زبان&zwnj; برنامه نویسی سال توسط TIOBE شد. دلیل دریافت این جایزه، بیشترین و بزرگترین افزایش محبوبیت در طول یک سال بوده است. (بیش از 5.94 درصد افزایش)
پس از جاوا نیز زبان&zwnj;های برنامه نویسی نظیر ویژوال بیسیک.نت (1.51درصد) و پایتون (1.24درصد) بیشترین افزایش در محبوبیت را کسب کرده اند. اما در نگاه اول به نظر کمی عجیب می&zwnj;رسد که چگونه یک زبان برنامه نویسی قدیمی مانند جاوا به این جایزه رسیده است. به خصوص اگر شما از این قضیه مطلع باشید که برای بار نخست جاوا حدوداً 10سال پیش این جایزه را به دست آورده بود.
دلیل آن می&zwnj;تواند وجود اندروید و توسعه نرم افزار&zwnj;های اندرویدی با قدرت گرفت از جاوا باشد. با ادغام چند زبان مدرن نظیر لامبادا و استریمز با خود، آینده روشنی را برای این زبان برنامه نویسی قدیمی رقم زده است و به نظر نمی&zwnj;رسد که به همین زودی&zwnj;ها&nbsp; از محبوبیت این زبان برنامه نویسی پیشرفته کاسته شود.
اما یکی دیگر از دلایل این پیشرفت جاوا می&zwnj;تواند نزول شدید زبان برنامه نویسی C باشد. اپل در سال گذشته عنوان کرد که دیگر قصد دارد برای توسعه سیستم عامل خود، به جای زبان برنامه نویسی شی گرای C از زبان برنامه نویسی اختصاصی خود یعنی سوئیفت استفاده نماید. این امر موجب شد تا زبان شی گرای C با یک نزولی شدید( 5.88- درصد) مواجه شود و به رده دوم از محبوب ترین زبان&zwnj;های برنامه نویسی دنیا سقوط کند.
بنابر این می&zwnj;توان انتظار داشت که در سال جدید میلادی، زبان&zwnj;های برنامه نویسی جاوا، پی اچ پی( با نسخه جدید خود)، جاوا اسکریپت و سوئیفت در بین 10 زبان برنامه نویسی برتر سال 2016 جای بگیرند]]></description>

<pubDate>Fri, 26 Jun 2026 01:28:08 +0330</pubDate>
</item>


<item>
<title>اینفوگرافیک : چه زبان برنامه نویسی را برای شروع انتخاب کنم؟</title>
<link>https://hadi011.loxblog.com/اینفوگرافیک--چه-زبان-برنامه-نویسی-را-برای-شروع-انتخاب-کنم</link>
<guid>https://hadi011.loxblog.com/اینفوگرافیک--چه-زبان-برنامه-نویسی-را-برای-شروع-انتخاب-کنم</guid>

<description><![CDATA[

در اینفوگرافیک زیر مقایسه کاملی بین زبان های برنامه نویسی شده است و همین طور ارتباط آن ها با فیلم ارباب حلقه ها اشاره شده است 
]]></description>

<pubDate>Fri, 26 Jun 2026 01:28:08 +0330</pubDate>
</item>


<item>
<title>قسمت اول آموزش C – مقدمه</title>
<link>https://hadi011.loxblog.com/قسمت-اول-آموزش-c--مقدمه</link>
<guid>https://hadi011.loxblog.com/قسمت-اول-آموزش-c--مقدمه</guid>

<description><![CDATA[
&nbsp;آموزش زبان های مختلف برنامه نویسی از سطح مبتدی و پایه تا سطح پیشرفته ی آن است و از آنجا که زبان C و ++C جزو زبان های پایه و بنیادین برنامه نویسی هستند قصد داریم تا به عنوان اولین آموزش برنامه نویسی این دو زبان را که تقریبا به هم نزدیک هستند را شروع به آموزش کنیم و در طی جلساتی این زبان ها را به شما دوستان عزیز بیاموزیم . امیدوارم که&nbsp;برای دوستان علاقه مند به برنامه نویسی مفید واقع بشه و با نظرات و همراهی شما تا پایان بتوانیم دوره ی خوبی را برگزار کرده باشیم .
تاریخچه C
برای بررسی تاریخچه زبان C باید به سال ۱۹۶۷ بازگردیم که مارتین ریچاردز زبان BCPL را برای نوشتن نرم افزارهای سیستم عامل و کامپایلر در دانشگاه کمبریج ابداع کرد. سپس در سال ۱۹۷۰ کن تامپسون زبان B را بر مبنای ویژگیهای زبان BCPL نوشت و از آن برای ایجاد اولین نسخه های سیستم عامل Unix در آزمایشگاههای بل استفاده کرد.
زبان C در سال ۱۹۷۲ توسط دنیس ریچی از روی زبان B و BCPL در آزمایشگاه بل ساخته شد و ویژگیهای جدیدی همچون نظارت بر نوع داده ها نیز به آن اضافه شد. ریچی از این زبان برای ایجاد سیستم عامل Unix استفاده کرد اما بعدها اکثر سیستم عاملهای دیگر نیز با همین زبان نوشته شدند. این زبان با سرعت بسیاری گسترش یافت و چاپ کتاب &ldquo;The C Programming Language&rdquo; در سال ۱۹۷۸ توسط کرنیگان و ریچی باعث رشد روزافزون این زبان در جهان شد.
متاسفانه استفاده گسترده این زبان در انواع کامپیوترها و سخت افزارهای مختلف باعث شد که نسخه های مختلفی از این زبان بوجود آید که با یکدیگر ناسازگار بودند. در سال ۱۹۸۳ انستیتوی ملی استاندارد آمریکا (ANSI) کمیته ای موسوم به X3J11 را را مامور کرد تا یک تعریف فاقد ابهام و مستقل از ماشین را از این زبان تدوین نماید.در سال ۱۹۸۹ این استاندارد تحت عنوان ANSI C به تصویب رسید و سپس در سال ۱۹۹۰، سازمان استانداردهای بین المللی (ISO) نیز این استاندارد را پذیرفت و مستندات مشترک آنها تحت عنوان ANSI/ISO C منتشر گردید.
در سالهای بعد و با ظهور روشهای برنامه نویسی شی گرا نسخه جدیدی از زبان C بنام C++ توسط بیارنه استراوستروپ در اوایل ۱۹۸۰ در آزمایشگاه بل توسعه یافت. در C++ علاوه بر امکانات جدیدی که به زبان C اضافه شده است، خاصیت شی گرایی را نیز به آن اضافه کرده است.
با گسترش شبکه و اینترنت، نیاز به زبانی احساس شد که برنامه های آن بتوانند برروی هر ماشین و هر سیستم عامل دلخواهی اجرا گردد. شرکت سان مایکروسیستمز در سال ۱۹۹۵ میلادی زبان Java را برمبنای C و C++ ایجاد کرد که هم اکنون از آن در سطح وسیعی استفاده می شود و برنامه های نوشته شده به آن برروی هر کامپیوتری که از Java پشتیبانی کند(تقریبا تمام سیستمهای شناخته شده) قابل اجرا می باشد. شرکت مایکروسافت در رقابت با شرکت سان، در سال ۲۰۰۲ زبان جدیدی بنام C# (سی شارپ) را ارائه داد که رقیبی برای Java بشمار می رود.
برنامه نویسی ساخت یافته
در دهه ۱۹۶۰ میلادی توسعه نرم افزار دچار مشکلات عدیده ای شد. در آن زمان سبک خاصی برای برنامه نویسی وجود نداشت و برنامه ها بدون هیچگونه ساختار خاصی نوشته می شدند. وجود دستور پرش (goto) نیز مشکلات بسیاری را برای فهم و درک برنامه توسط افراد دیگر ایجاد می کرد، چرا که جریان اجرای برنامه مرتبا دچار تغییر جهت شده و دنبال کردن آن دشوار می گردید. لذا نوشتن برنامه ها عملی بسیار زمان بر و پرهزینه شده بود و معمولا اشکال زدایی, اعمال تغییرات و گسترش برنامه ها بسیار مشکل بود. فعالیتهای پژوهشی در این دهه باعث بوجود آمدن سبک جدیدی از برنامه نویسی بنام روش ساختیافته گردید؛ روش منظمی که باعث ایجاد برنامه هایی کاملا واضح و خوانا گردید که اشکال زدایی و خطایابی آنها نیز بسیار ساده تر بود.
اصلی ترین نکته در این روش عدم استفاده از دستور پرش (goto) است. تحقیقات بوهم و ژاکوپینی نشان داد که می توان هر برنامه ای را بدون دستور پرش و فقط با استفاده از ۳ ساختار کنترلی ترتیب، انتخاب و تکرار نوشت.
ساختار ترتیب، همان اجرای دستورات بصورت متوالی (یکی پس از دیگری) است که کلیه زبانهای برنامه نویسی در حالت عادی بهمان صورت عمل می کنند.
ساختار انتخاب به برنامه نویس اجازه می دهد که براساس درستی یا نادرستی یک شرط، تصمیم بگیرد کدام مجموعه از دستورات اجرا شود.
ساختار تکرار نیز به برنامه نویسان اجازه می دهد مجموعه خاصی از دستورات را تا زمانیکه شرط خاصی برقرار باشد، تکرار نماید.
هر برنامه ساختیافته از تعدادی بلوک تشکیل می شود که این بلوکها به ترتیب اجرا می شوند تا برنامه خاتمه یابد(ساختار ترتیب). هر بلوک می تواند یک دستورساده مانند خواندن، نوشتن یا تخصیص مقدار به یک متغیر باشد و یا اینکه شامل دستوراتی باشد که یکی از ۳ ساختار فوق را پیاده سازی کنند. نکته مهم اینجاست که درمورد دستورات داخل هر بلوک نیز همین قوانین برقرار است و این دستورات می توانند از تعدادی بلوک به شرح فوق ایجاد شوند و تشکیل ساختارهایی مانند حلقه های تودرتو را دهند.
نکته مهم اینجاست که طبق قوانین فوق یک حلقه تکرار یا بطور کامل داخل حلقه تکرار دیگر است و یا بطور کامل خارج آن قرار می گیرد و هیچگاه حلقه های روی هم افتاده نخواهیم داشت.
از جمله اولین تلاشها در زمینه ساخت زبانهای برنامه نویسی ساختیافته، زبان پاسکال بود که توسط پروفسور نیکلاس ویرث در سال ۱۹۷۱ برای آموزش برنامه نویسی ساختیافته در محیطهای آموزشی ساخته شد و بسرعت در دانشگاهها رواج یافت. اما بدلیل نداشتن بسیاری از ویژگیهای مورد نیاز مراکز صنعتی و تجاری در بیرون دانشگاهها موفقیتی نیافت.
کمی بعد زبان C ارائه گردید که علاوه بر دارا بودن ویژگیهای برنامه نویسی ساختیافته بدلیل سرعت و کارایی بالا مقبولیتی همه گیر یافت و هم اکنون سالهاست که بعنوان بزرگترین زبان برنامه نویسی دنیا شناخته شده است.
مراحل اجرای یک برنامه C
برای اجرای یک برنامه C ابتدا باید آن را نوشت. برای اینکار می توان از هر ویرایشگر متنی موجود استفاده کرد و سپس فایل حاصل را با پسوند .C ذخیره نمود (فایلهای C++ با پسوند .CPP ذخیره می گردند). به این فایل، کد مبدا (source code) گفته می شود. مرحله بعدی تبدیل کد مبدا به زبان ماشین است که به آن کد مقصد (object code) گفته می شود. همانطورکه قبلا نیز گفته شد برای اینکار از یک برنامه مترجم بنام کامپایلر استفاده می شود. کامپایلرهای متعددی برای زبان C توسط شرکتهای مختلف و برای سیستم عاملهای مختلف نوشته شده است که می توانید برحسب نیاز از هریک از آنها استفاده نمایید. اما هنوز برنامه برای اجرا آماده نیست. معمولا برنامه نویسان از در برنامه های خود از یک سری از کدهای از پیش آماده شده برای انجام عملیات متداول (مانند محاسبه جذر و یا سینوس) استفاده می کنند که برنامه آنها قبلا نوشته و ترجمه شده است. این برنامه ها یا در قالب کتابخانه های استاندارد توسط شرکتهای ارائه کننده نرم افزار عرضه شده است و یا توسط دیگر همکاران برنامه نویس اصلی نوشته و در اختیار وی قرار داده شده است. در این مرحله باید کد مقصد برنامه اصلی با کدهای مربوط به این برنامه های کمکی پیوند زده شود. برای اینکار نیاز به یک پیوند زننده (Linker) داریم و نتیجه این عمل یک فایل قابل اجرا خواهد بود (در ویندوز این فایل پسوند .EXE خواهد داشت). مرحله بعدی اجرای برنامه و دادن ورودیهای لازم به آن و اخذ خروجیها می باشد. در شکل زیر این مراحل نشان داده شده اند.
مسلما طی مراحل بالا برای اجرای هر برنامه زمانبر می باشد، بهمین دلیل اکثر تولید کنندگان کامپایلرها، محیطهایی را برای برنامه نویسی ارائه کرده اند که کلیه مراحل بالا را بطور اتوماتیک انجام می دهند.
به این محیطها IDE (Integrated Development Environment) یا محیط مجتمع توسعه نرم افزار گفته می شود. این محیطها دارای یک ویرایشگر متن می باشند که معمولا دارای خواص جالبی همچون استفاده از رنگهای مختلف برای نشان دادن اجزای مختلف برنامه مانند کلمات کلیدی، و یا قابلیت تکمیل اتوماتیک قسمتهای مختلف برنامه می باشد. پس از نوشتن برنامه و با انتخاب گزینه ای مانند Run کلیه عملیات فوق بطور اتوماتیک انجام شده و برنامه اجرا می گردد. علاوه براین، این محیطها معمولا دارای امکانات اشکالزدایی برنامه (Debug) نیز می باشند که شامل مواردی همچون اجرای خط به خط برنامه و یا دیدن محتویات متغیرها در زمان اجرا است. چند محیط معروف برنامه نویسی عبارتند از :
Borland C++ 3.1 برای محیط DOS Borland C++ از نسخه ۴ به بالا برای Windows Microsoft Visual C++ برای محیط Windows Borland C++ Builder برای محیط Windows
برای شروع ما از محیط Borland C++ 3.1 تحت Dos که نحوه کار ساده تری نسبت به سایرین دارد استفاده می کنیم. پس از نصب این نرم افزار، برنامه BC.exe را اجرا کنید تا وارد محیط borland c شوید.
همانطور که می بینید، این محیط از ۳ قسمت اصلی تشکیل شده است :
- بخش ویرایش برنامه : بخش آبی رنگ وسط می باشد که در حقیقت یک ویرایشگر است که برنامه در آن تایپ می شود. همانطور که می بینید در این ویرایشگر از رنگهای مختلف برای نشان دادن قسمتهای مختلف برنامه استفاده می شود. مثلا برای کلمات کلیدی از رنگ سفید استفاده شده است.
- بخش منوهای کاری : این بخش که در قسمت بالا واقع شده است،- حاوی تعدادی منو (گزینه) برای انجام وظایف مختلف است. خلاصه این عملیات عبارتند از : o منوی File : عملیاتی مانند باز کردن و یا ذخیره یک برنامه o منوی Edit : عملیات ویرایش مانند حذف،o کپی و یا چسباندن یک قسمت از برنامه o منوی Search : جستجوی و یا تعویض یک متن در برنامه o منوی Run : اجرای برنامه بصورت کامل یا دستور به دستور o منوی Compile : عملیات مربوط به کامپایل و پیوند برنامه o منوی Debug : عملیات مربوط به اشکالزدایی مانند دیدن مقادیر متغیرها در زمان اجرا o منوی Project : عملیات مربوط به مدیریت برنامه هایی که شامل چندین فایل مستقل هستند (پروژه) o منوی Options : عملیات مربوط به تنظیمات سیستم مانند نحوه کامپایل و یا رنگ پیش فرض محیط o منوی Windows : عملیات مربوط به پنجره های باز فعلی (مربوط به چندین برنامه یا نمایش متغیرها و &hellip; )
خطاهای برنامه نویسی
بنظر می رسد خطاها جزء جداناپذیر برنامه ها هستند. بندرت می توان برنامه ای نوشت که در همان بار اول بدرستی و بدون هیچگونه خطایی اجرا شود. اما خطاها از لحاظ تاثیری که بر اجرای برنامه ها می گذارند، متفاوتند. گروهی ممکن است باعث شوند که از همان ابتدا برنامه اصلا کامپایل نشود و گروه دیگر ممکن است پس از گذشت مدتها و در اثر دادن یک ورودی خاص به برنامه، باعث یک خروجی نامناسب و یا یک رفتار دور از انتظار (مانند قفل شدن برنامه) شوند. بطور کلی خطاها به دو دسته تقسیم می شوند:
خطاهای نحوی (خطاهای زمان کامپایل): این خطاها در اثر رعایت نکردن قواعد دستورات زبان C و یا تایپ اشتباه یک دستور بوجود می آیند و در همان ابتدا توسط کامپایلر به برنامه نویس اعلام می گردد. برنامه نویس باید این خطا را رفع کرده و سپس برنامه را مجددا کامپایل نماید. لذا معمولا این قبیل خطاها خطر کمتری را در بردارند.
خطاهای منطقی (خطاهای زمان اجرا): این دسته خطاها در اثر اشتباه برنامه نویس در طراحی الگوریتم درست برای برنامه و یا گاهی در اثر درنظر نگرفتن بعضی شرایط خاص در برنامه ایجاد می شوند. متاسفانه این دسته خطاها در زمان کامپایل اعلام نمی شوند و در زمان اجرای برنامه خود را نشان می دهند. بنابراین، این خود برنامه نویس است که پس از نوشتن برنامه باید آن را تست کرده و خطاهای منطقی آن را پیدا کرده و رفع نماید. متاسفانه ممکن است یک برنامه نویس خطای منطقی برنامه خود را تشخیص ندهد و این خطا پس از مدتها و تحت یک شرایط خاص توسط کاربر برنامه کشف شود. بهمین دلیل این دسته از خطاها خطرناکتر هستند. خود این خطاها به دو دسته تقسیم می گردند:
a. خطاهای مهلک : در این دسته خطاها کامپیوتر بلافاصله اجرای برنامه را متوقف کرده و خطا را به کاربر گزارش می کند. مثال معروف این خطاها،b. خطای تقسیم بر صفر می باشد.
b. خطاهای غیرمهلک : در این دسته خطا،d. اجرای برنامه ادامه می یابد ولی برنامه نتایج اشتباه تولید می نماید. بعنوان مثال ممکن است دراثر وجود یک خطای منطقی در یک برنامه حقوق و دستمزد،e. حقوق کارمندان اشتباه محاسبه شود و تا مدتها نیز کسی متوجه این خطا نشود!
با توجه به آنچه گفته شد، در می یابیم که رفع اشکال برنامه ها بخصوص خطاهای منطقی از مهمترین و مشکلترین وظایف یک برنامه نویس بوده و گاهی حتی سخت تر از خود برنامه نویسی است! بهمین دلیل است که بسیاری از شرکتها(همانند مایکروسافت) ابتدا نسخه اولیه نرم افزار خود را در اختیار کاربران قرار می دهند تا اشکالات آن گزارش شده و رفع گردد. بسیار مهم است که در ابتدا سعی کنید برنامه ای بنویسید که حداقل خطاها را داشته باشد، در گام دوم با آزمایش دقیق برنامه خود هرگونه خطای احتمالی را پیدا کنید و در گام سوم بتوانید دلیل بروز خطا را پیدا کرده و آنرا رفع نمایید. هر سه عمل فوق کار سختی بوده و نیاز به تجربه و مهارت دارد.
آخرین نکته اینکه در اصطلاح برنامه نویسی به هر گونه خطا، bug و به رفع خطا debug گفته می شود.
یک برنامه&nbsp;نمونه
در این قسمت برای آشنایی اولیه با زبان C یک برنامه نمونه آورده شده است که بدون هیچ تغییری در محیط&nbsp;BorlandCPP &nbsp;قابل اجرا است.
درمورد برنامه فوق به نکات زیر توجه کنید :
- خط اول یک توضیح درمورد برنامه است. در زبان C برای توضیحات یک خطی از علامت // استفاده می گردد. اما چنانچه توضیحات بیش از یک خط بود،- آن را با علامت /* شروع کرده و با */ پایان دهید. کامپایلر از این توضیحات صرفنظر خواهد کرد. این توضیحات باعث می شوند که برنامه شما خواناتر شده و دیگران بهتر آن را درک کنند.
- هر دستوری که با علامت # شروع شود،- یک دستور C نیست،- بلکه جزو دستورات پیش پردازنده محسوب می گردد. دستورات پیش پردازنده،- دستوراتی هستند که توسط کامپایلر قبل از شروع به کامپایل انجام می شوند. بعنوان مثال دستور #include باعث می شود که تعاریف اولیه مربوط به توابعی (زیربرنامه هایی) که قصد استفاده از آنها را داریم به برنامه اضافه شود. در مثال بالا برای استفاده از توابع printf و scanf که در کتابخانه استاندارد C تعریف شده اند،- فایل سرآمد &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stdio.h را که این توابع در آن تعریف شده اند را استفاده کرده ایم.
- هر برنامه C باید دارای تابعی به نام main باشد که اجرای برنامه از آن شروع می شود و در حقیقت همان برنامه اصلی است. البته می توان هر تعداد دیگری تابع (زیربرنامه) نیز تعریف کرد،- اما وجود تابع main الزامی است. دقت کنید که گرچه این تابع پارامتر ورودی ندارد،- اما از پرانتز باز و بسته تنها استفاده شده است.
- در زبان C هر بلوک برنامه با علامت { آغاز شده و با } پایان می یابد. این دو معادل دستورات begin و end در زبانهای دیگر ازجمله پاسکال می باشند که برای سادگی زبان انتخاب شده اند.
دو خط بعدی به تعریف متغیرهای radius و area می پردازد. در زبان C قبل از استفاده از هر متغیری باید آن را اعلان نمایید. اعلان متغیر شامل نام و نوع متغیر است. در مثال فوق،- متغیر radius از نوع عدد صحیح(integer) و متغیر area از نوع عدد اعشاری (float) تعریف شده اند.
- توابع printf و scanf جزو کتابخانه استاندارد C محسوب می گردند و به ترتیب برای چاپ اطلاعات در خروجی استاندارد (نمایشگر) و دریافت اطلاعات از ورودی استاندارد (صفحه کلید) استفاده می شوند. برای چاپ رشته مورد نظر باید آنها را در داخل علامت &rdquo; قرار داد. درمورد این توابع بعداد توضیح خواهیم داد.
- دقت کنید که در پایان هر دستورالعمل از علامت ; استفاده شده است. در مجموع C یک زبان قالب آزاد است و شما می توانید دستورات را به هر نحوی که دوست دارید قرار دهید (مثلا چند دستور در یک خط از برنامه). تنها چیزی که نشاندهنده پایان یک دستور است،- علامت ; است(و نه انتهای خط).
-از آنجا که C یک زبان قالب آزاد است،- می توان با استفاده از مکان نوشتن دستورات شکل بهتری به برنامه داد. بعنوان مثال دقت کنید که پس از شروع تابع main،- دستورات حدود ۳ کاراکتر جلوتر نوشته شده اند. به این نحوه نوشتن دستورات دندانه گذاری می گویند. بطور کلی هربار که بلوک جدیدی آغاز می شود،- باید آن را کمی جلوتر برد. این مسئله باعث جدا شدن بلوکها از یکدیگر و خوانایی بهتر برنامه می شود.
- در پایان برنامه و در داخل مستطیل خاکستری،- یک نمونه از اجرای برنامه که شامل یک ورودی و خروجی نمونه است،- آورده شده است.]]></description>

<pubDate>Fri, 26 Jun 2026 01:28:08 +0330</pubDate>
</item>


<item>
<title>قسمت دوم آموزش C – مقدمات</title>
<link>https://hadi011.loxblog.com/قسمت-دوم-آموزش-c--مقدمات</link>
<guid>https://hadi011.loxblog.com/قسمت-دوم-آموزش-c--مقدمات</guid>

<description><![CDATA[
این زبان تکامل یافته زبان BCPL میباشد که طراح آن مارتین ریچاردز است ، و زبان BCPL از زبان B که طراح آن کن تامپسون می باشد ، نتیجه شده است.
زبان C معمولا یک زبان میانی نامیده می شود . این بدان معنی نیست که آموزش این زبان مشکل است ، یا قدرت آن از زبان های برنامه سازی مثل پاسکال و بیسیک کمتر است و یا این که مشکلاتی مشابه زبان اسمبلی برای برنامه نویس ایجاد می کند.علت میانی بودن زبان C این است که عناصر زبان های سطح بالا را با خصیصه تابعی زبان اسمبلی درهم آمیخته است.
سطوح زبان های برنامه سازی زبان C همانند سایر زبانهای میانی با مفاهیم بیت ، بایت و آدرس که از عناصرابتدایی ماشین هستند سر و کار دارد . یعنی در این زبان می توان محتویات بیت ها و بایت ها را تیز تغییر داد.
برنامه های نوشته شده به زبان C براحتی از ماشینی به ماشین دیگر قابل انتقال می باشند . مثلا برنامه نوشته شده برای کامپیوتر APPL در کامپیوترهای IBM قابل اجرا است این خصیصه را قابل حمل بودن (Portability) زبان می گویند .
کلیه زبان های برنامه سازی سطح بالا و میانی دارای نوعهای داده (data types) هستند . هر نوع داده ، مجموعه ای از مقادیر را مشخص می کند که اعمال خاصی روی آنها قابل انجام است . نوع داده ای که در اکثر زبانها وجود دارد عبارتند از : اعداد صحیح ، کاراکتری و اعداد اعشاری . C دارای ۵ نوع داده اصلی است که در آن تقریبا تبدیل هر نوع داده به نوع دیگر امکان پذیر است . مثلا در یک عبارت می توان نوع کاراکتری را با نوع عددی صحیح و یا اعشاری ترکیب کرد زبان C خطای زمان اجرا مثل &nbsp;boundray checking را چک نمی کند . منظور از boundray checking این است که در آرایه ها تجاوز از حدود مشخص شده ، به راحتی امکان پذیر بوده و از نظر کامپایلر با خطایی مواجه نمیشود. این مساله برمیگردد به این که در زبان C آرایه یک اشاره گر (pointer) است .
در این راستا ، نوع پارامترها و آرگومان های توابع نیز در گونه های قدیمی C با یکدیگر مطابقت نشده و از نظر کامپایلر با خطا مواجه نمی شد ولی در گونه های جدید C با معرفی الگوی تابع (Function prototype) این مشکل رفع شده است.
&nbsp;Cهمانند زبان های &nbsp;ALGOL، PASCAL ، و&hellip; یک زبان ساخت یافته است. یک زبان برنامه سازی ساخت یافته امکانات زیادی ، از جمله استفاده از چند ساختار حلقه سازی مثل &nbsp;while، do-while ، forو&hellip; را فراهم می کند . در این گونه زبان ها از goto به ندرت استفاده می شود و نوشتن دستورات برنامه در هر ستونی از خط و در هر جای فایل امکان پذیر بوده ، مثل زبان فرترن مقید به ستون های خاصی نیستند.
استفاده از زیربرنامه ها و بلاک ها نیز از خصیصه های این نوع زبان ها هستند . بعضی از زبانهای ساخت یافته و غیرساخت یافته هر برنامه در زبان C دارای خصیصه هایی است که بعضی از آنها عبارتند از :
۱ &ndash; در زبان C هر دستور برنامه به یک ;ختم می شود.
۲ &ndash; هر دستور میتواند درچند خط ادامه داشته و یک خط ممکن است شامل چند دستور باشد .
۳ &ndash; حداکثر طول یک خط برنامه ۲۵۴کاراکتر است.
۴ &ndash; &nbsp;در زبان C برنامه نویس می تواند در هر نقطه از برنامه ، با استفاده از علائم {&nbsp; و } یک بلاک را مشخص کرده و هر متغیری را که می خواهد در آنجا تعریف نماید .
برای داشتن توضیحات در برنامه کافی است آنها را دربین &nbsp;/*و */ قرار داد.
امروزه C در اکثر امور برنامه نویسی مورد استفاده قرار می گیرد . زیرا این زبان هم دارای خصیصه قابل حمل بودن است و هم دارای کارآیی خوبی می باشد وسرعت زیاد C بر محبوبیت آن افزوده است .
مساله قابل حمل بودن ، یک مساله بسیارمهم است زیرا هم موجب صرفه جویی دروقت شده و هم باعث صرفه جویی در هزینه ها می گردد . زبان C فقط دارای ۳۲ کلمه کلیدی است که ۲۷ کلمه کلیدی آن توسط ریچی) طراح زبان ( معرفی شده و ۵ کلمه کلیدی دیگر توسط موسسه استاندارد سازی زبان به آن اضافه شده است. این تعداد در مقایسه با ۱۵۹ کلمه کلیدی که در زبان بیسیک وجود دارد قابل توجه است .
کلمات کلیدی زبان C
auto | double | int | struct | break | else | long | switch | case | enum | register | typedef | char | extern | return | union | const | float | short | unsigned | continue | for | signed | void | default | goto | sizeof | volatile | do | if | static | while
بعضی از کامپایلرها علاوه بر ۳۲ کلمه کلیدی کلمات کلیدی دیگری به زبان اضافه نموده اند.
| asm | ess |- ds |- es |- ss | cdecl | far | huge | intrrupt | near | pascal |
کلیه کلمات کلیدی در زبان C به حروف کوچک نوشته می شوند . چون در این زبان بین حروف کوچک و بزرگ تفاوت است ، به عنوان مثال کلمه &nbsp;else یک کلمه کلیدی است.]]></description>

<pubDate>Fri, 26 Jun 2026 01:28:08 +0330</pubDate>
</item>


<item>
<title>قسمت چهارم آموزش C – عملگرها</title>
<link>https://hadi011.loxblog.com/قسمت-چهارم-آموزش-c--عملگرها</link>
<guid>https://hadi011.loxblog.com/قسمت-چهارم-آموزش-c--عملگرها</guid>

<description><![CDATA[
&nbsp;عملگرها نمادهایی هستند که برای انجام اعمال خاصی مورداستفاده قرارمیگیرند. عملگرها در زبان C از تنوع زیادی برخوردارند . در C چهار دسته عملگر به نامهای ( محاسباتی ، رابطه ای ، منطقی و دستکاری بیت ها ) وجود دارند که آنها را بررسی می کنیم .
عملگرهای محاسباتی
ردیف | عملگر | نام |
۱ | &ndash; | تفریق و منهای یکانی | x-y 2 | + | جمع | x+y 3 | * | ضرب | x*y 4 | / | تقسیم | x/y 5 | % | باقیمانده تقسیم | x%y 6 | &mdash; | کاهش یک واحد | x&ndash; یا &ndash;x 7 | ++ | افزایش یک واحد | x++ یا ++
عملگرهای ردیف ۱ تا ۴ در جدول تقریبا در همه زبانهای برنامه سازی وجود دارند.
عملگر % که در بقیه زبانها با علامت دیگری ( مثلا در بیسیک به صورت MOD ) وجود دارد باقیمانده تقسیم دو عدد را محاسبه می کند :
; x = 13 ; y = 5 ; z = x % y اگر سه دستور فوق را توسط ماشین اجرا کنیم مقدار۳ که باقیمانده تقسیم ۱۳ بر ۵ است در z قرار می گیرد .
دستور &ndash;x از x یک واحد کم می کند و نتیجه را در x قرار می دهد که معادل دستور x = x-1 است .
دستور ++x معادل دستور x = x+ 1 است که موجب افزودن یک واحد به x می شود . اگر در یک عبارت از عملگرهای افزایش و کاهش یک واحد ، استفاده کنیم به کاربردن این عملگرها در قبل و بعد از عملوند مربوطه ، با یکدیگر متفاوت است . بدین معنی که اگر این عملگرها قبل از عملوند باشند مقدار فعلی عملوند مورد استفاده قرار گرفته و سپس عملگرها بر روی آن عمل میکنند ، ولی اگر بعد از عملوند مربوطه باشند پس از انجام عمل افزایش و کاهش یک واحد به آنها مقادیر جدید ، در عبارت مورد استفاده قرار می گیرند. استفاده ازعملگرهای افزایش و کاهش یک واحد ، سرعت محاسباتی را بالا می برد .
اگر در یک عبارت از چند عملگر محاسباتی استفاده شود ، مساله تقدم عملگرها مطرح می شود .
بالاترین تقدم &mdash; | + + | بعد | * / % پایین ترین تقدم | &ndash; | +
همان طور که مشاهده می شود ، عملگرهای افزایش و کاهش یک واحد دارای بالاترین تقدم و عملگرهای جمع و تفریق دارای کمترین تقدم هستند . عملگرهایی که در یک سطر آمده اند ، مثل &ndash; و + بدین معنی است که دارای تقدم مکانی نسبت به یکدیگر هستند. در این صورت هر کدام از عملگرها که اول ظاهر شود ، زودتر انجام خواهد شد .
عملگرهای رابطه ای عملگرهای رابطه ای برای تشخیص ارتباط بین عملوندها یا مقایسه آنها مورداستفاده قرار می گیرند.
عملگر | نام | مثال
&gt; | بزرگتر | y &lt; x =&gt;| بزرگتر مساوی | y &lt;= x &lt; | کوچکتر | x &gt; y =&lt;|&lt; کوچکتر مساوی | x &gt;= y == و = | مساوی بودن | x=x==y != | نامساوی | x!=y
نکته : عملگر== برای تشخیص مساوی بودن دو عبارت مورد استفاده قرار می گیرد. این عملگر با عملگر= که برای انتساب یک عبارت به یک متغیر استفاده می شود متفاوت است .
عملگرهای منطقی
عملگرهای منطقی بر روی عملوندهای منطقی عمل میکنند. عملوندهای منطقی دارای دو ارزش درستی و نادرستی هستند .
&amp;&amp; : AND || : OR ! : NOT
عملگرهای منطقی ارزش نادرستی درزبان C با مقدار صفر و ارزش درستی با مقادیر غیراز صفر مشخص میشود. عملگر منطقی ! دارای بالاترین تقدم و عملگر || دارای کمترین تقدم در بین عملگرهای منطقی هستند . چون عملگرهای منطقی رابطه نزدیکی با عملگرهای رابطه ای دارند می توان تقدم آنها را نسبت به یکدیگر بیان کرد .
تقدم در عبارات منطقی
بالاترین تقدم | ! | &gt; &gt;= &lt; &lt;= | | == != | | &amp;&amp; | پایین ترین تقدم | ||
تقدم عملگرهای منطقی و رابطه ای عملگرهای محاسباتی و رابطه ای با یکدیگر ترکیب شده وعملگرهای دیگری را بنام عملگرهای محاسباتی رابطه ای ایجاد می کنند. تقدم این عملگرها از سایر عملگرها پایین تر است .
عملگر | نام | مثال
+= | انتساب جمع | x+=y = | انتساب تفریق | x-=y *= | انتساب ضرب | x*=y /= | انتساب تقسیم | x/=y %= | انتساب باقیمانده تقسیم | x%=y
عملگرهای محاسباتی و رابطه ای عبارت x + = y معادل با x = x + y است .
; int a = 10 ; int b = 20 ; a += b با اجرای دستورات فوق متغیر a برابر۳۰ خواهد بود. زیرا دستور a + = b معادل دستور a = a + b است .
عملگر دستکاری بیت ها ازآنجایی که زبان C طوری طراحی شده است که بتواند دربسیاری ازموارد جایگزین زبان اسمبلی گردد. باید قادر باشد کلیه اعمال ( یا حداقل بسیاری از اعمال ) که در زبان اسمبلی قابل انجام هستند را انجام دهد . یکی از اعمالی که در زبان اسمبلی براحتی انجام پذیر است . انجام اعمالی بر روی بیت های یک بایت یا یک کلمه از حافظه است که در زبان C برای انجام این منظورازعملگرهایی استفاده می شود که به عملگرهای بیتی معروفند . این عملگرها انجام اعمال تست ، مقدار دادن و یا انتقال (shift) بیت ها را در یک بایت یا کلمه حافظه امکان پذیر می نمایند. عملگرهای بیتی فقط بر روی متغیرهایی از نوع&nbsp; char یا int عمل می کنند و بر روی متغیرهایی از نوع float ، double&nbsp; void و یا سایر متغیرها قابل اجرا نیستند .
عملگرهای بیتی
عملگر | نوع عمل
&amp; | AND ( و ) | | OR ( یا ) ^ | XOR ( یا انحصاری ) ~ | NOT ( نقیض یا متمم یک ) &gt;&gt; | انتقال به سمت راست (shift right) &lt;&lt; | انتقال به سمت چپ (shift left)
عملگر ? :  عملگر ? با تست یک شرط ، مقداری را به یک متغیر نسبت می دهد .
عملگرهای &amp; و * : عملگر &amp; یک عملگر یکانی است که آدرس عملوند خود را مشخص می کند .
عملگر * همانند عملگر &amp; یک عملگر یکانی است که محتویات یک آدرس حافظه را مشخص می کند و به صورت زیر به کار می رود .
عملگر&nbsp;sizeof :  این عملگر که عملگر زمان ترجمه نامیده می شود، برای محاسبه طول یک نوع و یایک متغیر به کار رفته و به صورت زیر استفاده می شود .
تقدم عملگرها در حالت کلی
بالاترین تقدم () , ! , ~ , ++ , &mdash; , * , &amp; , sizeof * / % + &ndash; &lt;&lt; &gt;&gt; &lt;&lt; = &gt;&gt; = == =! &amp; ^ | &amp;&amp; || ? = , += , &ndash; = , *= , /= , % , =/]]></description>

<pubDate>Fri, 26 Jun 2026 01:28:08 +0330</pubDate>
</item>


<item>
<title>قسمت سوم آموزش C – انواع داده</title>
<link>https://hadi011.loxblog.com/قسمت-سوم-آموزش-c--انواع-داده</link>
<guid>https://hadi011.loxblog.com/قسمت-سوم-آموزش-c--انواع-داده</guid>

<description><![CDATA[
در این زبان اندازه و محدوده ای که هر نوع داده اختیار می کند بستگی به نوع پردازشگر (Processor) و نحوه پیاده سازی کامپایلر دارد. شناسه هایی ( متغیر برچسب ، اسامی توابع و &hellip; ) که از نوع char باشند برای ذخیره کردن مقادیری که توسط کاراکترهای اسکی تعریف شده اند به کار می روند.
شناسه هایی از نوع int برای ذخیره کردن مقادیر صحیح ، و از نوع float و double برای ذخیره کردن اطلاعات عددی اعشاری به کار میروند که محدوده آنها توسط تعداد ارقام و دقت آنها مشخص میشود.
نوع void در مورد توابع به کار می رود . نوعهای داده اصلی ( به جز void ) می توانند با عباراتی مثل signed ، long ، unsigned و short ترکیب شده و نوع های دیگری را به وجود آورند .
با توجه به جدول زیر انواع داده و اندازه ی تقریبی آن و بازه ی قابل قبول برای هر نوع داده ای را مشاهده میکنید .
| اندازه تقریبی به بیت | بازه قابل قبول | نوع
| ۸ | -۱۲۷ تا ۱۲۷ | char | 8 | -127 تا ۱۲۷ | unsigned char | 8 | 0 تا ۲۵۵ | signed char | 8 | -127 تا ۱۲۷ | int | 16 | -32767 تا ۳۲۷۶۷ | unsigned int | 16 | 0 تا ۶۵۵۲۵ | signed int | 16 | -32767 تا ۳۲۷۶۷| short int | 16 | 0 تا ۶۵۵۲۵ | short int | 16 | -32767 تا ۳۲۷۶۷ | short int signed | | 32 | -2147483647 تا ۲۱۴۷۴۸۳۶۴۷ | long int | | 32 | 6 رقم دقت | float | | 64 | 10 رقم دقت | double | | 128 | 10 رقم دقت | long double |
شناسه هایی از نوع int برای ذخیره کردن مقادیر صحیح ، و از نوع float و double برای ذخیره کردن اطلاعات عددی اعشاری به کار میروند که محدوده آنها توسط تعداد ارقام و دقت آنها مشخص میشود.
نوع void در مورد توابع به کار می رود . نوعهای داده اصلی ( به جز void ) می توانند با عباراتی مثل signed ، long ، unsigned و short ترکیب شده و نوع های دیگری را به وجود آورند .
با توجه به جدول زیر انواع داده و اندازه ی تقریبی آن و بازه ی قابل قبول برای هر نوع داده ای را مشاهده میکنید .
| اندازه تقریبی به بیت | بازه قابل قبول | نوع
| ۸ | -۱۲۷ تا ۱۲۷ | char | 8 | -127 تا ۱۲۷ | unsigned char | 8 | 0 تا ۲۵۵ | signed char | 8 | -127 تا ۱۲۷ | int | 16 | -32767 تا ۳۲۷۶۷ | unsigned int | 16 | 0 تا ۶۵۵۲۵ | signed int | 16 | -32767 تا ۳۲۷۶۷| short int | 16 | 0 تا ۶۵۵۲۵ | short int | 16 | -32767 تا ۳۲۷۶۷ | short int signed | | 32 | -2147483647 تا ۲۱۴۷۴۸۳۶۴۷ | long int | | 32 | 6 رقم دقت | float | | 64 | 10 رقم دقت | double | | 128 | 10 رقم دقت | long double |]]></description>

<pubDate>Fri, 26 Jun 2026 01:28:08 +0330</pubDate>
</item>


<item>
<title>به فروشگاه ساری خوش آمدید</title>
<link>https://hadi011.loxblog.com/به-فروشگاه-ساری-خوش-آمدید</link>
<guid>https://hadi011.loxblog.com/به-فروشگاه-ساری-خوش-آمدید</guid>

<description><![CDATA[
&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;
&nbsp;]]></description>

<pubDate>Fri, 26 Jun 2026 01:28:08 +0330</pubDate>
</item>


</channel>
</rss>

