<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های محمدحسین میثاق‌پور</title>
        <link>https://virgool.io/feed/@misagh1999</link>
        <description>توسعه‌دهنده Flutter | وبسایت شخصی: misaghpour.ir</description>
        <language>fa</language>
        <pubDate>2026-06-10 14:47:03</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/50828/avatar/jeiKIA.png?height=120&amp;width=120</url>
            <title>محمدحسین میثاق‌پور</title>
            <link>https://virgool.io/@misagh1999</link>
        </image>

                    <item>
                <title>تاریخچه پول: از مبادله‌ی کالا به کالا تا رمزارزها</title>
                <link>https://virgool.io/@misagh1999/%D8%AA%D8%A7%D8%B1%DB%8C%D8%AE%DA%86%D9%87-%D9%BE%D9%88%D9%84-%D8%A7%D8%B2-%D9%85%D8%A8%D8%A7%D8%AF%D9%84%D9%87-%DB%8C-%DA%A9%D8%A7%D9%84%D8%A7-%D8%A8%D9%87-%DA%A9%D8%A7%D9%84%D8%A7-%D8%AA%D8%A7-%D8%B1%D9%85%D8%B2%D8%A7%D8%B1%D8%B2%D9%87%D8%A7-pmabgcz61kq0</link>
                <description>این روزها اخبار رمزارزها از داغ‌ترین موضوعات و اخبار تکنولوژی هستند. توی این پست قصد دارم تا به بررسی تاریخچه‌ی ارزها یا پول بپردازیم و اینکه چی شد که در نهایت رمز ارزها به وجود اومدند.توی این پست از ابتدایی‌ترین روش مبادله‌ی کالا در گذشته شروع می‌کنیم و به بررسی معایب اونها و سیر تکاملی آنها تا رسیدن به رمز ارزها رو بررسی می‌کنیم. پس تا انتهای این پست با من همراه باشید.مبادله‌ی کالا به کالا، اولین روش تبادل مالی میان انسانهمونطور که می‌دونید در زمان‌های گذشته یعنی زمانی که خبری از پول و ارزهای رایج نبود، انسان به ازای ارائه خدمات و فروش کالاهاشون، متقابلا کالا یا سرویس هم ارزش اون رو دریافت می‌کردند. مثلا فرض کنید در گذشته افراد زیر وجود داشتند: دندان پزشک، نجار، چوب فروش و آهنگر.تصور کنید که آقای نجار نیاز به چوب داشت و همچنین آقای چوب‌فروش هم نیاز به یک جعبه داشت. آقای نجار می‌تونست نزد چوب فروش بره و کمی چوب ازش تهیه کنه که هم با استفاده از اون یک جعبه برای چوب فروش بسازه و هم چوب‌های مازاد رو به عنوان دستمزد برداره. اما ماجرا به همین سادگیا نبود و اوضاع پیچیده شد. مثلا برای ساخت یک کالا، نیاز به افراد تامین کننده مختلفی بود یا اینکه افراد مقابل در ازای ارائه اون خدمات یا کالا به خدمات یا کالای طرف مقابل نیازی نداشتند. مثلا تصور کنید که آقای دندان پزشک نیاز به یک شمشیر داشت. برای ساخت شمشیر نیاز به چوب داریم که باید از چوب فروش تهیه بشه و همچنین برای ساخت اون نیاز به آهنگر و نجار نیز داریم. در اینجا اگر همه‌ی اینها نیاز به یک جلسه دندانپزشکی داشته باشند ماجرا خیلی ساده پیش میره. اما حتی اگر یکی از اونها نیازی به خدمات دندان پزشکی داشته باشه یک مشکل پیش میاد و اون طرف ارزش کار و دستمزدش پرداخت نمیشه.اختراع اولین ارزدر اینجاست که اولین ارزها به وجود آمدند. در واقع پول‌ها چیزهایی هستند که مردم می‌تونند تلاش‌های خودشون رو تبدیل به اون کنند تا در آینده بتونند اونو به یک کالا یا خدمت تبدیل کنند. مثلا فرض کنید آقای دندان‌پزشک از نجار یک صندلی می‌خواهد اما نجار نیازی به ویزیت دندان‌پزشکی ندارد. در اینجا نجار صندلی رو برای دندان‌پزشک می‌سازه اما در پایان پزشک یک کاغذی رو به اون میده که این کاغذ معادل یک ویزیت دندان‌پزشکی هست. این نجار می‌تونه در آینده اگه به دندون پزشکی نیاز داشت استفاده کنه یا اینکه این کاغذ نوشته رو به یک نفر دیگه در ازای یه کار دیگه بده. مثلا فرض کنید که نجار نیاز به چوب داره و به همین خاطر نزد چوب فروش میره و از طرفی می‌دونه که چوب فروش نیاز به ویزیت دندان‌پزشکی داره. نجار در ازای دریافت چوب مورد نیاز، اون کاغذی که از دندان‌پزشک رو دریافت کرده به چوب فروش میده و اون چوب فروش با مراجعه به دندون پزشکی و دادن اون برگه که قبلا دندون‌پزشکی نوشته بود می‌تونه دندون خودش رو معالجه کنه.اما زمانی نگذشت که متوجه شدند این روش کارساز نیست و قابلیت جعل و کپی کردن وجود داره. برای مثال یک نفر می‌تونه به راحتی از این کاغذها رو جعل کنه و طرف مقابل بدون اینکه متوجه باشه مجبور به انجام اون خدمت یا کالا باشه. به خاطر همین بود که نیاز به یک پول که محدود باشه شد.طلا، ارزی کمیاباینجا بود که از طلا به جای اون کاغذ استفاده شد. طلا هم کمیابه و از طبیعت استخراج میشه. برای مثال کسی که مقداری طلا داره، دو حالت وجود داره یا اینکه خودش اونو از معدن استخراج کرده و یا اینکه از کسی گرفته. یکی از ویژگی‌های طلا این هست که قابل تقسیم شدن هست و با توجه به ارزش کالا و خدمت مورد نظر میشه مقدار طلای مورد نیاز رو مصرف کرد. و نکته‌ی دیگه اینکه طلا رو نمیشه جعل و تقلب کرد.اما طلا هم مشکلات خودش رو داشت و نمی‌باشد در تعاملات از اون استفاده کرد. مشکلات طلا عبارت بودند از سنگین بودن، احتمال گم شدن.ابداع اسکناساینجا بود که کشورها شروع به متمرکز کردن طلا کردند و بانک‌ها رو ایجاد کردند و دوباره همان کاغذهای بدهکاری رو ایجاد کردند. اما در اینجا تفاوت‌هایی هم داشتند. از جمله اینکه تولید این کاغذها انحصارا تحت نظر حکومت‌ها بودند و همچنین اونها در مقابل اسکناس‌های جعلی نیز مقابله می‌کردند و با جعل‌کنندگان برخورد می‌کردند. یعنی بانک‌ها بر اساس طلاهای موجود این کاغذها رو منتشر می‌کردند. اما با مرور زمان دیگه استاندارد بانک‌ها بر طلا نبود اما همچنان مردم به این پول‌ها اطمینان می‌کردند.با گذشت زمان و ظهور تکنولوژی، ایده‌ی دیجیتال کردن ارزها مطرح شد. اینکه چه طور می‌تونیم ارزهایی رو تولید کنیم که علاوه بر اینکه نیازی به اسکناس نداشته باشه، امنیت بالایی هم داشته باشه. ارز دیجیتال و چالش‌های آنیکی از چالش‌هایی که برای تولید ارزهای دیجیتال بود، مساله‌ی جعل کردن و کپی کردن اونها بود. چون که کپی کردن در دنیای دیجیتال یک فرآیند آسان و راحتی است، تلاش برای تولید ارزهای دیجیتال با شکست مواجه شد. و در کل به این نتیجه رسیدند که برای تولید ارزها باید مکانیزمی رو ایجاد کنند که به راحتی نشه از ارزهای دیجیتال کپی گرفت و یه جورایی کمیاب هم باشن مثل طلا. بعد از مدت‌ها ارزهای دیجیتالی همانند بیت کوین به وجود اومدند. البته در این پست نمی‌‌خوام این فرآیند رو خیلی تخصصی توضیح بدم و هدف صرفا بیان تاریخچه‌ای از ارزها بوده. اینجا بود که مفهوم ماینینگ یا استخراج رمزارزها مطرح شد. همانگونه که استخراج طلا از معادن فرآیند دشوار و سختی هست، استخراج رمزارزها نیز کار سختی هستند. اگه بخوام خیلی ساده توضیح بدم به این صورته که برای استخراج رمزارزها نیازه که محاسبات ریاضی پیچیده‌ای توسط کامپیوترهای قدرتمند انجام بشه و این فرآیند ساعت‌ها و زمان قابل توجهی رو صرف می‌کنه.تو این پست سعی کردم خیلی به زبان ساده تاریخچه پول و ارزها رو توضیح بدم. البته ممکنه یه سری اصطلاحات رو به صورت دقیقی توضیح نداده باشم. امیدوارم که از خوندن این پست لذت برده باشین.</description>
                <category>محمدحسین میثاق‌پور</category>
                <author>محمدحسین میثاق‌پور</author>
                <pubDate>Mon, 07 Mar 2022 13:16:48 +0330</pubDate>
            </item>
                    <item>
                <title>آمار بازدید پست‌های من در سال ۹۹</title>
                <link>https://virgool.io/@misagh1999/%D8%A2%D9%85%D8%A7%D8%B1-%D8%A8%D8%A7%D8%B2%D8%AF%DB%8C%D8%AF-%D9%BE%D8%B3%D8%AA-%D9%87%D8%A7%DB%8C-%D9%85%D9%86-%D8%AF%D8%B1-%D8%B3%D8%A7%D9%84-%DB%B9%DB%B9-xdrzy4yiwv0y</link>
                <description>در طول تاریخ از اعداد استفاده کردیم تا اغلب داد و ستد کنیم و آن‌چیزی که شمردنی است را بشماریم. برای هر عدد واحد درست کردیم تا عددهای زندگی قاطی نشوند و از اعداد، شفاف‌تر استفاده کنیم؛ مثلا وقتی می‌گوییم ده هزار تومان به پول اشاره داریم و وقتی می‌گوییم ده هزار بلیط به بلیط!روز به روز که در زندگی جلو‌تر رفتیم عددها فرقی نکردند ولی این واحدها بودند که زیاد شدند. واحد کریپتو، واحد اصله درخت، واحد فاصله و …«واحد» یک توافق عمومی است برای شمردن؛ تا همانطور که گفتم شمردن‌ها قاطی نشود. مشاهده افراد دارای ثروت (اجتماعی یا مالی) به من ثابت کرده اینکه چه چیزی را بشماریم از اینکه چطور بشماریم مهم‌تر است. هرکس با واحد خاصی مسائل زندگی را می‌شمارد. اینطور به نظرم آمده که مشخص کردن واحد یعنی مشخص کردن اینکه من در زندگی برای چه چیزهایی ارزش قائلم و می‌خواهم چه چیزهایی را در زندگی بشمارم. https://cdn.virgool.io/annual-report/1399/eq3egn8sgzo3-zoa9q.mp4 اعدادی که بدون واحد ثبت کردمبه ویدیویی که ویرگول برایم ساخته که نگاه می‌کنم میبینم که در سال ۹۹، من در مجموع ۱۹,۰۴۷ کلمه در ویرگول نوشتم و منتشر کردم و مخاطبین، پست‌های من را ۱۶۷ مرتبه پسندیدند و  ۱۹ بار هم نظر خود را روی پست‌های من به اشتراک گذاشتند. در سال ۹۹، ۳۴ نفر در ویرگول من را دنبال کردند تا پست‌های بعدیم را بخوانند. این اعداد نشان میدهند من کاری کرده‌ام. هرکدام به واحدی وصل هستند. از خودم می‌پرسم من کدام واحد را شمارش کرده‌ام؟ کدامیک از واحدهای بالا از همه برای من مهم‌تر است؟ ادامه ویدیو را می‌بینم.آمار از اثر بیرونی می‌گویندطبق آمار پست‌های من ۱۱,۴۷۰ بار خوانده شدند و ۲,۱۸۲,۲۹۷ ثانیه صرف مطالعه آنها شده است، که با توجه به جمعیتی که در ایران به اینترنت دسترسی دارند، ویرگول به من می‌گوید که توانستم  ۰/۰۲۹۹۱۹۰۷۰ ثانیه، سرانه مطالعه دیجیتال کشور را بالا ببرم.از طرف دیگر ویرگول به من می‌گوید که اگر قرار بود پست‌هایم را چاپ و به دست تک تک خوانندگان برسانم باید ۷۵,۶۵۱ کاغذ مصرف می‌کردم.آن عددهای کوچک ابتدای ویدیو حالا تبدیل شده‌اند به عددهای بزرگ به اینکه من جلوی مصرف این تعداد کاغذ را گرفتم یا به اینکه من  ۰/۰۲۹۹۱۹۰۷۰ ثانیه، سرانه مطالعه دیجیتال کشور را جابه جا کرده‌ام. واحد این عددها برای من ملموس‌تر است.واحد نوشتن چیست؟همه عددهای بالا و همینطور اثر بیرونی که روی خوانندگان و همینطور در مقیاس بزرگتر طبیعت و جامعه اطرافم گذاشتم اعدادی هستند که من دوستشان دارم و به آنها افتخار می‌کنم. اگر چنین ویدیویی دست شما نیز رسید به شما بابت تک تک اعداد تبریک می‌گویم.اثر هر نوشته تا حدودی معلوم است، اگر بنویسید جلوی قطع درخت را می‌گیرید، به سرانه مطالعه کشور اضافه می‌کنید و خوانندگانی جذب می‌کنید که شما را از طریق نوشته‌هایتان می‌شناسند و …به نظرم می‌رسد که نوشته‌های من و شما واحد ندارند ولی اثر بیرونی دارند.</description>
                <category>محمدحسین میثاق‌پور</category>
                <author>محمدحسین میثاق‌پور</author>
                <pubDate>Mon, 22 Mar 2021 15:06:19 +0430</pubDate>
            </item>
                    <item>
                <title>چه زبون برنامه‌نویسی برای شروع یادگیری خوبه؟</title>
                <link>https://virgool.io/Rocket/%DA%86%D9%87-%D8%B2%D8%A8%D9%88%D9%86-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%B4%D8%B1%D9%88%D8%B9-%DB%8C%D8%A7%D8%AF%DA%AF%DB%8C%D8%B1%DB%8C-%D8%AE%D9%88%D8%A8%D9%87-p9mgzmnlfoxx</link>
                <description>سلام دوستانامیدوارم حالتون خوب بشه. راستش یکی از سوالات خیلی تکراری اینه که برای شروع برنامه‌نویسی چه زبانی رو شروع کنیم؟ و بعضی از افراد شاید تو انتخاب یه زبان دچار سردگمی شده باشند که بالاخره کدوم زبان برنامه‌نویسی رو یاد بگیرن. من هم تصمیم گرفتم به نوبه‌ی خودم درباره این موضوع، یه مقاله‌ای رو بنویسم. اما نمیخوام مثل خیلی از مقالات تکراری که یه لیست طولانی از زبان‌ها رو به همراه مزایا و معایبشون معرفی می‌کنند، بیام یه مقاله طولانی بنویسم و به طور مفصل پاسخ بدم.از این رو قصد دارم خیلی سریع به این سوال پاسخ بدم...چه زبانی برای شروع برنامه‌نویسی مناسبه؟جواب من: هر زبانی شد!بله هر زبانی شد! شاید با این حرف من مخالف باشین، اما انتخاب یه زبان برای شروع یادگیری برنامه‌نویسی اونقدرها هم نیاز به موشکافی و وسواس نداره فقط کافیه هر زبانی که شد رو انتخاب کنید و شروع به یادگیری اون کنید. مهم اینه که شما منطق برنامه‌نویسی رو یاد بگیرین و می‌تونم بگم که تقریبا تمام زبان‌های برنامه‌نویسی تقریبا هسته‌شون از یه سری مفاهیم مشترک تشکیل شده و فقط سینتکس و یه سری ویژگی‌هاشون متفاوته!به همین خاطر من اخیرا یه مقاله‌ای رو توی وبسایت شخصی‌ام منتشر کردم با عنوان با کدام زبان برنامه‌نویسی شروع کنم اگه مایل باشین می‌تونید از طریق لینک مربوطه این مقاله رو مطالعه کنید.</description>
                <category>محمدحسین میثاق‌پور</category>
                <author>محمدحسین میثاق‌پور</author>
                <pubDate>Wed, 01 Jul 2020 21:39:51 +0430</pubDate>
            </item>
                    <item>
                <title>دوره‌ی ویدئویی آموزش Git و Gitlab</title>
                <link>https://virgool.io/@misagh1999/%D8%AF%D9%88%D8%B1%D9%87%DB%8C-%D9%88%DB%8C%D8%AF%D8%A6%D9%88%DB%8C%DB%8C-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-git-%D9%88-gitlab-iwmlq9v9v9fu</link>
                <description>آموزش Git و Gitlab به زبان سادهسلام دوستان. اخیرا در حال ضبط دوره‌ی آموزش git و gitlab بودم. و این مجموعه رو داخل آپارات و وبسایت شخصی‌ام (misaghpour.ir) منتشر کرده‌ام. توی این دوره سعی کرده‌ام که دستورات پایه‌ای کار با git و gitlab رو پوشش بدم. در ادامه فهرستی از محتوای این دوره ذکر شده که از می‌تونید بهشون دسترسی داشته باشید.لینک آموزش‌ها در وبسایتلینک آموزش‌ها در آپاراتمطالب سرفصل این دوره:مقدمهنصب و راه‌اندازیدستور git add و git commitبازگشت به کامیت‌های قبلیکار با شاخه‌هاادغام‌کردن شاخه‌هارفع conflictمعرفی Gitlabکار با دستور git remote و git pushهمگام‌سازی مخزن‌هاراستی اگه شما انتقاد یا پیشنهادی درباره بهبود کیفیت این آموزش دارین،‌ خوشحال میشم که اونا با هم در میون بذارین. قطعا نظرات و پیشنهادات شما در بهبود کیفیت این محتواها موثر خواهد بود.آیدی تلگرام : Misagh1999ایمیل: info@misaghpour.ir</description>
                <category>محمدحسین میثاق‌پور</category>
                <author>محمدحسین میثاق‌پور</author>
                <pubDate>Wed, 10 Jun 2020 18:06:33 +0430</pubDate>
            </item>
                    <item>
                <title>دیباگ (Debug) به زبان ساده</title>
                <link>https://virgool.io/@misagh1999/what-is-debug-ow6jfwgxdhwk</link>
                <description>آیا تا به حال اصطلاح دیباگ (Debug) رو شنیدین؟ آیا می‌دونید کلمه دیباگ به چه معناست؟ تا حالا دقت کرده‌این که چرا در بعضی از عکس‌های مرتبط با تکنولوژی،‌ به ویژه برنامه‌نویسی، عکس یه حشره یا سوسک هم دیده میشه؟ آیا می‌دونستین که فرآیند دیباگ، یکی از چالش‌برانگیز‌ترین فعالیت‌های هر برنامه‌نویس هستش؟ در این مقاله قصد دارم تا به زبان ساده شما رو با مفهوم دیباگ (Debug) آشنا کنم.تاریخچه و معنی لغوی debugدر ابتدا بیاین که با هم دیگه معنای کلمه‌ی دیباگ رو بررسی کنیم. در واقع پروسه‌ی دیباگ یه داستان جالبی داره. این ماجرا برمی‌گرده به حدود شصت هفتاد سال پیش، زمانی که اولین کامپیوترها به وجود اومده بودند. کامپیوترهای اون زمان در واقع نوعی ماشین‌حساب‌های غول‌پیکری بودند که به اندازه‌ی یه اتاق فضا اشغال می‌کردند. زمانی این کامپیوتر‌ الکترومکانیکی دچار یه مشکل شده بود که اپراتورها بعد از جستجو و رفع مشکل به این نتیجه رسیده‌اند که یه حشره‌ای داخل یکی از رله‌ها گیر کرده و این حشره مرده باعث اختلال در کارکرد اون دستگاه شده بود. بعدها اونها این حشره ضمیمه گزارش کارشون کردند که در عکس پایین اونو می‌تونید ببینید.حالا بیایم معنای لغوی دیباگ رو بررسی کنیم. دیباگ یا Debug یه کلمه انگلیسی هستش که از دو بخش تشکیل شده: De + BugDe در زبان انگلیسی یه پیشوند منفی‌کننده هستش. و Bug هم به معنای حشره.پس ترجمه تحت اللفظی دیباگ (debug) یعنی حذف حشره!از اون زمان به بعد اصطلاح دیباگ در حوزه توسعه نرم‌افزار رایج شد. دیباگ به معنای فرآیند کشف مشکلات و معایب کدها و اشکال‌زدایی اونها گفته میشه. با اینکه الان دیگه سال‌های زیادی از این اتفاق می‌گذره و تقریبا میشه گفت که توسعه کامپیوترها و نرم‌افزارها دیگه به شیوه سنتی قدیم نیستش، اما در بین برنامه‌نویسان همچنان به این فرآیند اشکال‌زدایی و رفع عیب، دیباگ گفته میشه. و از اونجایی که باگ به معنای حشره هستش، اگه دقت کنید در بعضی‌ از عکس‌های مرتبط به فرآیند دیباگ، عکس یه حشره و موجودی شبیه سوسک وجود داره!خب تا اینجا با تاریخچه پیدایش دیباگ و معنای لغوی اون آشنا شدیم. در ادامه قصد داریم تا انواع خطاهای در برنامه‌نویسی رو معرفی کنیم.انواع خطاهابه طور کلی خطاهای برنامه‌نویسی رو میشه از دو نوع منظر دسته بندی کرد.دسته‌بندی بر اساس تعداددسته بندی بر اساس زمان رخدادانواع خطاها بر اساس زمان وقوعمعمولا خطاها از لحاظ زمان رخداد به دو دسته میشند: خطاهای زمان کامپایل (Compile) و خطاهای زمان اجرا (Runtime)خطاهای زمان کامپایل: این نوع از خطاها، قبل از اجرای کد و در زمان کامپایل اتفاق میفتند. در واقع به فرآیند تبدیل کدهای یه زبان به زبان ماشین یا صفر و یک کامپایل گفته میشه. در این مواقع یه پیام خطا مبنی بر نوع خطا و موقعیت اون در کد، توسط کامپایلر و یا IDE به کاربر نشون داده میشه.خطاهای زمان اجرا: این نوع خطاها، در زمان اجرا رخ میدن. و معمولا در مواقعی اتفاق میفته که یه ورودی غیرمجاز به برنامه داده میشه. در این مواقع اغلب، برنامه متوقف میشه و بعضا یه پیام خطایی رو هم به کاربر نشون میده.انواع خطاها از منظر تعدادبه طور کلی ۳ نوع خطا در زبان‌های برنامه‌نویسی داریم:خطاهای دستوری (Syntax Errors)خطاهای معنایی (Semantic Errors)خطاهای منطقی (Logical Errors)خطاهای دستوری (Syntax Errors)این نوع خطاها وابسته به زبان برنامه‌نویسی مربوط هستند. برای مثال در یه زبانی مثل جاوا یا سی‌پلاس‌پلاس، گذاشتن سمی‌کالن در پایان خط‌ها اجباری هستش. اما مثلا در یه زبانی مثل پایتون (Python) دیگه نیازی به سمی‌کالن در پایان خط‌ها نیست. در واقع این قواعد، از قواعد دستوری اون زبان محسوب میشن که مجموعه‌ی این قواعد سینتکس اون زبان رو تشکیل میده و در هر زبانی این سینتکس‌ها متفاوته. هر برنامه‌نویسی قبل از کار کردن با یه زبان برنامه‌نویسی، باید با قواعد سینتکسی اون زبان آشنا بشه. میشه گفت که این خطاها جزو ساده‌ترین خطاها هستند و معمولا به طور ناخواسته توسط برنامه‌نویس رخ میدند. برای مثال؛ برنامه‌نویس فراموش می‌کنه که آخر خط رو سمی‌کالن بذاره. اما خبر خوب اینکه، اکثر ادیتورها یا ویرایشگرهای برنامه‌نویسی که اصطلاحا به اونها IDE گفته میشه قابلیت تشخیص این خطاها رو دارند و حتی هنگام برنامه‌نویسی و به صورت لحظه‌ای بازخورد میدن. این نوع خطاها در زمان کامپایل اتفاق میفتند و کامپایلرها این خطاها رو با جزییاتی از قبیل خط موردنظر و نوع خطا به برنامه‌نویس گزارش میدند. از این رو معمولا آسون‌ترین نوع خطاها هستند که اشکال زدایی میشن.خطاهای معنایی (Semantic Errors)این دسته ‌از خطاها، معمولا در زمان کامپایل یا در زمان اجرا اتفاق می‌افتند. به طور کلی دو نوع خطای معنایی وجود داره: خطای معنایی استاتیک و داینامیک.خطاهای استاتیک اغلب در هنگام کامپایل اتفاق میفتند. مثلا در ابتدای برنامه، یه متغیر رو تعریف می‌کنید، اما اونو مقداردهی نمی‌کنید و در ادامه قصد دارین تا از مقدار اون متغیر استفاده کنید؛ مثلا اونو چاپ کنید.دسته‌ی دیگه‌ای از خطاهای معنایی، داینامیک هستند و در زمان اجرا رخ میدن. مثل تقسیم عدد بر صفر یا خواندن از روی فایلی که وجود نداره.خطاهای منطقی (Logical Errors)و اما چالش‌برانگیزترین نوع خطاها، خطاهای منطقی هستند. در این نوع خطاها، کد شما از لحاظ دستوری و سینتکسی مشکلی نداره و کامپایلر به راحتی اونو کامپایل می‌کنه. همچنین کد شما خطای معنایی هم نداره و برنامه شما ظاهرا به درستی اجرا میشه. اما…اما نتیجه‌ و خروجی‌ای که بدست میاد یه خروجی منطقی و قابل قبولی نیست و برخلاف انتظار شماست. مثلا ساده‌ترین مثالش این هستش که شما یه تابع تعریف می‌کنید که قراره عملیات محاسباتی خاصی، مثل محاسبه یه فرمول رو انجام بده. ورودی‌های شما درست هستند اما خروجی‌ای که در نهایت می‌بینید یه خروجی اشتباه هستش و احتمالا باید یه بازنگری در الگوریتم کدتون داشته باشید. همون‌طور که گفتم، این نوع از خطاها، سخت‌ترین نوع خطاها محسوب میشن. چون اینجا کامپیوتر این قدر باهوش نیستش که به شما بگه فلان‌جا رو اشتباه انجام دادی. برای اون کامپیوتر بیچاره و بی‌جان! فقط یه سری قواعد سینتکسی و پایه‌ای مهم هستش. و کامپیوتر فقط الگوریتمی رو که بهش دادین رو اجرا می‌کنه. به عبارت دیگه علت به وجود اومدن خطاهای منطقی، نادرست بودن الگوریتم هستش.یه جمله‌ی قشنگی رو هم یه جا می‌خوندم که نوشته بود:کامپیوترها هیچ‌گاه اشتباه نمی‌کنند، این برنامه‌نویسان هستند که با الگوریتم‌های نادرست کامپیوترها رو برنامه‌نویسی می‌کنند.راه‌های اشکال‌زدایی (Debugging)خب تا به اینجا با انواع خطاهای رایج در زبان‌های برنامه‌نویسی آشنا شدیم و در پایان قصد داریم تا چند راهکار برای اشکال‌زدایی کدها رو بهتون معرفی کنم.اشکال‌زدایی به کمک IDEدر این روش شما می‌تونید خطاهای سینتکسی و خطاهای معنایی خودتون رو به کمک IDE اشکال زدایی کنید. معمولا ویرایشگرهای مدرن امروزی در هنگام رخداد خطا به شما یه پیامی رو نشون میدن که در اون، نوع خطای شما و موقعیت اون مشخصه. شما از این طریق، به راحتی می‌تونید به خط مورد نظر برید و کدتون رو اصلاح کنید. اگه در اینجا نمی‌دونستین که چطور مشکل‌تون رو رفع کنید، می‌تونید از روش بعدی کمک بگیرین.اشکال‌زدایی به سبک google و stackoverflowاین یه روش خیلی کاربردی و رایج در برنامه‌نویسان هستش. به این صورت که برنامه‌نویس اگه نتونست به کمک پیام خطای کامپایلر، کدش رو اشکال‌زدایی کنه، فقط کافیه که اون پیام خطا رو کپی کنه و در گوگل سرچ کنه. به همین راحتی!و در اغلب موارد اولین نتیجه، سایت محبوب stackoverflow هستش. در این سایت پرسش و پاسخ‌های زیادی از جمله باگ‌یابی کدها وجود داره. در اکثر موارد، جواب شما در این سایت وجود داره. چون احتمالا شما اولین کسی نیستین که با این خطاها روبرو شدین و طبیعتا برنامه‌نویس‌های زیادی قبل از شما بوده‌اند که با این مشکل مواجه شده‌اند و اون افراد سوالات خودشون رو در این سایت پرسیده‌اند و بقیه هم جواب داده‌اند.سایر روش‌های اشکال‌زداییتا به اینجا دو روش کاربردی برای اشکال‌زدایی کدها گفته شد. البته روش‌های دیگه‌ای هم وجود دارند که به دلیل طولانی شدن حجم مقاله ذکر نشدند.جمع‌بندیو اما در پایان سخن، برنامه‌نویسی یکی از مهارت‌هایی هستش که علاوه بر تسلط بر دانش برنامه‌نویسی، نیاز به صبر و پشتکار داره و برای مثال ممکنه شما مدت‌ها، وقت‌تون رو صرف رفع یه خطا و اشتباه کنید و در نهایت متوجه یه اشتباه کوچک بشین که خیلی ساده بنظر میومده. اما اون چیزی که مهمه، پشتکار و استقامت شماست و شما رو از بقیه برنامه‌نویس‌های دیگه متمایز می‌کنه.امیدوارم که این مقاله برای شما مفید بوده باشه ?منبع: وبسایت شخصی محمدحسین میثاق‌پور - دیباگ (Debug) به زبان ساده</description>
                <category>محمدحسین میثاق‌پور</category>
                <author>محمدحسین میثاق‌پور</author>
                <pubDate>Sun, 07 Jun 2020 10:36:53 +0430</pubDate>
            </item>
                    <item>
                <title>کدنویسی تمیز (Clean Code) چیست</title>
                <link>https://virgool.io/coderlife/%DA%A9%D8%AF%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%AA%D9%85%DB%8C%D8%B2-clean-code-%DA%86%DB%8C%D8%B3%D8%AA-uhfxlovfdpdz</link>
                <description>برای انسان‌ها کد بنویسید نه ماشین‌ها!کد تمیز (Clean Code) چیست؟احتمالا می‌پرسید مگه تمیز بودن و یا در مقابل کثیف بودن کد اهمیت داره؟ مهم اینه که یه کدی بنویسیم که کامپیوتر بتونه اونو به درستی و با خروجی قابل قبولی اجرا کنه. جواب اینه که انسان‌ها قراره کد بنویسند، نه کامپیوترها. در واقع این یه عامل انسانی هستش که میاد یه الگوریتم طراحی می‌کنه و با توجه به اون چند خط کد میزنه و در نهایت تنها وظیفه کامپیوتر هم اجرای اوناست. کدنویسی تمیز یعنی نوشتن کدها به نحوی که دنبال کردن و بازبینی اونا توسط برنامه‌نویس به راحتی قابل انجام باشه. مطالعه و بازبینی یه کد تمیز مثل راه رفتن در یه اتاق مرتب و منظم هستش که هر چیزی سر جای خودش قراره گرفته و دسترسی به اونا امکان پذیره. به عبارتی کد تمیز یا Clean Code یعنی کدی که قابلیت خوانایی بالایی توسط برنامه‌نویس داشته باشه.کد بد (Bad Code) چیست؟کدنویسی بد یعنی کدنویسی کثیف و شلخته! تصور کنید قراره وارد یه اتاق نامرتب و کثیف بشین. احتمالا به سختی داخل اون قدم می‌زنین. ممکنه هنگام راه رفتن ناگهان یه شئ تیزی داخل پاهاتون فرو بره. یا مثلا برای پیدا کردن یه وسیله باید مدت‌ها زمان صرف کنید. در دنیای برنامه‌نویسی، یه کد کثیف رو میشه به این اتاق نامرتب تشبیه کرد. احتمالا برای شما هم ممکنه پیش اومده بشه که در حال بازبینی یه کد برنامه‌نویسی بودین و پیمایش در اون کد مثل راه رفتن در اون اتاق کثیف و نامرتب بوده.کدنویسی تمیز چگونه ابداع شد؟ایده‌ی کدنویسی تمیز، توسط آقای رابرت سی مارتین (Robert C. Martin) که اصطلاحا عمو باب هم به ایشون گفته میشه، به وجود اومد. ایشون یه برنامه‌نویس با سابقه‌ای هستند و طی سال‌ها بررسی در کدهای مختلف، به این نتیجه میرسند که نوشتن کدهای قابل فهم و خوانا یه مساله و موضوع مهمی در حوزه‌ی توسعه نرم‌افزار هستش، از این رو تصمیم به انتشار دانسته‌های خودشون می‌گیرین و کتا‌ب‌های مختلفی در حوزه‌ی توسعه نرم‌افزار تألیف می‌کنند که یکی از محبوب‌ترین این کتاب‌ها، کتاب Clean Code هستش، که در اون به اصول کدنویسی تمیز پرداخته شده.چرا باید از اصول کدنویسی تمیز پیروی کنیم؟در ادامه قصد دارم چند مورد از دلایل کدنویسی تمیز رو بیان کنم. همون‌طور که گفتیم قراره کدهای ما توسط عوامل انسانی که همون توسعه‌دهنده‌ها و برنامه‌نویسان میشن بازبینی بشن و در نهایت توسط کامپیوتر به صفر و یک تبدیل و اجرا میشن‌. برای اون کامپیوتر فرقی نمی‌کنه که کد شما تمیز هست یا نه! برای کامپیوتر فقط یه سری قواعد منطقی و دستوری مثل سینتکس مهمه که رعایت بشن و کاری به این چیزا نداره.ممکنه شما کدی که نوشیتن برای خودتون قابل فهم باشه. اما آیا برای بقیه برنامه‌نویسان و هم تیمی‌هاتون هم قابل فهم خواهد بود؟ این موضوع در پروژه‌های تیمی به شدت اهمیت پیدا می‌کنه و اگه کدتون خوانایی پایینی داشته باشه ممکنه براتون دردسر ساز باشه و روند توسعه پروژه رو کند کنه.یا اصلا فرض می‌گیریم شما قرار نیست که به طور گروهی کار کنید و پروژه خودتون رو به صورت انفرادی توسعه میدین. در اوایل و زمانی که شما در حال کدزنی پروژه هستین، شاید متوجه بخش‌های مختلف کدتون بشین و بتونید باگ یابی کنید. اما اگه مدت‌ها بعد، دوباره به سراغ کدتون برین، ممکنه متوجه مبهم بودن برخی از قسمت‌ها بشین، چون اون‌ها رو فراموش کردین. و اگه شما با چنین مساله‌ای روبرو شدین به احتمال زیاد کد شما یه کد تمیزی نبوده و نیاز به اصلاح داره.دلایل کدنویسی بد چیست؟کدنویسی بد، دلایل مختلفی می‌تونه داشته که در این مقاله قصد دارم تا دو مورد کلی از اونا رو بیان کنم: تازه‌کار بودن برنامه‌نویس و عجله در تکمیل پروژهتازه‌کار بودن برنامه‌نویسبه یاد دارم که اولین زبان برنامه‌نویسی رو در محیط دانشگاه یاد گرفتم. در اون زمان برای راحتی کارمون مثلا نام متغیرها رو حروفی مثل a و b و یا متغیرهایی مثل num1 یا num2 در نظر می‌گرفتیم. و برای نام‌گذاری مناسب زمان کافی صرف نمی‌کردیم. البته اون زمان ما فقط یه سری الگوریتم‌های ساده‌ای رو می‌نوشتیم که نام‌گذاری‌ها خیلی مهم نبود. اما به تدریج که پروژه‌های ما گسترش پیدا کرد، مجبور به انتخاب نام‌های بهتری شدیم. به یاد دارم که بعضی از افراد که البته زبان انگلیسی قوی‌ای هم نداشتند از نام‌گذاری‌های فینگلیش استفاده می‌کردند. مثلا می‌نوشتند: adadAval. یا مثلا پیام خروجی‌شون این بود: Lotfan adad aval ra vared konid. خب این جوری شاید ما به عنوان آماتور متوجه می‌شدیم. اما تصور کنید که این کدهای ما توسط یه برنامه‌نویس حرفه‌ای و اون هم خارجی زبان دیده بشه! بنظرم چیز زشتی میشه. هر چی باشه این زبان‌های برنامه‌نویسی رو اونا اختراع کردند و بهتره که از استانداردهای اونا پیروی بشه. نه اینکه مثلا از خودمون یه چیزی رو در بیاریم. البته بازم میگم این موارد اغلب در برنامه‌نویسی آماتور دیده میشه و خب طبیعتا تمرکز اونا بر سینتکس و الگوریتم هستش و خیلی روی تمیز بودن کد اهمیتی نمیدن.عجله در برنامه‌نویسیاز دیگر مواردی که باعث ناخوانایی کدها میشه، عجله در تحویل پروژه میشه. برنامه‌نویس برای اینکه زودتر پروژه‌ی خودش رو تحویل کارفرما بده، در این دام گیر میفته و تمرکز خودش رو صرفا برای به پایان رسوندن پروژه میذاره و برای تمیز نوشتن کد زمانی کافی رو صرف نمی‌کنه. امکان داره که اون پروژه هم تکمیل بشه. اما مهم‌ترین بخش هر پروژه، نگه‌داری و توسعه اون هستش. برای مثال همین برنامه‌نویس اگه مدت‌ها بعد بخواد دوباره سراغ همون سورس‌کدها بره و مثلا قابلیت‌های جدیدی رو اضافه کنه و یا تغییر جزیی بخواد بده امکان به مشکل برخوردن و سردرگمی وجود داره.جمع‌بندیدر این مقاله به اهمیت کدنویسی تمیز پرداخته شد. همچنین به عنوان یه ایده برای تقویت مهارت تمیزنویسی، می‌تونید از سرویس‌هایی مثل Github و Gitlab بهره بگیرین. در این سایت‌ها مجموعه‌ عظیمی از پروژه‌های ریز و درشت با زبان‌های برنامه‌نویسی مختلف وجود داره که شما با بررسی اونا می‌تونید برخی از الگوهای رایج در کدنویسی تمیز رو کشف کنید.در پایان از اینکه زمان خودتون رو برای خوندن این مقاله صرف کردین، ممنوم. در ضمن خوشحال میشم که نظرات خودتون رو درباره این مقاله کامنت کنید.منبع: وبسایت شخصی محمدحسین میثاق‌پور - کدنویسی تمیز (Clean Code) چیست</description>
                <category>محمدحسین میثاق‌پور</category>
                <author>محمدحسین میثاق‌پور</author>
                <pubDate>Fri, 29 May 2020 12:50:18 +0430</pubDate>
            </item>
                    <item>
                <title>معرفی گیت (Git) به زبان ساده</title>
                <link>https://virgool.io/shayanweb/intro-git-g3ndkreautpg</link>
                <description>حتما شما هم با نرم‌افزارهایی مثل آفیس یا فتوشاپ کار کرده‌این. توی این محیط‌ها ما یه سری تغییراتی رو در فایل‌ها ایجاد می‌کنیم و اونا رو ذخیره می‌کنیم. در هنگام کار با این ابزارها گاهی اوقات یه اشتباهی رو انجام میدیم. و مجبور میشیم که به مراحل قبل برگردیم. که اغلب با گزینه Undo یا کلید میانبر Ctrl+z این کار رو انجام میدیم. و به هر تعداد مجاز می‌تونیم به مراحل قبل بازگردیم. تصور کنید که شما یه کاری در مقیاس بزرگتری مثل برنامه‌نویسی یه پروژه رو دارین انجام میدین. و شاید بعد از مدت‌ها کار و ایجاد تغییرات روی کدهاتون، متوجه بشین که باید برگردین به تغییرات اولیه. اینجاست که دردسر شما شروع میشه. و شاید مجبور بشین یه تغییر اساسی در محتویات‌تون بدین. در این‌جور مواقع هستش که باید دست به دامن گیت (Git) شد و از اون کمک گرفت. در این مقاله قصد داریم تا به معرفی اجمالی گیت بپردازیم.گیت (Git) چیستگیت یه سیستم کنترل نسخه هستش که اغلب برنامه‌نویسان از اون استفاده می‌کنند. و پروژه‌های خودشون رو با اون گسترش میدن. با استفاده از گیت ما می‌تونیم ما تاریخچه‌ای از تغییرات فایل‌ها رو به همراه جزییات‌شون داشته باشیم. همچنین با استفاده از اون می‌تونیم مدیریت بهتری روی نسخه‌های برنامه‌ها یا پروژه‌هامون داشته باشیم.چگونگی پیدایش gitقاعدتا باید یه دلیلی برای ساخت هر ابزار و وسیله‌ای وجود داشته باشه. و مثلا یه عده از سر بیکار نیومدن یه ابزاری رو تولید کنند. ماجرا برمی‌گرده به زمانی که لینوس توروالدز داشت روی پروژه توسعه سیستم‌عامل متن‌باز لینوکس به همراه گروهش کار می‌کرد. بعد از یه مدت ایشون متوجه شد که کار کردن روی پروژه و اون هم به طور تیمی داره خیلی سخت میشه و مدیریت اون دشواره. از این رو تصمیم گرفتند تا یه ابزاری رو برای مدیریت بهتر کدها و کارشون ابداع کنن. و نتیجه‌اش این شد که گیت (Git) بوجود اومد. این نرم‌افزار اون قدر محبوب واقع شد که امروزه عملا برنامه‌نویسان و توسعه‌دهندگان، پروژه‌های خودشون رو با استفاده از گیت توسعه میدن.قابلیت‌های gitخب تا اینجا به طور خیلی خلاصه با گیت آشنا شدیم و دریافتیم که گیت یه ابزاری برای کنترل نسخه یا ورژن هستش. در ادامه قصد داریم تا به توضیح بیشتری از قابلیت‌های این ابزار قدرتمند بپردازیم.ذخیره‌سازی تاریخچه تغییراتبا استفاده از گیت می‌تونیم از همون ابتدای کارمون مثلا یه سری تغییراتی رو انجام بدیم. و بعد از قطعی شدن، اونا رو اصطلاحا commit کنیم. بدین معنی که اون تغییرات رو توی مخزن گیت ذخیره کنیم. توجه کنید که در اینجا تغییرات با جزییات بیشتری ذخیره میشن و مثل برنامه‌هایی آفیس یا فتوشاپ نیستند که فقط با استفاده از میانبر ctrl+z بتونیم به تاریخچه از تغییرات فعلی دسترسی داشته باشیم. در اینجا ما جزییات دقیق‌تری از جمله تاریخ اعمال تغییرات، موضوع، توسعه‌دهنده و… ذخیره میشند و تا مدت‌ها تاریخچه و لیست‌ اینا باقی میمونه.امکان بازگشت به مراحل قبلتصور کنید که شما برای یه مدتی دارین روی یه پروژه کار می‌کنید و ناگهان متوجه میشین که این راه رو اشتباه اومدین. و مجبورین یه تغییر اساسی بدین و مثلا به گام‌های قبلی مراجعه کنید. با استفاده از گیت این کار به راحتی برای ما امکان‌پذیره. و می‌تونیم به هر مرحله که خواستیم دسترسی داشته باشیم و دوباره پروژه رو از همون جا ادامه بدیم.امکان افزودن شاخه جدیدتصور کنید که در میان پروژه‌تون به یه دو راهی بر میخورین. و مثلا قصد دارین یه ایده و یا ویژگی جدیدی رو به پروژه‌تون اضافه کنید. در اینجا می‌تونید یه شاخه جدیدی رو ایجاد کنید. و در اون شاخه تغییرات خودتون رو اعمال کنید و جلو برین و در پایان اون شاخه جدید رو  با شاخه اصلی ادغام کنید.چگونه از git استفاده کنیم؟برای این منظور شما باید به سایت مرجع گیت یعنی git-scm.com مراجعه کنید. تو این سایت مستندات گیت و لینک دانلود گیت برای سیستم عامل‌های مختلف وجود داره. ابزار گیت در واقع یه نوع محیط خط فرمان هستش مثل command line. که شما با توجه به سیستم عامل‌تون باید اونو روی کامپیوترتون نصب کنید. یادگیری گیت هم آسونه و با دونستن چند تا دستور اصلی می‌تونید اونو یاد بگیرین و پروژه‌هاتون رو توسعه بدین.کار گروهی در گیتاز قدیم گفته‌اند که کار گروهی بهتر از کار انفرادی هستش. چرا که در این صورت ایده‌های بیشتر مطرح میشند و سرعت توسعه پروژه افزایش یپدا می‌کنه. مهندسان و توسعه‌دهندگان نرم‌افزار هم از این قاعده مستثنی نیستند. و اگه دقت کنید تقریبا بیشتر پروژه‌های نرم‌افزاری بزرگ توسط گروه‌های نرم‌افزاری توسعه داده شده. و کمتر نمونه‌ی انفرادی پیدا میشه. در اینجا هستش که گیت به کمک توسعه‌دهندگان و برنامه‌نویسان میاد اما چه جوری؟با استفاده از سرویس‌هایی مثل Github یا Gitlab شما این امکان رو دارین که محتویات فایل‌ها و مخزن گیت رو بر بستر اینترنت منتشر کنید. البته سرویس‌هایی دیگه‌ای هم موجودند اما این دو سرویس از محبوبیت بالاتری برخودارند.تفاوت Github و Gitدر واقع میشه گفت که Git یه ابزار هستش که وظیفه کنترل و مدیریت نسخه رو بر عهده داره. اما گیت هاب یا سرویس‌های مشابه اون مثل گیت لب یه فضای میزبان مبتنی بر گیت هستند. در این صورت به جای اینکه محتویات شما تنها از طریق کامپیوتر خودتون در دسترس باشه در بستر اینترنت هم موجوده و امکان کار گروهی هم وجود داره.چگونگی کار با Github و Gitlabدر اینجا نمی‌خوام توضیحات دقیقی از چگونگی کار با این دو سرویس بدم. بلکه میخوام یه روال کلی از کار با اونا رو توضیح بدم. می‌تونم بگم که این دو سرویس تفاوت چندانی ندارند. و بعضا برخی از امکانات اونا رایگان و یا پولی هستش. در ابتدا شما باید یه اکانت جدیدی در این سرویس‌ها ایجاد کنید. پس از اون می‌تونید پروژه‌های مختلفی رو ایجاد کنید که معمولا به دو صورت هستند: public و privateدر نوع public پروژه شما قابل رویت توسط بقیه کاربران هم هستش و به طور عمومی در سرور قرار میگیره.اما در نوع private همون‌طور که از نامش پیداست، پروژه شما خصوصی هستش و فقط توسط شما و یا افراد گروهتون قابل رویت و یا توسعه هستش.شما در این سرویس‌ها یه سری مخزن‌هایی رو ایجاد می‌کنید. و فایل‌ها و محتویات خودتون رو در اون‌ها آپلود می‌کنید. و از هر جای دنیا که باشید می‌تونید به این فایل‌ها دسترسی داشته باشید. شما و افراد تیم‌تون می‌تونید یه نسخه‌ای از مخزن گیت پروژه‌تون رو توی کامپیوترهاتون داشته باشید و با استفاده از ابزار git به طور موازی روی پروژه کار کنید و در نهایت تغییرات رو به سرویس github یا gitlab آپلود کنید تا بقیه افراد هم بتونند از آخرین تغییرات شما مطلع و همگام بشند. و اینجوری شما می‌تونید پروژه خودتون رو گسترش بدین.جمع‌بندییکی از مهم‌ترین مهارت‌های هر برنامه‌نویس، مهارت کار گروهی هستش. در این مقاله ابزار git رو معرفی کردیم. که با استفاده از اون می‌تونیم تاریخچه‌ای از تغییرات محتویات رو داشته باشیم. و به راحتی اونا رو مدیریت کنیم. همچنین با سرویس‌هایی مثل gitlab و github آشنا شدیم .که می‌تونیم در بستر اونا، پروژه‌های گروهی خودمون رو توسعه بدیم. امیدوارم که از مطالب این مقاله لذت برده باشین.منبع: وبسایت شخصی محمدحسین میثاق‌پور - معرفی گیت (Git) به زبان ساده</description>
                <category>محمدحسین میثاق‌پور</category>
                <author>محمدحسین میثاق‌پور</author>
                <pubDate>Fri, 15 May 2020 14:12:33 +0430</pubDate>
            </item>
                    <item>
                <title>الگوریتم و فلوچارت به زبان ساده</title>
                <link>https://virgool.io/dataio/algorithm-flowchart-wlbqjn27f3ae</link>
                <description>الگوریتم و فلوچارت به زبان سادهمقدمهمیگن هیچ کاری رو نمیشه بدون داشتن یه طرح و نقشه‌ای انجام داد. از کارای ساده‌ای گرفته مثل پخت یه کیک تا کارایی مثل برنامه‌نویسی! در واقع هر کاری که ما میخوایم انجام بدیم نیاز به یه دستورالعمل و یا نقشه داریم. برای مثال همون‌طور که می‌دونید یه ساختمون زیبا فقط از روی هم چیده شدن چند تا آجر ساخته نشده، بلکه نیاز به یه نقشه‌ای داشته و در واقع همون‌ نقشه باعث زیبایی اون شده. در برنامه‌نویسی هم همین‌طوره. صرفا به نوشتن چند تا خط کد نمیشه گفت که ما یه برنامه مناسبی داریم. بلکه نیاز به یه طرح و نقشه‌ای داریم. به این نقشه و طرح اصطلاحا الگوریتم گفته میشه. در این مقاله قصد داریم تا مفهوم الگوریتم و فلوچارت رو به زبان ساده بررسی کنیم. با ما همراه باشین.الگوریتم چیست؟الگوریتم به بیان ساده یعنی دنباله‌ای از مراحل که برای حل یه مساله مشخص تعریف میشه. البته این یکی از ساده ترین تعاریفی هستش که میشه براش در نظر بگیریم. ناگفته نمونه که همین الگوریتم یه واحد درسی توی رشته مهندسی کامپیوتر هستش که میشه گفت درس نسبتا سخت و مفهومیه و توی کنکور ارشد هم تست‌های نسبتا آبداری ازش میاد! توی اون درس بر خلاف این مقاله شما با انبوهی از فرمول‌ها و تعاریف قلمبه سلمبه مواجه میشید که برای درک و فهم اونا لازمه چندین بار کتاب و یا جزوه رو مرور کنید. یادم میاد زمانی که من این درس رو داشتم وقتی استاد هم درس میداد خودش هم گاهی اوقات متوجه نمی‌شد و فقط یه کاغذ دستش بود و فرمولا رو می‌نوشت و ما هم همین‌طور گیج و واج نگاش می‌کردیم، بدون اون که از درس چیزی متوجه بشیم. خب بگذریم. اینا رو گفتم تا بدونید با چه مفهومی کله گنده‌ای روبرو هستید ? اما نگران نباشید از اون‌جایی که محوریت این وبسایت دانش کامپیوتر به زبان ساده هستش، سعی می‌کنم که توی این مقاله این مفاهیم رو به بیان روانی توضیح بدم.برای سادگی هر چه بهتر این مقاله اجازه بدین که یه مثال رو در نظر بگیریم و تا پایان مقاله با استفاده از همین مثال مفاهیم خودمون رو پوشش بدیم.دستورالعمل پخت کیکجالبه نه! ما داریم درباره مفاهیم کامپیوتر و برنامه‌نویسی صحبت می‌کنیم اما یه گریزی هم به آشپزی می‌زنیم ? خب همونطور که می‌دونید و یا قبلا تجربه پخت کیک رو داشتید، پختن کیک یه سری ابزارها و لوازمی رو نیاز داره. یه سری مواد اولیه‌ای رو نیاز داره و در ادامه هم باید یه سری کارها و عملیاتی رو روی این مواد اولیه انجام بدیم تا در پایان یه خروجی که همون یه کیک لذیذ میشه رو داشته باشیم. خب همون‌طور که معلومه پختن کیک یه روال محسوب میشه. در واقع میشه گفت که برای پختن کیک میشه یه الگوریتم تعریف کرد. اما به راستی یه الگوریتم مناسب چه ویژگی‌هایی باید داشته باشه؟ویژگی‌های الگوریتم خوش‌تعریفبه طور کلی الگوریتم‌ها دارای چهار تا مشخصه هستند:ورودی (input)هر الگوریتمی باید دارای یه سری ورودی باشه، البته گاهی اوقات هم لازم نیس. برای مثال در الگوریتم پختن یه کیک ورودی‌های ما مواد اولیه‌ای مثل آرد، شیر، تخم مرغ و… هستند. توی برنامه‌نویسی این ورودی‌ها می‌تونند شامل انواع داده‌ها از قبیل عدد، رشته، لیست و… باشند.خروجی (output)از هر الگوریتمی انتظار میره که در پایان حداقل یه خروجی رو برگردونه. به هر حال هیچی که نمیشه! مثلا در الگوریتم پختن کیک، خروجی ما یه قالب کیک خوشمزه و لذیذه! در برنامه‌نویسی هم خروجی انواع متفاوتی داره. خروجی ما میتونه در یه متغیر یا فایل ذخیره بشه و یا در صفحه نمایش نشون داده بشه.قطعیت (definiteness)قطعیت یعنی شفاف و بدون ابهام بودن. به عبارتی الگوریتم ما برای هر نوع ورودی معتبری باید یه روال خاصی رو داشته باشه و مبهم و گنگ نباشه.کامل‌بودن (finiteness)کامل‌بودن یعنی الگوریتم ما بعد از انجام یه تعداد گام‌ها باید تموم بشه. و اگه مثلا بیفته توی یه حلقه بی‌نهایت که هیچ وقت هم تموم نشه، اون وقت دیگه به اون الگوریتم کامل نمیگن.روش‌های اجرای الگوریتم‌هاالگوریتم‌ها به طور کلی از سه نوع برای کنترل ساختارها استفاده می‌کنند.متوالی (دنباله‌ای): یعنی یه سری از گام‌ها به ترتیب و بدون هیچ قید و شرطی پشت سر هم اجرا میشن.شعبه‌ای (انتخابی): در این جا در حین پشت سر گذاشتن گام‌های الگوریتم به یه سری دو یا چند راهی برمی‌خوریم که با توجه به صحیح بودن شرط‌های مربوطه یه راه رو می‌ریم. مثل اگه فلان شرط برقرار بود مسیر آ رو برو، در غیر این صورت مسیر ب رو ادامه بده. توی برنامه‌نویسی می‌تونیم با استفاده از دستورات شرطی مثل if اونا رو پیاده‌سازی کنیم.حلقوی (تکرار): در این روال مادامی که یه شرطی برقرار باشه یه سری کارها و عملیات تکرار میشه. در زبان‌های برنامه‌نویسی مثل پایتون می‌تونیم با استفاده از حلقه‌های for یا while این بخش‌ها رو پیاده‌سازی کنیم.چگونه یک الگوریتم بنویسیم؟خب بعد از این که با تعریف الگوریتم و مزایای اون آشنا شدیم، بیاین با هم دیگه مراحل نوشتن یه الگوریتم در برنامه‌نویسی رو توضیح بدیم. تعداد مراحل رو میشه به چهار قسمت تقسیم کرد که در ادامه بیان شده‌اند.تعریف ورودیدر اولین مرحله ما باید ورودی‌های خودمون رو تعیین کنیم. ورودی در واقع همون اطلاعات اولیه‌ای هستش که ما در ابتدای برنامه به الگوریتم بدیم. در برنامه‌نویسی این ورودی‌ها انواع مختلفی می‌تونه باشه؛ از عددی گرفته تا متنی و همچنین داده‌های تکی تا لیستی. توی مثال پخت کیک هم که همون مواد اولیه ما میشن. استفاده از متغیرهااگه دقت کنید ما توی همین مثال پخت کیک، برای انجام این کار از ظرف‌های مختلفی برای انتقال یا ترکیب مواد اولیه‌مون استفاده می‌کنیم. در دنیای برنامه‌نویسی این ظرف‌ها همون متغیرها هستند. به عبارتی ما برای نگه‌داری داده‌ها از متغیرها کمک می‌گیریم چون گاهی اوقات بهتره که نسخه‌های مختلفی از داده‌ها رو ذخیره داشته باشیم که در این جا چگونگی استفاده از متغیرها برامون اهمیت پیدا می‌کنه.پردازش‌ها و عملگرهاهمون‌طور که می‌دونید برای پختن کیک نیاز به یه سری ابزارها داریم و یه سری فعالیت‌هایی رو باید به ترتیب انجام بدیم. مثلا یه جا باید موادمون رو هم بزنیم. توی یه مرحله باید یه سری مواد جدیدی رو اضافه کنیم و خلاصه کارهای مرتبط دیگه. در الگوریتم‌های برنامه‌نویسی هم ما باید روی اطلاعات‌مون یه سری بلاهایی رو بیاریم! و یا به عبارتی برای اینکه یه خروجی مناسب داشته باشیم باید با استفاده از عملگرهای مناسب یه سری پردازش‌ها و عملیاتی رو انجام بدیم. عملیاتی مثل محاسبات ریاضی، ترکیب داده‌ها و بررسی شرط‌ها، تکرار حلقه‌ها و…نمایش خروجیو بالاخره آخرین مرحله الگوریتم، نمایش خروجی هستش. همونطور که قبلا هم اشاره کردم خروجی میتونه مثلا توی نمایشگر چاپ بشه، میتونه یه فایل و یا یه مقدار باشه.خب تا این مرحله ما با نحوه‌ی طراحی الگوریتم‌ها به زبان ساده آشنا شدیم. البته در مسایل و چالش‌های واقعی دنیای کامپیوتر طراحی الگوریتم به این سادگی‌ها هم نیست. همون‌طور که گفتم زمانی که من درس طراحی الگوریتم داشتم گاهی اوقات درک و فهم یه الگوریتم آماده که از قبل توسط یه بنده خدایی نوشته بود دشوار بود! دیگه دشواری طراحی اون الگوریتم‌ها که هیچی!در ادامه حتما سوال می‌پرسین که چه جوری این الگوریتم‌ها رو بنویسیم. جواب: هر جور دوست داری! در نوشتن الگوریتم‌ها میشه اصطلاحا اونا رو به صورت شبه کد نوشت. لازم نیس که این شبه کد توسط کامپیوتر با همون فرمت اجرا بشه. در همین سطح که ما خودمون متوجه بشیم کافیه. برای اینکه با نوشتن الگوریتم آشنا بشین کافیه که یه سری به کتاب‌های آشپزی بزنین. اون‌ها پر هستند از انواع دستورالعمل‌های پخت غذا. بله اون‌ها هم نوعی الگوریتم هستند! الگوریتم فقط توی رشته کامپیوتر که نیستش بلکه در دنیای واقعی هم وجود دارند!بازنویسی گرافیکی الگوریتم‌هاحتما می‌دونید که قدرت تصاویر و نمادها به مراتب بیشتر از نوشته‌ها و کلمات‌اند. تا به اینجا ما نحوه‌ی نوشتن الگوریتم‌ها رو به صورت شبه کد معرفی کردیم. اما گاهی اوقات دنبال کردن این الگوریتم کمی دشواره و بهتره که از نماد‌های گرافیکی استفاده کنیم. به این بازنویسی الگوریتم‌ها اصطلاحا فلوچارت گفته میشه.فلوچارت چست؟فلوچارت به بیان ساده یه نمایش گرافیکی از مراحل حل یه مساله هستش. با استفاده از فلوچارت ما می‌تونیم الگوریتم‌های خودمون رو در قالب نمادهای گرافیکی بازنویسی کنیم. تفاوت فلوچارت و الگوریتم مثل تفاوت نقشه و آدرس متنی هستش. به عبارتی الگوریتم‌هایی که به صورت شبه کد نوشته شده‌اند رو میشه مثل یه آدرس متنی در نظر گرفت در صورتی که فلوچارت رو میشه نقشه‌ی همون آدرس در نظر گرفت.نمادهای فلوچارتیه استانداردی برای نمایش نمادها در فلوچارت وجود داره که در جدول زیر این نماد‌ها به همراه کاربرد اونا جمع‌آوری شدند.نمادهای فلوچارتتصویر بالا فقط یه طرح کلی از استفاده نماد‌ها در فلوچارت هستش. که البته هیچ لزومی نداره که مثلا این نمادها با این ترتیب نوشته بشن. گاهی اوقات بعضی از نمادها مثل شرط رو لازم نداریم یا مثلا گاهی اوقات ترتیب استفاده از اونا در مسایل دیگه مختلفه. چند مثال کاربردیحالا که با مفاهیم الگوریتم و فلوچارت آشنا شدیم اجازه بدین تا چند تا مثال رو با هم دیگه بررسی کنیم تا درک بهتری از اونا داشته باشیم.الگوریتم جمع دو عددمی‌تونم بگم این یکی از ساده‌ترین الگوریتم‌ها هستش اما با این وجود اجازه بدین که یه الگوریتم و بعد از اون فلوچارت مرتبط با اون رو رسم کنیم.الگوریتم و فلوچارت جمع دو عددیافتن کوچک‌ترین مقدار دو عددالگوریتم و فلوچارت کوچک ترین مقدار دو عددجمع‌بندیخب به پایان این مقاله رسیدیم. در این مقاله سعی شد تا به بیان ساده الگوریتم رو توضیح بدیم. و اگه دقت کرده باشین الگوریتم مفهوم جدیدی نیستش و ما روزانه دستورالعمل‌های زیادی رو انجام میدیم بدون اینکه نیاز باشه طرح اونا رو رسم و حتی درباره اونا فکر کنیم. اما در دنیای کامپیوتر و برنامه‌نویسی که حل مسایل از مهم‌ترین چالش‌های ماست طراحی الگوریتم‌های مفید اهمیت پیدا می‌کنه.منبع‌: وبسایت شخصی محمدحسین میثاق‌پور - الگوریتم و فلوچارت به زبان ساده</description>
                <category>محمدحسین میثاق‌پور</category>
                <author>محمدحسین میثاق‌پور</author>
                <pubDate>Wed, 13 May 2020 11:36:30 +0430</pubDate>
            </item>
                    <item>
                <title>قانون ۵ دقیقه: تکنیکی برای رفع اهمال‌کاری</title>
                <link>https://virgool.io/@misagh1999/5-min-rule-ojiilx4entjp</link>
                <description>قانون ۵ دقیقهتقریبا برای همه ما پیش اومده که باید یه کار خاصی رو انجام می‌دادیم اما به هر دلیلی حوصله‌ی انجامش رو نداشتیم و به نوعی اهمال‌کاری کردیم و اونو عقب انداختیم. تو این مقاله کوتاه قصد دارم تا یه راهکار خیلی ساده و البته کابردی رو بهتون بگم که اغلب موارد جواب میده. اول بهتون بگم که در این نوشته نمی‌خوام مثل بقیه مقالات انگیزشی و البته تکراری به شما انگیزه بدم و یه متن طولانی رو براتون بنویسم. مثلاً بهتون بگم که برین فیلم انگیزشی ببینید یا به خودتون تلقین‌های مثبتی رو بگین. تو این قسمت قراره یه تکنیک ساده و البته کاربردی رو بهتون معرفی کنم.برای مثال خیلی‌هامون فکر می‌کنیم که برای انجام یه کار باید اول انگیزه داشته باشیم تا یه اقدامی رو انجام بدیم. اما این استراتژی اغلب موارد راهگشا نیست و بهتره که اونو اینطوری اصلاحش کنیم.برای انگیزه داشتن باید ابتدا یه اقدامی رو انجام بدیم. خب این یعنی چی؟ تمام دعوای ما بر سر اینه که ما حوصله انجام یه کاری رو نداریم اون وقت تو میای میگی که بیایم یه اقدامی رو انجام بدیم. آخه چه جوری؟راهکارش خیلی ساده اس: قانون پنج دقیقه!خب اینی که میگی یعنی چی؟کار خاصی لازم نیست انجام بدین فقط بیاین با خودتون قرار بذارین که من قراره فقط ۵ دقیقه روی یه کار تمرکز کنم و بعد از اون اگه حوصله‌اش رو نداشتم اون کار رو ولش می‌کنم. به عبارتی اصلا فرض رو بر این بذارین که اون کار رو رها کنید. تنها ابزار مورد نیازش هم یه زمان‌سنجه که اون هم توی تمام کامپیوترها یا گوشی‌ها موجوده.بیاین یه مثال بزنم. مثلا فرض کنید قراره یه کتابی رو بخونید. با خودتون قرار بذارین که فقط ۵ دقیقه زمان بذارین و اون کتاب رو بخونین و بعد از ۵ دقیقه اون کار رو رها کنید. خب برای مغز عزیز ما! این ۵ دقیقه خیلی کار طاقت‌فرسایی نیست و خب جناب مغز هم قبول می‌کنه و تن به انجام این کار میده! اما با این کار به نوعی مغز خودمون رو فریب میدیم و تا به خودمون میایم می‌بینیم که ۵ دقیقه تموم شده اما ما قصد نداریم که این کار رو رها کنیم و اصطلاحا در اون کار غوطه‌ور شدیم و حالا حالاها قصد دل کندن از اون رو نداریم! البته ممکنه که این روش گاهی اوقات جواب نده که البته چنین چیزی به ندرت اتفاق میفته.همین! تنها چیزی که می‌خواستم بگم همین یه قانون ساده بود!امیدوارم که این مطلب براتون مفید بوده باشه. همچنین خوشحال میشم که نظرات خودتون رو در ادامه بنویسین :)</description>
                <category>محمدحسین میثاق‌پور</category>
                <author>محمدحسین میثاق‌پور</author>
                <pubDate>Mon, 04 May 2020 18:47:00 +0430</pubDate>
            </item>
                    <item>
                <title>آموزش پایتون به زبان ساده: توابع</title>
                <link>https://virgool.io/python-learning/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%D8%A8%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-%D8%B3%D8%A7%D8%AF%D9%87-%D8%AA%D9%88%D8%A7%D8%A8%D8%B9-ycdlogwbafdu</link>
                <description>تا به اینجای کار ما برنامه‌های مختلفی نوشتیم و با ابزارهای متنوعی آشنا شدیم. در این قسمت قصد داریم تا یه خورده برنامه‌هامون رو مرتب‌تر کنیم و دسترسی به اونا رو راحت‌تر کنیم. تصور کنید که چند خط کد رو نوشتین که برای انجام یه عملیات به کار میره. و ما قصد داریم که توی برنامه‌مون چندین بار از اون استفاده کنیم. اولین راهی که به ذهنمون میرسه اینه که اون کدها رو کپی پیست کنیم. اما اینکار جالبی نیستش. اینجا بود که ایده‌ی استفاده از توابع مطرح شد.توابع در واقع تکه کدهایی هستند که برای انجام یه سری وظایفی نوشته میشن و با یه نام مشخصی میشه به اونا دسترسی داشت.مزایای توابعاستفاده از توابع خیلی مزیت‌‌های زیادی داره. در واقع برنامه‌نویسی بدون استفاده از توابع یه چیز نامرتبی از آب در میاد.به کمک توابع دیگه مجبور نیستیم که کدهای خودمون رو در قسمت‌های مختلف کد، کپی پیست کنیم. تنها یه بار برای بار اول تعریف می‌کنیم و در برنامه‌ی اصلی تنها با اشاره به نام اون تابع، اونو فراخوانی و اجرا می‌کنیم.توابع می‌تونن یه سری ورودی‌هایی رو بگیرن و در پایان یه سری خروجی‌هایی رو برامون برگردوننند.تعریف یک تابعدر تعریف توابع باید یه سری نکات از جمله عبارات کلیدی و نام‌گذاری‌ها رعایت بشه. در ادامه به کمک یه مثال با نحوه‌ی تعریف توابع آشنا میشیم:def greet_user():
    print(‘Hello!’)توضیح:در تعریف توابع ابتدا کلمه کلیدی def رو می‌نویسیم.بعد از اون نام تابع رو می‌نویسیم که در این مثال greet_user رو قرار دادیم.بعد از نام تابع باید کاراکترهای () رو حتما قرار بدیم. در این مثال داخل کاراکترها چیزی نیومده. اما در ادامه قراره که آرگومان‌هایی رو برای توابع تعریف کنیم که داخل این پرانتزها میان.بعد از اون کاراکتر : نوشته میشه.در خط‌های بعد، کد مربوط به اون تابع که در واقع بخش بدنه تابع محسوب میشن، به اندازه ۴ فاصله یا یک تب نسبت به تابع در خط جدید شروع میشن.تو این مثال تابع ما تنها کارش، اجرای تابع print هستش.فراخوانی و اجرای تابعتا اینجا ما تنها یه تابع رو تعریف کردیم. اما این لزوما به این معنا نیست که باید حتما اجرا بشه. تا زمانی که ما اونو فراخوانی نکردیم، این تابع اجرا نمیشه. برای فراخوانی تابع فقط کافیه که اسم اونو به همراه () بنویسیم. مثال زیر:def greet_user():
    print(‘Hello!’)greet_user()ارسال اطلاعات به تابعتا اینجا ما یه تابع خیلی ساده رو تعریف کردیم که تنها یه پیام ثابتی رو برامون چاپ می‌کرد. این تابع در واقع با محیط بیرون ارتباطی نداشت و نمی‌تونستیم براش داده‌ای رو بفرستیم.برای مثال فرض کنید که ما قصد داریم همین تابع رو بازنویسی کنیم به نحوی که پیام hello به همراه اسمی که براش می‌فرستیم نشون داده بشه. در اینجا باید یه آرگومان برای تابع تعریف کنیم و در هنگام فراخوانی تابع، پارامتر مورد نظر خودمون رو هم ذکر کنیم. در ادامه با یه مثال اینو توضیح میدم:def greet_user(name):
    print(f’Hello {name}’)greet_user(‘ali‘)
greet_user(‘hossein‘)توضیح:اگه دقت کنید همون تابع بالایی رو با یه سری تغییرات کوچک بازنویسی کردیم.در بخش تعریف تابع، داخل () ها متغیری با نام name نوشتیم که در واقع این متغیر، آرگومان این تابع هستش.در بدنه تابع از تابع f-string استفاده کردیم که یه رشته‌ای رو که شامل hello و اون مقدار name هستش رو برمی‌گردونه.تو بخش بدنه تابع، ما هیچ اطلاعی از مقدار name نداریم و یه مقدار متغیر هستش که هنگام فراخوانی تابع مقداردهی میشه.در ادامه ما دو بار این تابع رو فراخوانی کردیم یا اصطلاحا صدا زدیم.یه بار رشته‌ی ali رو به عنوان آرگومان فرستادیم، یه بار هم رشته hossein رو.چند نکته در استفاده از آرگومان‌هاما در استفاده از آرگومان‌ها تنها به یه مورد محدود نیستیم و می‌تونیم چندین آرگومان تعریف کنیم. بدین صورت که باید با کاراکتر , از هم‌دیگه جدا بشن.آرگومان‌های ما می‌تونن از هر نوعی باشن. مثل رشته، عدد، لیست، دیکشنری و…در استفاده از آرگومان‌ها ترتیب اهمیت زیادی داره و باید هنگام تعریف توابع و فراخوانی اونا به ترتیب آرگومان‌ها دقت کنید.آرگومان‌های کلیدیگاهی اوقات ما از ترتیب آرگومان‌های یه تابع اطمینان نداریم. در اینجا با استفاده از آرگومان‌های کلیدی می‌تونیم تابع موردنظر رو فراخوانی کنیم. فقط باید نام متغیری که در بخش تعریف تابع اومده رو به یاد داشته باشیم. طبیعتا در اینجا ترتیب مهم نیس. با یه مثال با چگونگی استفاده از اون آشنا میشیم.def greet_user(f_name, l_name):
    print(f’Hello {f_name} {l_name}’)greet_user(l_name=’ahmadi’, f_name =’ali’)توضیح:اگه دقت کنید، در بخش تعریف تابع در ابتدا متغیر f_name یا نام خانوادگی اومده و بعد از اون l_name.اما در زمان فراخوانی تابع این ترتیب آرگومان‌ها رعایت نشده و در عوض مقادیر رو بر اساس نام متغیرهای تعریف شده در قسمت تعریف تابع نسبت دادیم.مقادیر پیش فرضنکته‌ی مهمی که در استفاده از توابع وجود داره اینه که اگه تابعی دارای پارامتر بود، ما باید هنگام فراخوانی تابع اون مقادیر رو حتما به عنوان آرگومان ذکر کنیم. چون اگه اینکار رو انجام ندیم برنامه‌ی ما با خطا مواجه میشه.خب طبیعیه. چون مقادیری به آرگومان انتساب ندادیم. تو این مواقع می‌تونیم مقادیر پیش‌فرضی رو به پارامترهای خودمون نسبت بدیم. یعنی اگه هنگام فراخوانی تابع، مقداری به آرگومان‌ انتساب داده شده بود که همون مقدار رو در نظر میگیره و اگه هم آرگومانی در نظر گرفته نشده باشه، مقدار پیش‌فرض رو در نظر میگیره. در این حالت برنامه هم دچار خطا نمیشه. با یه مثال این مورد رو توضیح میدم:def greet_user(f_name, l_name=‘unknown’):
    print(f’Hello {f_name} {l_name}’)greet_user(‘ali’,’ahmadi’)
greet_user(‘ali’)توضیح:در این مثال ما یه تابع داریم که دو تا پارامتر داره که پارامتر دومی دارای مقدار پیش‌فرض unknown هستش.ادامه‌ی تابع هم مشابه مثال‌های قبل هستش.در ادامه ما دوبار تابع رو فراخوانی کردیم.در دفعه‌ی اول هر دو تا آرگومان رو برای تابع فرستادیم و خب نتیجه‌ای هم که بدست میاریم، مشخصه و هر دو تا رو نشون میده.اما در دفعه‌ی دوم تنها آرگومان اول یعنی f_name رو وارد کردیم و مقداری برای آرگومان دوم در نظر نگرفتیم. اگه خروجی رو دقت کنید، مقدار l_name رو برابر مقدار پیش‌فرض unknown در نظر گرفته و اونو چاپ کرده.اگه دقت کرده باشین، تو این حالت دیگه خطایی نداریم. چون حداقل یه مقدار پیش‌فرضی برای آرگومان موردنظرمون در نظر گرفته شده.برگرداندن مقادیرتا اینجا ما با توابعی کار کردیم که به اونها یه سری ورودی میدادند و مثلا یه عملیاتی مثل خروجی در صفحه نمایش رو انجام میدادند. اما توابع قابلیت‌های بیشتری هم دارند و اون برگرداندن مقادیر هستش. مثلا فرض کنید ما یه تابعی تعریف می‌کنیم برای محاسبه‌ی محیط یه مستطیل. در ابتدا برای تابع باید ورودی در نظر بگیریم. ورودی‌های ما عبارتنداز : طول (tool) و عرض (arz)ما قراره که یه مقداری رو هم به عنوان خروجی این تابع برگردونیم. بیاین با یه مثال نحوه‌ی برگردوندن مقادیر رو توضیح بدیم:def get_mohit(tool, arz):
    result = (tool + arz) * 2
 return resultmohit = get_mohit(2, 4)
print(mohit)توضیح:در ابتدا ما یه تابع با نام get_mohit تعریف کردیم که دو تا پارامتر یا ورودی داره: طول (tool) و عرض (arz)در بدنه تابع، تو خط اول یه متغیر تعریف کردیم با نام result که قراره حاصل نتیجه‌ی محاسبه فرمول روبرو در اون ذخیره بشه.در خط بعد ما مقدار result رو به عنوان خروجی بر می‌گردونیم که برای اینکار از کلمه کلیدی return استفاده شده.حالا بریم سراغ برنامه‌ی اصلی:در ابتدا ما یه متغیر تعریف کردیم با نام mohit که قراره خروجی تابع get_mohit در اون ریخته بشه.آرگومان‌های ما تو این مثال ۲ و ۴ هستند. در ابتدا این دو مقدار برای تابع موردنظر فرستاده میشن. بعد از اون تابع عملیات محاسباتی رو انجام میده و در نهایت خروجی رو برمی‌گردونه و به متغیر مورد نظر تو بخش فراخوانی که در اینجا mohit هستش انتساب میده.و در نهایت هم مقدار متغیر mohit توی صفحه چاپ میشه.ذخیره توابع در ماژول‌هاتصور کنید که کد شما شامل چندین تابع هستش. در حالت عادی ما میایم و همه‌ی اونا رو توی یه فایل می‌نویسیم. اما گاهی اوقات دنبال کردن این حجم از کد کار دشواری میشه. به ویژه برای کارهای تیمی که هر کسی یه بخش خاصی رو دنبال می‌کنه. در این مواقع بهتره که برخی از توابع‌مون رو که با همدیگه ارتباط دارند توی فایل‌های جداگانه‌ای بنویسیم و هر وقت نیاز شد در فایل اصلی به اونا دسترسی پیدا کنیم و اونا رو اجرا کنیم. به این فایل‌های جداگانه که توابع ما توی اونا ذخیره میشن اصطلاحا ماژول (‌module) میگن.برای دسترسی به توابعی که در ماژول‌ها مختلفی ذخیره شدند کافیه که در کدمون اونا رو import کنیم.استفاده‌ از ماژول‌ها مزایای مختلفی داره. مثلا:جزییات بخش‌هایی از کد که لازم نیست از دید ما پنهان میشه و لازم نیست که اونا رو دنبال کنیم.کد ما جمع و جورتر میشه و منظم‌تر میشه.خب اجازه بدین در ادامه با چند مثال با نحوه‌ی کار با اونا آشنا بشیم.ابتدا یه فایل جدید ایجاد کنید و کدهای زیر رو در اون بنویسید و با نام hello.py ذخیره کنید.def greet_user():
    print(‘Hello how are you?’)حالا در کنار این فایلی که ایجاد کردین، یه فایل جدید دیگه بنویسین کدهای زیر رو در اون وارد کنید:import hellohello.greet_user()توضیح:در ابتدا ما یه فایل به نام hello.py ساختیم و داخلش یه تابع تعریف کردیم.سپس یه فایل کنار اون فایل ایجاد کردیم و کدهای بالا رو نوشتیم که در ادامه قصد دارم اونو توضیح بدم:در ابتدا کلمه کلیدی import رو می‌نویسیم و بعد از اون نام module یا همون فایلی که توابع ما داخلش ذخیره شده‌اند رو می‌نویسیم.در ادامه برای فراخوانی تابع موجود در ماژول موردنظر کافیه که ابتدا اسم اون ماژول و بعد کاراکتر . و بعد نام تابع رو بنویسیم.به عبارتی سینتکس کلی فراخوانی تابع از یه ماژول به این صورته:module_name.function_name()ایمپورت کردن توابع خاصدر حالت قبل برنامه میاد در ابتدا کل توابع و محتویات موجود در اون ماژول رو کپی می‌کنه و بعد از اون استفاده می‌کنه. اما گاهی اوقات لازم نیس که تمام محتویات یه ماژول رو لود کنیم و تنها به یه توابع خاصی نیاز داریم. در این حالت می‌تونیم به کمک سینتکس زیر توابع موردنظرمون از ماژول مرتبط رو لود کنیم و از اون استفاده کنیم.from module_name import function_nameسینتکس import کردن توابع خاص از یه ماژول به صورت بالاست. که البته می‌تونید بیش از یک تابع هم import کنید. فقط کافیه که با کاراکتر , اونا رو از همدیگه جدا کنید. در ادامه با یه مثال بهتره که با چگونگی استفاده از اونا آشنا بشیم.from hello import greet_usergreet_user()توضیح:اگه دقت کنید تو این حالت دیگه لازم نیست که برای فراخوانی تابع موردنظر، اسم ماژول رو هم در ابتدا ذکر کنید و فقط کافیه که نام تابع رو صدا بزنید.اختصاص نام مستعار به توابع و ماژول‌ها به کمک asگاهی اوقات اسم توابع موردنظر ما خیلی طولانی‌اند یا اینکه نام اون توابع با نام یه تابع موجود در فایل اصلی یکسان هستند و اینجاست که ممکنه برامون یه خورده دردسر ایجاد کنه. اینجا بهتره که از نام مستعار استفاده کنیم. ما با استفاده از کلمه کلیدی as می‌تونیم اسامی کوچک‌تری رو برای توابع‌مون تعریف کنیم و در طول برنامه از اونها استفاده کنیم. سینتکس استفاده از اونا به شکل زیر هستش:from module_name import function_name as fnهمچنین ما می‌تونیم برای ماژول‌ها هم یه نام مستعار در نظر بگیریم. سینتکس استفاده از اون در ادامه اومده:import module_name as mnایمپورت کردن تمام توابع یک ماژولدیدیم که با استفاده از سینتکس قبل می‌تونیم توابع خاصی از یه ماژول رو لود کنیم و یه خوبی‌ای هم که نسبت به حالت قبل داشت اینه که برای فراخوانی تابع موردنظر، لازم نیست که نام ماژول هم در ابتدای اون بیاد. اما گاهی اوقات ما قصد داریم که به کمک این سینتکس تمام توابع ماژول موردنظر رو import کنیم. در این حالت کافیه که به جای نام توابع فقط کاراکتر * رو بنویسیم. یعنی به صورت زیر:from module_name import *جمع‌بندیتو این قسمت با توابع آشنا شدیم و با دونستن اونا می‌تونیم کدهای تمیزتری و دسته‌بندی شده بهتری رو بنویسیم. در واقع ما توابع رو کافیه یه بار تعریف کنیم و کدهایی که یه وظیفه خاصی انجام میدن رو به عنوان بدنه تابع بنویسیم و در برنامه اصلی‌مون، هر وقت نیاز شد کافیه که اونا رو فراخوانی کنیم و با ارسال ورودی‌های مختلف،‌ نتایج و خروجی‌های متناسبی رو دریافت کنیم.این قسمت هم به پایان رسید. امیدوارم از مطالبی که تو این مقاله نوشته شده بود لذت برده باشین.منبع: آموزش پایتون به زبان ساده: توابع - وبسایت شخصی محمدحسین میثاق‌پور</description>
                <category>محمدحسین میثاق‌پور</category>
                <author>محمدحسین میثاق‌پور</author>
                <pubDate>Fri, 10 Apr 2020 21:42:35 +0430</pubDate>
            </item>
                    <item>
                <title>آموزش پایتون به زبان ساده: ورودی و حلقه‌ی while</title>
                <link>https://virgool.io/python-learning/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%D8%A8%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-%D8%B3%D8%A7%D8%AF%D9%87-%D9%88%D8%B1%D9%88%D8%AF%DB%8C-%D9%88-%D8%AD%D9%84%D9%82%D9%87%DB%8C-while-jkwszphqlmxt</link>
                <description>سلام خدمت کاربران عزیز.امیدوارم که این سلسله مقالات آموزشی پایتون تا اینجا براتون مفید بوده باشه.در این آموزش قصد داریم تا با کاربر تعامل داشته باشیم. در واقع ما میخوایم یه سری ورودی از کاربر بگیریم و عملیات مختلفی روی اونا انجام بدیم. مثلا از ساده‌ترینش که یه متنی رو از طریق ورودی کاربر میگیریم و همونو نشون میدیم، تا برنامه‌های پیچیده تر دیگه. با ما همراه باشین.معرفی تابع inputبرنامه‌هایی که ما تا الان داشتیم، فقط یه سری کارای ثابتی انجام میدادند و با کاربر تعامل نداشتند. با استفاده از تابع input می‌تونیم یه سری ورودی به کدمون بدیم و بلاهای مختلفی سرشون بیاریم! مثلا مقدارشون رو ذخیره کنیم. شرایط مختلف رو بررسی کنیم و کلی کار دیگه. اجازه بدین تا با یه مثال این تابع رو معرفی کنم.message = input(“Enter Your Name: “)print(message)توضیح:نحوه‌ی کار با تابع input به اینصورت هستش که:ما در ابتدا باید یه متغیر در نظر بگیریم، برای مثال متغیر messageبعد از اون تابع input رو با همون فرمتی که توی مثال بالا اومده می‌نویسیم.برای اینکه مشخص باشه که قراره چه چیزی رو از کاربر دریافت کنیم باید یه پیامی توی خروجی نشون داده بشه، که توی مثال بالا از کاربر میخوایم که نام خودش رو وارد کنه.با اجرای برنامه و رسیدن به خطی که تابع input در اون قراره داره، برنامه مکث می‌کنه و منتظر میمونه که ما یه متنی رو از طریق کیبورد وارد کنیم و تا زمانی که Enter رو نزنیم، برنامه ادامه نمیده.بعد از اون ورودی که ما از طریق کیبورد وارد کردیم داخل متغیری که براش در نظر گرفتیم، ذخیره میشه.و بعد از اون میتونیم هر بلایی سر این متغیر بیاریم. مثلا تو این مثال ما اونو چاپ کردیم :)تبدیل به عدد با استفاده از تابع intگاهی اوقات ما قصد داریم که ورودی‌های عددی از کاربر بگیریم و با اونا کار کنیم. مثلا یه سری عملیات محاسباتی روی اونا انجام بدیم. نکته‌ای که درباره استفاده از تابع input وجود داره اینه که: متغیرهایی که ذخیره میشن از نوع رشته هستند و اگه بخوایم مثل یه عدد باهاشون رفتار کنیم باید نوع‌شون رو تبدیل به عدد کنیم. با استفاده از تابع int می‌تونیم رشته‌ها رو تبدیل به عدد کنیم. با یه مثال با نحوه‌ی کار با اون آشنا میشیم.age = input(‘How old Are You: ‘)
age = int(age)
if age &gt;= 18:
    print(‘OK’)
else:
    print(‘No’)آشنایی با حلقه‌های whileاگه یادتون باشه ما با حلقه‌ها آشنا شدیم و حلقه‌ی for رو با هم دیگه کار کردیم. حلقه‌های for اغلب برای پیمایش تو لیست‌ها و دیکنشری‌ها به کار میرن. توی این مقاله قصد داریم که حلقه‌های while رو معرفی کنیم.حلقه‌های while معمولا زمانهایی به کار میرن که ما قصد داریم به ازای برقرار بودن یه شرطی، اون تکه از کد ما مدام تکرار بشه. در ادامه قصد دارم تا با کمک یه مثال ساده با نحوه‌ی کار با حلقه‌ی while آشنا بشیم.number = 1while number &lt;= 5:
    print(number)
    number += 1توضیح:در ابتدا ما یه متغیر تعریف کردیم و مقدار ۱ رو بهش انتساب دادیم.بعد از اون دستور while مون رو نوشتیم که نحوه‌ی کار با اون به این صورته:ابتدا کلمه‌ی کلیدی while رو می‌نویسیم.بعد از اون باید یه عبارت شرطی بنویسیم. این عبارات شرطی همونایی هستند که توی if ها هم ازشون استفاده می‌کردیم.بعد از اون کاراکتر‌ : میاد. وجود این کاراکتر الزامیه.در خط‌های بعدی، کدهایی که قصد داریم تکرار بشن رو به اندازه ۴ فاصله یا تب نسبت به while می‌نویسیم.مراقب این چاه باشید!یه نکته‌ی خیلی خیلی مهم در استفاده از حلقه‌ی while وجود داره و اون اینه که حواسمون باشه که یه وقت حلقه‌های ما بی‌نهایت نباشن. یعنی حلقه‌های ما باید محدود بشن و مثلا یه شرطی وجود داشته که به ادامه‌ی اون حلقه پایان بده وگرنه برنامه‌ی ما تا ابد میوفته داخل یه حلقه و تموم هم نمیشه!برای اینکه این موضوع رو متوجه بشین. مثال قبلی رو بدون خط افزایش number بازنویسی کنید و اجرا کنید. یعنی مثال زیر:number =1while number &lt;= 5:
    print(number)اگه کدتون رو اجرا کنید، ناگهان متوجه میشین که توی خروجی به طور رگباری داره دنباله‌ای از یک‌ها پشت‌سر هم چاپ میشه و هیچ وقت تموم هم نمیشه!در چنین مواقعی توصیه می‌کنم که ابتدا خونسردی خودتون رو حفظ کنید و نفس عمیق بکشید.بعد بعد با بستن محیط پایتون شل یا میانبر ctrl + c این روند رو متوقف کنید.بعد از اون باید برین، کد رو اشکال یابی کنید و حلقه‌تون رو از حالت نامحدود خارج کنید.ترکیب تابع input و حلقه whileخب در ابتدا تابع input رو معرفی کردیم و با اون کار کردیم. اگه دقت کنید، برنامه‌ی ما تنها یک بار اجرا شد. اما بیاین تصور کنید که ما قراره چند تا ورودی رو به صورت پشت سر هم دریافت کنیم. در واقع قراره که یه کار تکراری انجام بدیم. اینجاست که باید دست به دامن حلقه while بشیم! یعنی چه جوری؟ آیا تا ابد حلقه باید تکرار باشه؟ اگه اینجوری باشه که یه حلقه بی‌نهایت داریم.نگران نباشین. ما می‌تونیم مثلا یه شرط پایان حلقه تعریف کنیم؛ اگه ورودی کاربر مثلا exit بود. از حلقه بیاد بیرون و ادامه برنامه رو دنبال کنه. به مثال زیر دقت کنید:message = “”
while message != ‘exit’:
    message = input(‘Enter Your Message: ‘)
    print(message)توضیح:در ابتدا یه متغیر با نام message تعریف کردیم و مقدار تهی رو بهش انتساب دادیم.در مرحله‌ی بعد قراره وارد حلقه‌ی while بشیم، که اول باید شرط موردنظر چک بشه. آیا مقدار message برابر exit نیست؟ اگه برابر نیست، خب شرطمون درسته، پس می‌تونه وارد حلقه بشه.در حلقه‌ی ما دو خط کد وجود داره که هربار تکرار میشه.ابتدا میاد یه ورودی از کاربر میگیره و اونو تو متغیر message ذخیره میکنه.بعد از اون هم میاد و پیامی که از کاربر گرفته رو نشون میده.تا مادامی که ورودی ما برابر exit نباشه، حلقه‌ی ما تکرار میشه.استفاده از break برای خروج از حلقههمون‌طور که گفتیم، برای کار با حلقه‌ها حتما باید یه راه فراری در نظر بگیریم، وگرنه میفتیم توی یه حلقه بی‌نهایت که تموم هم نمیشه. در اینجا میخوام یه روش دیگه رو بگم. اجازه بدین مثال بالا رو با این روش بازنویسی کنم:while True:
    message = input(‘Enter Your Message: ‘)
    if message == ‘exit’:
 break
    else:
        print(message)توضیح:همون‌طور که کد رو می‌بینید، از همون ابتدا شیرجه می‌زنیم توی یه حلقه، بدون هیچ شرطی! یعنی Trueدر ابتدا یه پیام رو از کاربر میگیریم.در خط بعد یه شرط if داریم؛ اگه این ورودی برابر exit بود، با استفاده از دستور break حلقه رو می‌شکنه و از اون خارج میشه.در غیر این‌صورت رشته‌ای که از کاربر گرفتیم رو چاپ می‌کنه. به همین راحتی.به طور کلی نحوه‌ی استفاده از دستور break در حلقه while به این صورته که ما حلقه خودمون رو با شرط True مینویسیم.و بعد داخل یه سری شرط‌هایی، دستور break رو برای خروج از حلقه قرار میدیم.استفاده از continue در حلقه whileگاهی مواقع لازمه که ما تمام خط‌های یه حلقه رو اجرا نکنیم و اونا رو نادیده بگیریم. مثلا به محض برقرار بودن یه شرط داخل حلقه، تصمیم می‌گیریم که ادامه کد‌های اون حلقه رو اجرا نکنیم و دوباره از ابتدای حلقه شروع کنیم به اجرا. در اینجا هستش که از عبارت کلیدی continue استفاده می‌کنیم. اجازه بدین تا با یه مثال با چگونگی استفاده از این عبارت آشنا بشیم:number = 0
while number &lt; 10:
    number += 1
    if number % 2 == 0:
        continueprint(number)توضیح:در ابتدا ما یه متغیر با مقدار ۰ تعریف کردیم.در مرحله‌ی بعد ما داخل هر حلقه میریم.هر بار مقدار اون متغیر یکی یکی زیاد میشه.در هر بار چک می‌کنه اگه اون عدد زوج بود، دیگه ادامه حلقه رو اجرا نکنه. یعنی برنامه‌ی تو این خط مستقیما می‌پره به ابتدای حلقه و تابع print رو هم اجرا نمی‌کنه.در واقع در خروجی اعداد فرد از ۱ تا ۹ نشون داده میشن.خب این قسمت هم به خوبی و خوشی تموم شد! امیدوارم که مطالب جدیدی یاد گرفته باشین و بتونید برنامه‌های قدرتمندتری رو بنویسید.منبع: آموزش پایتون به زبان ساده: ورودی و حلقه‌ی while - وبسایت شخصی محمدحسین میثاق‌پور</description>
                <category>محمدحسین میثاق‌پور</category>
                <author>محمدحسین میثاق‌پور</author>
                <pubDate>Fri, 10 Apr 2020 21:04:08 +0430</pubDate>
            </item>
                    <item>
                <title>آموزش پایتون به زبان ساده: عبارات شرطی</title>
                <link>https://virgool.io/python-learning/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%D8%A8%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-%D8%B3%D8%A7%D8%AF%D9%87-%D8%B9%D8%A8%D8%A7%D8%B1%D8%A7%D8%AA-%D8%B4%D8%B1%D8%B7%DB%8C-xq9qubg0pelm</link>
                <description>امروز قصد دارم تا یه قابلیتی رو بهتون یاد بدم که برنامه‌های خودمون رو از یکنواختی و ثابت بودن در بیاریم. اگه دقت کرده باشین، ما تا به حال کدهایی رو نوشتیم که تقریبا خروجی ثابتی داشتند و از ابتدای کد تا انتهای کد، خط به خط اجرا میشدن. گاهی مواقع ما قصد داریم که به ازای برقرار بودن یه سری شرایط بخشی از کدها اجرا بشن. یا به عبارتی اگه شرط مورد نظرمون برقرار نبود، اون تکه از کدها اجرا نشن. در اینجا هستش که باید از عبارات شرطی یا if استفاده کنیم. در زبان پایتون انواع مختلفی برای تعریف if وجود داره. از ساده گرفته تا پیچیده که در این مقاله قصد داریم اونا رو بررسی کنیم.قبل از پرداختن به سینتکس شرط‌ها اجازه بدین تا یه سری مطالب پایه‌ای رو بررسی کنیم. همون‌طور که می‌دونید شرط‌های به طور کلی دو حالت دارند: درست یا غلط. که توی زبان انگلیسی یا به طور ویژه در زبان‌های برنامه‌نویسی بهشون میگن: True (درست) و False (غلط).ابتدا بیاین برای دستگرمی یه سری شرط‌ها رو بررسی کنیم و خروجی اونا رو ببینیم تا بیشتر با عبارات منطقی آشنا بشیم.همون‌طور که قبلا هم گفتم، از محیط Python Shell فقط برای نمایش خروجی نیستش و شما می‌تونید مثل یه ماشین‌حساب ازش استفاده کنید. یعنی کدهاتون رو خط به خط وارد کنید و خروجی رو ببینید. البته بعضی از کدهایی که خط به خط توی این محیط وارد میشن رو شما نمی‌تونید تو محیط ویرایشگر کد ازش استفاده کنید.خب برای نمونه عبارت زیر رو در پایتون شل خط به خط وارد کنید و نتیجه رو بررسی کنید.بررسی تساوی دو متغیر&gt;&gt;&gt; name = ‘ali’
&gt;&gt;&gt; name =‌= ‘ali’اگه این دو تا خط رو به ترتیب در محیط پایتون شل وارد کنید، خروجی True رو نشون میده. حالا بیاین این دو تا خط رو توضیح بدیم.توضیح: در خط اول ما یه دونه = می‌بینیم که این عملگر انتساب هستش. به عبارتی، مقدار ‘ali‘ رو به متغیری با نام name انتساب داده.در خط دوم ما دوتا کاراکتر = می‌بینیم که اینجا به معنی شرط برابر بودن هستش نه انتساب. به عبارتی این خط میگه که آیا مقدار متغیر name با مقدار ‘ali’ برابر هستش یا نه.از اونجایی که این شرط برقراره، خروجی ما درست یا True هستش.حالا بیاین کدهای بالا رو یه بار دیگه بازنویسی کنیم و نتیجه رو ببینیم:&gt;&gt;&gt; name = ‘reza’
&gt;&gt;&gt; name == ‘ali’این بار مقدار خروجی ما غلط یا False هستش چون مقدار ‘reza‘ با ‘ali‘ برابر نیستش.عملگر نامساویتا اینجا عملگر مساوی بودن رو بررسی کردیم. حالا میخوایم برعکس این عملگر رو هم معرفی کنیم: عملگر نامساوی. یعنی چه؟این یعنی اگه مقدار دو تا متغیر ما برابر نبودن اون وقت نتیجه درسته و اگه مقدار دو تا متغیر برابر بودن نتیجه نادرسته. عملگر نامساوی رو با =! نشون میدیم. برای نمونه کدهای زیر رو تو محیط پایتون شل وارد کنید.&gt;&gt;&gt; name = ‘reza’
&gt;&gt;&gt; name != ‘ali’همون مثال قبلی هستش، اما اینبار نتیجه‌ی درستی میده.این دو تا عملگر فقط ویژه رشته‌ها نیستند و برای مثال میشه برای داده‌های عددی هم استفاده کرد.برای مقادیر عددی میشه عملگرهای بیشتری به کار برد. مثل کوچک‌تر، بزرگتر و… که با عملگرهایی مثل &gt; و &lt; و… نشون میدن و باهاشون میشه شرط‌ها رو بررسی کرد.خب. تا اینجا یه آشنایی کلی با نتیجه‌ی عبارات منطقی به دست اوردیم. حالا بریم سراغ تعریف if ها یا شرط‌ها.عبارات شرطی ifعبارات شرطی سادهx = 5
if x &gt; 4 :
 print(‘your number is bigger than 4’)
print(‘finish the code’)توضیح:همونطور که در کد بالا مشاهده می‌کنید، ابتدا ما یه متغیر با مقدار ۵ تعریف کردیم و در خط بعد یه دستور شرطی نوشتیم که با if شروع شده و بعد از اون x &gt; 4 اومده که این به معنای اینه که اگر مقدار x بزرگتر از ۴ بود اون وقت دستورات مرتبط با شرط رو اجرا کن و در غیر اینصورت اونا رو نادیده بگیر.در خط بعد به اندازه ۴ فاصله یا tab فاصله داریم و بعد از اون دستور ما شروع میشه. که در اینجا یه پیام رو نشون میده و بعد از اون هم دستور شرطی ما تموم شده و در خط بعد یه دستور معمولی رو داریم و اگه دقت کنید دیگه نسبت به if تورفتگی و فاصله نداره.به عبارت دیگه اگه دستوراتی در خط‌های بعد به اندازه ۴ فاصله یا تب از if نوشته شده باشند، این به معنای اینه که اون دستورات متعلق به بلوک if هستند و تنها در صورتی اجرا میشن که شرط‌مون درست باشه.حالا ازتون میخوام که این کد رو اجرا کنید و نتیجه رو ببینید.در خروجی متوجه میشین میشین که فقط پیام ‘finish the code’ چاپ شده. به این علت که شرط ما درست نبوده و اون پیام چاپ نشده. حالا برای اینکه با طرز کار شرط‌ها بیشتر آشنا بشین ازتون میخوام که دو تا کار انجام بدین.یک: مقدار x رو تغییر بدن و یه عدد بیشتر از ۴ بذارین.دو: به ابتدای خط آخر برین و یه فاصله tab ایجاد کنید، به گونه‌ای که شروع اون خط مثل خط بالایی‌اش باشه.حالا کد رو ذخیره و اجرا کنید و نتیجه رو ببینید.عبارت شرطی if-elseخب تا اینجا به بررسی شرط‌های ساده پرداختیم. به عبارتی ما فقط یه وضعیت داریم که میخوایم چک بشه. اما گاهی اوقات ما قصد داریم که مثلا اگه شرط موردنظر ما درست نبود، بخش دیگه‌ای رو اجرا کنه.یعنی اگه در ابتدا شرط if ما درست بود، کدهای مربوط به اون بخش رو اجرا می‌کنه و کاری به بخش else نداره و در پایان هم از اون بخش اصطلاحا می‌پره و ادامه برنامه رو اجرا می‌کنه. اما اگه شرط if درست نباشه، میره سراغ بخش else و کدهای مربوطه رو اجرا می‌کنه.برای توضیحات بیشتر اجازه بدین یه مثال بزنم.x = 18
if x == 18:
    print(‘Your number is 18’)
else:
    print(‘Your number is not 18’)
print(‘finish the code’)عبارات شرطی if-elifتا اینجا شرط‌هایی رو بررسی کردیم که دو حالت داشتند. اگه شرط ما برقرار بود که اونو انجام میده و اگر هم برقرار نبود قسمت دوم رو اجرا می‌کرد. اما در ادامه گاهی نیاز میشه که ما شرط‌های مختلفی رو بررسی کنیم. در اینجا باید از شرط‌های زنجیره‌ای if-elif استفاده کنیم. استفاده از زنجیره شرط‌ها به این صورت هستش که در ابتدا شرط اول رو با if مشخص می‌کنیم و در ادامه شرط‌های دیگه رو با elif می‌نویسیم و اگر هم هیچ یک از شرط‌های ما صحیح نبود در پایان اونا else میاریم. به مثال زیر دقت کنید:x = 5
if x == 18:
    print(‘Your number is 18’)
elif x &lt; 18: 
    print(‘Your number is smaller than 18’) 
elif x &gt; 18:
    print(‘Your number is bigger than 18’)
print(‘finish the code’)همون‌طور که می‌بینید ما به هر اندازه می‌تونیم elif قرار بدیم و شرط‌های مختلفی رو بررسی کنیم. حتی می‌تونیم else آخری رو هم نیاریم.به پایان این قسمت رسیدیم. امیدوارم که مطالب جدیدی از این بخش یاد گرفته باشین و با استفاده از اونا بتونید برنامه‌های منعطف‌تری رو بنویسید.منبع: آموزش پایتون به زبان ساده: عبارات شرطی - وبسایت شخصی محمدحسین میثاق‌پور</description>
                <category>محمدحسین میثاق‌پور</category>
                <author>محمدحسین میثاق‌پور</author>
                <pubDate>Fri, 10 Apr 2020 19:50:51 +0430</pubDate>
            </item>
                    <item>
                <title>آموزش پایتون به زبان ساده: دیکشنری</title>
                <link>https://virgool.io/python-learning/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%D8%A8%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-%D8%B3%D8%A7%D8%AF%D9%87-%D8%AF%DB%8C%DA%A9%D8%B4%D9%86%D8%B1%DB%8C-pc8rgom25uax</link>
                <description>سلامت خدمت کاربران محترم.همون‌طور که می‌دونید ما یکی از چیزهایی که زیاد توی برنامه‌هامون ازش استفاده می‌کنیم، داده‌ها و اطلاعات هستند. یعنی برنامه‌ای که داده و اطلاعات و داده‌ای که نداشته باشه هیچ کاری باهاش نمیشه کرد. تو این قسمت قصد داریم تا با یه نوع جدید داده‌ای آشنا بشیم که با به کارگیری اون می‌تونیم برنامه‌های قدرتمندتری رو بنویسیم.بیاین یه مرور سریعی داشته باشیم بر مباحث قبل…ما ابتدا اومدیم برای ذخیره داده‌هامون متغیرها رو تعریف کردیم و کار با اونها رو یاد گرفتیم.در ادامه دیدیم که اگه بخوایم با مجموعه‌ای از متغیرهای مرتبط با هم کار کنیم بهتره که از لیست‌ها استفاده کنیم.اما گاهی اوقات استفاده از لیست‌ها برای ما مناسب نیستند.آخه توی لیست‌ها فقط یه لیستی از مقادیر داریم که با ترتیب خاصی کنار هم قرار گرفتند و اطلاعات دیگه‌ای به ما نمیدن.مثلا فرض کنید که قراره یه لیستی از شماره تلفن افراد داشته باشین. اینجا دو تا چیز مهمه. یکی نام اون شخص و دیگری شماره تلفن اون شخص.اینجا دیگه زیاد جالب نیس که از لیست‌ها استفاده کنیم. چون فقط یه لیستی از شماره‌ها رو داریم یا اینکه فقط یه لیستی از اشخاص رو خواهیم داشت که اینها به تنهایی به درد ما نمیخوره. اینجا بود که ایده استفاده از دیکشنری مطرح شد!دیکشنری‌ها رو میشه مثل یه دفترچه تلفن تعریف کرد که دارای یه سری اسامی منحصر به فرد و شماره‌های مرتبطی هستش. یا یه مثال دیگه که خیلی هم مرتبط با اونه، لغات نامه‌ها یا دیکشنری‌ها هستند که البته این نام‌گذاری دیکشنری‌ها هم از این جهته که خیلی شبیه اوناست.در دیکشنری‌ها ما یه سری لغات داریم و یه سری معانی. یا به یه عبارت دیگه دیکشنری‌ها از دو بخش اصلی تشکیل شده‌اند:کلید (Key) و مقدار (Value)در واقع ما در دیکشنری‌ها بر خلاف لیست‌ها یه مجموعه‌ای از زوج‌ها داریم.در ادامه چند تا از تفاوت‌های لیست‌ها و دیکشنری‌ها رو میگم:تفاوت لیست‌ها و دیکشنری‌هادر لیست‌ها ترتیب مکان عناصر اهمیت داره در صورتی که در دیکشنری ترتیب مهم نیس.در لیست‌ها می‌تونیم مقادیر تکراری داشته باشیم، اما در دیکشنری‌ها، کلیدها منحصر به فردند و نمیشه دو تا کلید با نام یکسان داشت.در لیست‌ها داده‌ها تکی هستند، اما در دیکشنری‌ها داده‌ها به صورت زوج و دو تا دو تا ذخیره شده‌اند.خب حالا که با دیکشنری‌ها و کاربردشون آشنا شدیم، بهتره که نحوه‌ی نوشتن اونا رو به همراه چند تا مثال داشته باشیم.dict1 = {
    “first_name”: “MohammdHossein”,
    “last_name”: “Misaghpour”,
    “age”: 21,
    “city”: “Kashan”
}توضیح:خب بیاین که سینتکس دیکشنری‌ها رو با هم دیگه بررسی کنیم.اول و آخر اونها کاراکتر آکلاد { } میاد.داده‌ها زوج یا دوتایی هستند.هر داده‌ای از دو بخش تشکیل شده: کلید یا key و مقدار یا valueدر ابتدا کلید مشخص میشه که حتما باید داخل علامت نقل‌قول قرار بگیره.بعد از اون مقدار ما با یه کاراکتر : از کلید جدا میشه.کلیدها از هر نوعی میتونن باشن مثلا: رشته یا عدد و…در صورتی که زوج داده‌های ما بیشتر از یکی باشند با کاما , از همدیگه جدا میشن. البته در انتهای آخرین داده لازم نیست که کاما بیاد.مثل بقیه انواعی که قبلا تعریف کردیم میتونیم با دیکشنری‌ها عملیات مختلفی انجام بدیم. مثلا اونا رو چاپ کنیم. به بعضی از داده‌ها دسترسی داشته باشیم، مقدار اونا رو تغییر بدیم و کارهای دیگه.دسترسی به valueهادسترسی به داده‌های دیکشنری شبیه لیست‌هاست فقط تفاوتش اینه که داخل [ ] باید کلید موردنظرمون بیاد. البته حواسمون باید باشه که این کلید داخل علامت نقل‌قول باشه. به مثال زیر دقت کنید:print(dict1[‘first_name’])بروزرسانی دیکشنریمی‌تونیم مقدار کلید موردنظرمون رو تغییر بدیم. خیلی شبیه تغییر آیتم‌های لیست‌ها و متغیرهاست. مثال:dict1 = {
    “first_name”: “MohammdHossein”,
    “last_name”: “Misaghpour”,
    “age”: 21,
    “city”: “Kashan”
}print(dict1)dict1[‘first_name’] = ‘Mohammad’print(dict1)تو همین مثال بالا اگه کلیدی رو که میخوایم مقدارش رو عوض کنیم توی دیکشنری ما وجود نداشته باشه، به ما دیکشنری ما اضافه میشه. مثال:dict1 = {
    “first_name”: “MohammdHossein”,
    “last_name”: “Misaghpour”,
    “age”: 21,
    “city”: “Kashan”
}print(dict1)dict1[‘major’] = ‘Computer Engineer’print(dict1)اگه این کد رو اجرا کنید و خروجی رو بررسی کنید، متوجه میشین که یه کلید به دیکشنری ما افزوده شده. اگه کلیدی هم قبلا وجود داشت در اون صورت مقدارش بروزرسانی میشه و چیزی به دیکشنری اضافه نمیشه.حذف مقادیر دیکشنریگاهی مواقع ما قصد داریم که یه کلیدی رو از دیکشنری‌مون حذف کنیم که در این صورت می‌تونیم از دو تابع del یا pop استفاده کنیم. در مثال زیر نحوه استفاده از اونا بیان شده و هر دو خط یه کار رو انجام میدن.del dict1[‘first_name’]
dict1.pop(‘first_name’)البته نباید دو تا رو با همدیگه برای یه مقدار استفاده کرد چون یکی‌شون هم کافیه و اگه مثلا این کد بالا رو اجرا کنید ممکنه با خطا روبرو بشین.به نظرم برای این قسمت کافیه. البته برای دیکشنری‌ها خیلی کارای دیگه میشه انجام میده اما قصد دارم که در مقالات بعدی و با موضوعات جدید، آموزش کار با اونا رو تکمیل کنم. خب این مقاله هم به پایان رسید. امیدوارم که از اون لذت برده باشین. اگه سوال و نظری دارین، می‌تونید در بخش کامنت‌ها با ما به اشتراک بذارین.منبع: آموزش پایتون به زبان ساده: دیکشنری - وبسایت شخصی محمدحسین میثاق‌پور</description>
                <category>محمدحسین میثاق‌پور</category>
                <author>محمدحسین میثاق‌پور</author>
                <pubDate>Fri, 10 Apr 2020 16:36:45 +0430</pubDate>
            </item>
                    <item>
                <title>آموزش پایتون به زبان ساده: کار با لیست‌ها</title>
                <link>https://virgool.io/python-learning/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%D8%A8%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-%D8%B3%D8%A7%D8%AF%D9%87-%DA%A9%D8%A7%D8%B1-%D8%A8%D8%A7-%D9%84%DB%8C%D8%B3%D8%AA%D9%87%D8%A7-dteghsngbouz</link>
                <description>در قسمت قبل، لیست‌ها رو معرفی کردیم و یه سری توابع کار با لیست‌ها مثل حذف و اضافه کردن رو بررسی کردیم. در این قسمت می‌خوایم مطالبی بیشتری درباره کار با لیست‌ها رو یاد بگیریم. کار با حلقه در لیست‌هاهمون‌طور که می‌دونید لیست‌ها مجموعه‌ای از داده‌های کنار هم هستند که با ترتیب خاصی کنار هم قرار گرفته‌اند. گاهی اوقات ما قصد داریم که در تک تک عناصر لیست پیمایش کنیم و مثلا مقادیر اونا رو چاپ کنیم. یا بلاهای دیگه‌ای به سرشون بیاریم!یکی از راه‌ها اینه که بیایم به صورت تک تک با استفاده از اندیس اونا مقادیر رو نشون بدیم. با یک مثال نحوه‌ی این کار رو توضیح میدم. ابتدا یکی از مثال‌های قبلی رو بررسی کنیم:languages = [‘C#’,’Java’,’C’,’Python’,’C++’]
print(languages)در این مثال ما یه لیست تعریف کردیم و بعد از اون با استفاده از تابع print کل لیست رو توی خروجی چاپ کردیم. اما اگه به خروجی نگاه کنید، فرمت جالبی نداره و دقیقا لیست رو با تمام مخلفاتش یعنی کاماها و براکت‌ها نشون داده! اما مثلا ما قصد داریم که تک تک آیتم‌های لیست رو زیر هم نشون بده. یه راهی که فعلا به ذهنمون میرسه اینه که بیایم چند بار دستور print رو بنویسیم و هر بار به ترتیب مقادیر عناصر رو چاپ کنیم. مثال زیر:languages = [‘C#’,’Java’,’C’,’Python’,’C++’]print(languages[0])
print(languages[1])
print(languages[2])
print(languages[3])
print(languages[4])اگه برنامه رو اجرا کنید، می‌بینید که خروجی نسبتا قشنگ‌تری داره. اما کار با لیست‌ها به این شکل در ادامه ما رو با مشکلاتی روبرو می‌کنه. مثلا چه مشکلی؟تو این مثال ما تعداد عناصر محدودی رو داشتیم. ولی اگه مثلا ۱۰۰ تا یا ۱۰۰۰ تا عنصر داشتیم چیکار می‌کردیم؟ آیا برای تک تک اونا این تابع print رو تکرار می‌کردیم؟ توی تعداد بالا اصلا چه جوریه بدونیم که لیست‌ما چه تعداد عنصر داره؟یا این که بعضی مواقع ممکنه ما یه سری از اندیس‌ها رو فراموش کنیم یا تکرار کنیم..اینجا بود که برنامه‌نویسا تصمیم گرفتند که از حلقه‌ها یا لوپ‌ها استفاده کنن. حلقه‌ها چی هستند؟ما با استفاده از حلقه‌ها می‌تونیم کارهای تکراری رو با تنها با نوشتن تعداد بسیار کد کمتر انجام بدیم. چه ده بار، چه صد بار، چه هزار بار. اصلا کار کامپیوتر اینه. مثل ما آدما نیستند که خسته بشن یا اشتباه کنن:)خب اجازه بدین تا با نحوه‌ی کار با حلقه‌ها آشنا بشیم. به طور کلی ما دو نوع حلقه در پایتون داریم: حلقه for و حلقه while. که برای کار با لیست‌ها اغلب از حلقه for استفاده میشه. بیاین همین مثال بالا رو با استفاده از حلقه for بازنویسی کنیم:languages = [‘C#’,’Java’,’C’,’Python’,’C++’]for item in languages:
    print(item)توضیح:در ابتدا ما یه لیستی رو تعریف کردیم و ادامه یه حلقه for رو نوشتیم که الان میخوایم با نحوه‌ی کار با اون آشنا بشیم.در ابتدای خط کلمه کلیدی for میاد.بعد از اون نام یه متغیر میاد. در واقع این یه متغیر موقت با نام دلخواه هستش که توی لیست به کار برده میشه.بعد از اون کلمه کلیدی in میاد.و سپس نام لیست‌مون میاد. در اینجا ما یه لیستی با نام languages تعریف کردیم که در اینجا دقیقا همین نام باید بیاد.و در نهایت هم کاراکتر کلیدی : باید بیاد.در خط بعد دستور یا دستوراتی که قراره تکرار بشن باید بعد از ۴ فاصله یا اندازه یه تب نسبت به for شروع بشن.نکته‌ای که وجود داره اینه که زبان پایتون به این فاصله‌ی تب‌ها خیلی اهمیت میده.حالا یه بار به زبان ساده بگم که این حلقه چی کار می‌کنه.در ابتدا یه متغیر موقت ساخته میشه. مثلا توی این مثال item هستش، که این متغیر هر بار نقش یه اندیس از لیست هستش. یعنی از اولین عنصر شروع میشه و تا آخرین عنصر تکرار میشه. در هر بار دستوراتی که در حلقه for وجود دارند رو اجرا می‌کنه.البته این مثال ساده‌ای از کار با حلقه‌ها بود. مثلا می‌تونیم تعداد خط‌های بیشتری توی خروجی نشون بدیم. و یا خروجی مون به شکل دیگه‌ای نشون داده بشه. به مثال زیر دقت کنید:languages = [‘C#’,’Java’,’C’,’Python’,’C++’]for item in languages:
    print(F”{item} is a language”)
    print(‘****’)
print(‘*** End of Code ***’)توضیح:اگه دقت کنید حلقه ما دو دستور داره. چرا؟ چون به اندازه یه تب یا چهار فاصله نسبت به for فاصله دارند. اما اگه دقت کنید، دستور آخر یک بار و اون هم بعد از پایان حلقه اجرا میشه.در کار با حلقه‌ها ممکنه که با خطاهایی روبرو بشین. مثلا:کاراکتر : را در پایان خط حلقه یادتون بره.بعضی مواقع این فاصله‌ها رو رعایت نکنید. و اشتباها بعضی جاها رو اضافه فاصله بذارین و بعضی جاها رو هم از قلم بندازین.خب تا اینجا با نحوه‌ی کار با حلقه‌ها در لیست‌ها آشنا شدیم. در ادامه قصد داریم تا ویژگی‌های دیگه‌ای رو هم بررسی کنیم.ساخت لیست‌های عددیهمون‌طور که می‌دونین انواع داده‌های مختلفی می‌تونن در لیست‌‌ها تعریف بشن. برای مثال ما می‌تونیم لیستی از اعداد رو داشته باشیم. در ادامه قصد داریم تا با استفاده از تابع range دنباله‌ای از اعداد رو تعریف کنیم.کار با تابع rangeبه طور کلی سه نوع حالت برای کار با تابع range وجود داره.زمانی که یک آرگومان داریم.زمانی که دو آرگومان داریم.زمانی که ۳ آرگومان داریم.خب اجازه بدین تا برای هر کدوم مثالی رو بنویسم که با نحوه‌ی کار اونا آشنا بشین.for i in range(6):
    print(i)توضیح:در اینجا ما یه آرگومان برای تابع range داریم و این تابع از مقدار پیش فرض صفر شروع میشه و تا یک رقم قبل از اون مقدار آرگومان چاپ میشه. برای نمونه اگه برنامه رو اجرا کنید، توی خروجی مقادیر ۰ تا ۵ نشون داده شده.for i in range(1, 6):
    print(i)بعضی مواقع ما قصد داریم که لیست‌مون از یه مقدار خاصی شروع بشه و به طور پیش‌فرض از صفر شروع نشه. در اینجا باید دو تا آرگومان به تابع بدیم. اولی عنصر شروع ما هستش و دومی عنصر پایانی. برای نمونه تو خروجی مقادیر ۱ تا ۵ چاپ شده‌اند.به طور پیش‌فرض تعداد گام‌ها در این تابع یک هستش. یعنی یکی یکی اعداد زیاد میشن. اما مثلا یه موقع ما میخوایم که دنباله‌ای از اعدادی رو داشته باشیم که دو تا دو تا یا سه تا سه تا زیاد بشن. در اینجا ما باید سه تا آرگومان برای تابع در نظر بگیریم. اولی برای عدد شروعدومی برای عدد پایانی و سومی گام حلقهمثال زیر رو بررسی کنید.for i in range(1, 20, 3):
    print(i)کارکردن با بخشی از لیستزمان‌هایی پیش میاد که قصد داریم فقط به یه بازه‌ی خاصی از لیست‌ها کار کنیم. در واقع ما میخوایم یه برشی از لیست داشته باشیم و با اون کار کنیم. برای این منظور باید از کارکترهای [ : ] استفاده کنیم. در ادامه نحوه‌ی به کارگیری اونا رو به همراه مثال توضیح میدم.languages = [‘C#’,’Java’,’C’,’Python’,’C++’]print(languages[1:3])اگه دقت کنید، یه جورایی شبیه کار با اندیس‌ها توی لیست‌ها هستش. اما اینجا داخل [ ] دو تا عدد به همراه یه : بین‌شون داریم. تو این مثال یعنی من یه بازه میخوام که شروعش از اندیس یکم باشه و پایانش تا یک عنصر قبل از ۳. حالا با هم مثال‌های دیگه رو بررسی کنیم.languages = [‘C#’,’Java’,’C’,’Python’,’C++’]print(languages[:3])اگه تو استفاده از slice ها، عدد اول رو نذاریم، یعنی یه چیزی شبیه مثال بالا. برنامه به طور پیش فرض از اولین عنصر یعنی اندیس صفرم شروع میشه و تا اندیس پایانی که توی آرگومان مشخص شده، برش زده میشه. و یه مثال دیگه هم بزنیم و این بحث رو تکمیل کنیم.languages = [‘C#’,’Java’,’C’,’Python’,’C++’]print(languages[1:])اگه جای عدد دوم رو خالی بذاریم. برنامه به طور پیش‌فرض تا انتهای لیست رو در نظر نمیگیره. حالت‌های مختلفی رو بررسی کردیم. اما یه حالت دیگه مونده و اونم اینه که اگه عدد اول و دوم رو خالی بذاریم‌، اون وقت چی میشه؟ بله درسته. کل لیست رو در نظر می‌گیره. می‌تونید امتحان کنید. مثال پایین:languages = [‘C#’,’Java’,’C’,’Python’,’C++’]print(languages[:])تاپل - Tupleخب تا اینجا مثال‌های متنوعی از کار با لیست‌ها رو یاد گرفتیم. یه نوع دیگه‌ای هم وجود داره که به نام تاپل یا tuple. تاپل‌ها در واقع شبیه لیست‌ها هستند و تنها تفاوتشون اینه که نمیشه اونا رو تغییر داد و فقط برای بار اول تعریف میشند. اما مثل لیست‌ها میشه به مقادیرشون دسترسی داشت. و البته یه تفاوتی هم در سینتکس دارند و اون اینه که با () نشون داده میشن. در ادامه یه مثال از تاپل‌ها اومده:tuple1 = (1, 3, 4)همونطور که گفتم کار با تاپل‌ها دقیقا مثل کار با لیست‌هاست فقط تنها تفاوتشون توی تعریف اولیه‌شون هستش که در داخل () تعریف میشن. و همچنین مقادیرشون فقط خوندنی هستند و در طول برنامه ثابت‌اند و نمیشه تغییرشون داد. اگر یه وقت خدایی ناکرده تصمیم گرفتید مقدار یه عنصر از تاپل رو تغییر بدین، برنامه‌تون با خطا مواجه میشه!خب، به پایان این مقاله رسیدیم. امیدوارم که مطالب جدیدی و مفیدی از این مقاله یاد گرفته باشین.منبع: آموزش پایتون به زبان ساده: کار با لیست‌ها  - وبسایت شخصی محمدحسین میثاق‌پور</description>
                <category>محمدحسین میثاق‌پور</category>
                <author>محمدحسین میثاق‌پور</author>
                <pubDate>Fri, 10 Apr 2020 16:22:49 +0430</pubDate>
            </item>
                    <item>
                <title>آموزش پایتون به زبان ساده: آشنایی با لیست‌ها</title>
                <link>https://virgool.io/python-learning/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%D8%A8%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-%D8%B3%D8%A7%D8%AF%D9%87-%D8%A2%D8%B4%D9%86%D8%A7%DB%8C%DB%8C-%D8%A8%D8%A7-%D9%84%DB%8C%D8%B3%D8%AA%D9%87%D8%A7-os90qifgtd7u</link>
                <description>سلامی دوباره خدمت بازدیدکنندگان عزیز. در این قسمت قصد داریم تا به یکی دیگه از اجزای کاربردی برنامه‌نویسی بپردازیم و با دونستن و به کارگیری اون کدهای قدرتمندتری رو بنویسیم. موضوع امروز ما درباره لیست‌ها هستش.بیاین یه مروری داشته باشیم بر مباحث قبل.اگه یادتون باشه ما گفتیم که برای نگهداری مقادیرمون از متغیرها استفاده می‌کنیم. متغیرها می‌تونستند انواع مختلفی داشته باشند. متنی، عددی و…حالا تصور کنید که شما قراره با یه تعداد زیادی از متغیرها کار کنید. مثلا یه لیستی از اعداد رو قراره که پردازش کنید. یا یه لیستی از نام‌ها رو بررسی کنید و چیزای دیگه. اینجا بود که اومدن برای زبان‌های برنامه‌نویسی لیست‌ها رو تعریف کردند.لیست‌ها در واقع مجموعه‌ای از متغیرها هستند که در یک مجموعه با نام مشخصی ذخیره میشن. برای اینکه بیشتر با این موضوع آشنا بشیم. اجازه بدین یه مثالی بزنم. فرض کنید که شما لیستی از زبان‌های برنامه‌نویسی دارین و قصد دارین که اونا رو چاپ کنید. برنامه‌ی زیر این کار رو برای ما انجام میده.languages = [‘C’,’C++’,’C#’,’Java’,’Python’]
print(languages)توضیح:خب ابتدا بیایم که با نحوه‌ی تعریف لیست‌ها یا اصطلاحا سینتکس اونا آشنا بشیم.همون‌طور که می‌بینید لیست‌ها هم مثل متغیرها دارای یه نام در ابتدا هستند و اختیاری هستند ولی توصیه میشه که از نام‌های جمع استفاده بشه تا خوانایی برنامه هم بیشتر باشه.نحوه‌ی نمایش لیست‌ها با کاراکترهای [ ] مشخص میشند و عناصر ما داخل اونها قرار می‌گیرند.عناصر لیست حتما باید با کاراکتر کاما , از هم دیگه جدا بشن. اگه احیانا جایی یادتون رفت کاما بذارین، برنامه‌تون با خطا مواجه میشه.عناصر لیست‌تون میتونه هر چیزی باشه و برای مثال فقط منحصر به رشته‌ها نیست. مثلا میتونه لیستی از اعداد باشه. مثلا:list1 = [1, 2, 3, 5]خب حالا که با نحوه‌ی تعریف لیست‌ها آشنا شدیم اجازه بدین در ادامه چند تا امکانات دیگه برای کار با اونا رو بهتون معرفی کنم.ساده ترین چیز اینه که شما کل لیست‌تون رو چاپ کنید. مثال زیر:languages = [‘C’,’C++’,’C#’,’Java’,’Python’]
print(languages)دسترسی به عناصر یک لیستگاهی اوقات ما نمی‌خوایم که به کل لیست دسترسی داشته باشیم و می‌خوایم مثلا با مقدار یه عنصر خاصی کار کنیم و اونو تغییر بدیم. اینجا باید با اندیس اونا کار کنیم. اندیس‌ها در واقع شماره موقعیت عناصر ما در لیست هستند. مثلا عنصر اول یا عنصر دوم و الی آخر. برای مثال ما میخوایم اولین آیتم لیست رو توی خروجی نشون بدیم. به مثال زیر توجه کنید:languages = [‘C’,’C++’,’C#’,’Java’,’Python’]
print(languages[1])اگه کدتون رو اجرا کنید متوجه میشین که مقدار ‘C++’ به عنوان خروجی نشون داده شده.به نظرتون جایی اشتباه رخ نداده؟مگه اولین آیتم لیست ‘C‘ نیستش؟پس چرا اونو نشون نداده؟به نظر شما کامپیوتر اشتباه کرده؟اندیس‌ها از صفر شروع میشن، نه یکخیر. کامپیوتر اشتباه نکرده. چرا؟بر خلاف ما که برای شمارش از یک شروع می‌کنیم، اکثر زبانهای برنامه‌نویسی از صفر شروع میشن.در واقع اولین آیتم لیست توی این زبان میشه اندیس صفرم. و مثلا دومین عنصر در لیست میشه اندیس یکم و همین‌طور برای بقیه عناصر هم همین روند وجود داره.برای اینکه این موضوع جا بیفته پیشنهاد می‌کنم که اندیس‌های دیگه‌ای رو امتحان کنید تا متوجه این شماره‌گذاری بشین. نگران نباشین یه خورده که کار کنین عادی میشه. چون ما قبلا عادت داشتیم که از یک شروع کنیم اما کامپیوتر از صفر شروع می‌کنه:)اندیس‌های منفییکی از ویژگی‌های جالب زبان پایتون کار با اندیس‌های منفی هستش.اندیس منفی دیگه یعنی چه؟مگه عناصر از صفر شروع نمیشن؟چرا. اما اندیس گذاری منفی یه نوع شماره گذاری معکوس هستش. یعنی چی؟یعنی از آخر شروع می کنه به اول. به عبارتی ترتیب شمارش برعکسهمثلا آخرین آیتم لیست رو میشه با اندیس 1- نشون داد. مثال زیر:print(languages[-1])یا مثلا یکی مونده با آخری رو میشه با اندیس 2- نشون داد و به همین ترتیب برای عناصر دیگه.حالا که با اندیس‌ها آشنا شدیم، می‌تونیم کارهای مختلفی با اونا انجام بدیم. مثلا می‌تونیم با استفاده از همین اندیس‌ها که کمی قبل توضیح دادیم می‌تونیم مقدار یه عنصر رو تغییر بدیم و مثل گذشته هر بلایی که سر متغیر‌های تکی می‌اوردیم سر اونا هم بیاریم:)مثلا بیاین که مقدار عنصر اول لیست رو تغییر بدیم و دوباره اونو چاپ کنیم:languages = [‘C’,’C++’,’C#’,’Java’,’Python’]
print(languages)languages[0] = ‘Kotlin’
print(languages)کد بالا رو اجرا کنید و خروجی رو بررسی کنید. متوجه میشین که در خط دوم خروجی مقدار اول لیست تون تغییر کرده.خب بریم سراغ بلاهای دیگه که میشه سر لیست‌ها اورد. در ادامه قصد داریم کارهایی مثل اضافه و حذف کردن عناصر لیست رو با هم دیگه یاد بگیریم.افزودن آیتم جدید به لیستافزودن عنصر به آخر لیست به کمک تابع appendاین تابع عناصر جدید رو به آخر لیست اضافه می کنه. مثال زیر:languages = [‘C’,’C++’,’C#’,’Java’,’Python’]
print(languages)languages.append(‘PHP’)
print(languages)افزودن عنصر به موقعیت دلخواه در لیست به کمک تابع insertاین تابع هم شبیه تابع قبلی هستش ولی تفاوتش اینه که می‌تونیم هرکجا از لیست‌مون خواستبم، عنصر رو اضافه کنیم و فقط محدود به آخر لیست نیستیم. این تابع دو تا ورودی داره:اولی برای شماره اندیسی هستش که میخوایم عنصرمون تو اون موقعیت باشه.و دومی هم مقدار اون آیتم موردنظر.به مثال زیر توجه کنید:languages = [‘C’,’C++’,’C#’,’Java’,’Python’]
print(languages)languages.insert(1, ‘PHP’)
print(languages)به غیر از اضافه‌کردن ما گاهی اوقات قصد داریم که برخی از عناصر رو از لیست‌مون حذف کنیم. برای این منظور می‌تونیم از چند تا روش استفاده کنیم.حذف عنصر از لیستحذف یک عنصر با استفاده از عبارت delبا استفاده از عبارت del میشه به دو صورت عملیات حذف رو انجام داد:یه عنصر خاصی از لیست رو با مشخص کردن اندیس‌اش حذف کرد. مثال زیر:languages = [‘C’,’C++’,’C#’,’Java’,’Python’]
print(languages)del languages[0]
print(languages)یه کاربرد دیگه‌اش هم این هستش که کل لیست رو یک جا حذف کنه. در این حالت دیگه نیازی به مشخص کردن اندیس نیست. مثال زیر:languages = [‘C’,’C++’,’C#’,’Java’,’Python’]
print(languages)del languages
print(languages)البته اگه مثال بالا رو اجرا کنید، با یه خطا مواجه میشین که میگه چنین متغیری تعریف نشده. در واقع از خط سوم به بعد کد، لیست ما به کلی حذف شه.حذف کردن یک عنصر با استفاده از تابع popتابع pop یه تفاوتی نسبت به del داره و اون این هستش که بعد از حذف یه آیتم از لیست، می‌تونیم اون آیتم رو در یه متغیر دیگه‌ای ذخیره کنیم. البته ذخیره عنصر حذف شده در آیتم یه کار اختیاری هستش و می‌تونید انجام ندید.شما با استفاده از تابع pop به دو صورت می‌تونید عناصر رو از لیست حذف کنید.حذف آخرین عنصر از لیستlanguages = [‘C’,’C++’,’C#’,’Java’,’Python’]
print(languages)deleted_lan = languages.pop()
print(deleted_lan)
print(languages)همون‌طور که در مثال بالا می‌بینید ما از متد pop بدون آرگومان استفاده کردیم. و از طرفی عنصر حذ‌ف‌شده رو هم داخل یه متغیر با نام deleted_lan ذخیره کردیم.حذف عنصر از مکان دلخواهدر بعضی مواقع ما قصد داریم که یه عنصر از اندیس دلخواهی از لیست رو حذف کنیم. مثلا عنصر اول. در اینجا هم از همون متد pop استفاده میشه اما اینبار بهش یه ورودی داده میشه که در واقع اندیس مورد نظر ماست. به مثال زیر توجه کنین:languages = [‘C’,’C++’,’C#’,’Java’,’Python’]
print(languages)deleted_lan = languages.pop(0)
print(deleted_lan)
print(languages)حذف عنصر با استفاده از مقدار - تابع removeگاهی اوقات ما نمی‌دونیم که عنصری که قصد حذف کردنش رو داریم با چه اندیسی در لیست‌مون ذخیره شده و تنها مقدارش رو داریم. در اینجا با استفاده از تابع remove و واردکردن مقدارمون به عنوان آرگومان این تابع می‌تونیم اون عنصر رو از لیست حذف کنیم. در ادامه با یه مثال چگونگی استفاده از این تابع توضیح داده شده.languages = [‘C’,’C++’,’C#’,’Java’,’Python’]
print(languages)languages.remove(‘C#’)
print(languages)نکته: در استفاده از تابع از مقدار صحیح عنصرتون مطمئن باشین. چون اگه یه وقت خدایی ناکرده مقداری رو وارد کنید که توی لیست‌تون موجود نباشه، برنامه با خطا مواجه میشه.خب تا اینجا با یه سری از توابعی از جمله اضافه کردن و حذف کردن عناصر از لیست‌ها کار کردیم. در بخش پایانی قصد دارم که با یکی دیگر از کارایی که میشه با لیست‌‌ها انجام داد آشنا بشم.مرتب‌سازی لیست‌هاحتما شما هم در دوران مدرسه متوجه شدین که اسامی افراد رو برای حضور و غیاب بر اساس ترتیب حروف الفبا میخونن. در واقع ما یه لیست مرتب‌شده ای بر اساس حروف الفبا داریم. در بعضی از لیست‌ها که شامل اعداد باشه، به ترتیب کوچک به بزرگ مرتب میشن. در پایتون میتونیم به کمک توابع مرتبط‌سازی، لیست‌ها رو مرتب کنیم. به دو طریق میشه لیست‌ها رو مرتب کرد:مرتب‌سازی دائمی و موقتدر مرتب‌سازی دائمی ترتیب کل لیست عوض میشه، اما در مرتب‌سازی موقت، مثلا برای نمایش استفاده میشه اما ترتیب عناصر تغییری پیدا نمی‌کنه.مرتب‌سازی دائمی به کمک متد sortlanguages = [‘C#’,’Java’,’C’,’Python’,’C++’]
print(languages)languages.sort()
print(languages)اگه مثال بالا رو اجرا کنید، متوجه میشین که ترتیب عناصر در خروجی دوم تغییر کرده.مرتب‌سازی موقت به کمک تابع sortedlanguages = [‘C#’,’Java’,’C’,’Python’,’C++’]print(sorted(languages))print(languages)به نحوه‌ی استفاده از این تابع دقت کنید. همچنین اگه کدتون رو اجرا کنید، در خط اول یه لیست مرتب شده‌ای نشون داده میشه، اما خط دوم خروجی نشون میده که لیست ما ترتیبش تغییری نکرده و تنها در خط قبل یه مقدار موقت رو توی خروجی نشون داده.خب فکر می‌کنم تا اینجا مطالب زیادی از کار با لیست‌ها رو یاد گرفتیم. البته کلی توابع دیگه هم وجود داره و تغییرات دیگه هم میشه در لیست‌ها انجام داد که انشاالله در قسمت‌های بعد به صورت کامل‌تری اونا رو آموزش میدم. امیدوارم که این آموزش هم براتون مفید بوده باشه.منبع: آموزش پایتون به زبان ساده: آشنایی با لیست‌ها - وبسایت شخصی محمدحسین میثاق‌پور</description>
                <category>محمدحسین میثاق‌پور</category>
                <author>محمدحسین میثاق‌پور</author>
                <pubDate>Fri, 10 Apr 2020 16:12:01 +0430</pubDate>
            </item>
                    <item>
                <title>آموزش پایتون به زبان ساده: ریاضیات</title>
                <link>https://virgool.io/python-learning/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%D8%A8%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-%D8%B3%D8%A7%D8%AF%D9%87-%D8%B1%DB%8C%D8%A7%D8%B6%DB%8C%D8%A7%D8%AA-udbsiitmi2rs</link>
                <description>امروز قصد دارم که با یکی از مهم‌ترین مباحث پایه‌ای در برنامه‌نویسی صحبت کنیم و اون ریاضیات در پایتون هستش. البته شما هم شاید جزو اون دسته افرادی باشید که با ریاضیات میانه خوبی ندارین. اما نگران نباشید در این مقاله سعی می‌کنم که مطالب خیلی پیچیده‌ای نگم و در حد نیازمون یه سری مطالب رو به بیان ساده بگم.خب قبل از شروع بیایم یه مروری بر موضوعاتی که قراره تو این قسمت بیان داشته باشیم.کار با Python Shell به عنوان ماشین‌حساببررسی انواع اعداد در پایتون – به طور کلی سه نوع عدد در پایتون وجود داره: اعداد صحیح، اعشاری و مختلطانواع عملگرهای ریاضی و اولویت عملگرهاکار با Python Shell به عنوان ماشین حساباحتمالا می‌دونید که کامپیوترها نوعی ماشین‌حساب هستند البته از نوع پیشرفته‌اش. و البته تاریخچه کامپیوتر هم بر میگرده به زمان اختراع ماشین حساب‌ها. حالا اینو گفتم که چی؟ این ابزاری که ما قراره باهاش کار کنیم اسمش IDLE هستش. توی این محیط می‌تونیم ما کدهامون رو خط به خط بنویسیم و اجرا کنیم. همچنین این محیط یه قابلیتی شبیه ماشین حساب داره. مثلا می تونید عبارات ریاضی و محاسباتی مختلفی رو در محیط پایتون شل خط به خط وارد کنید و نتیجه رو ببینید. اجازه بدین با یه مثال این مطلب رو توضیح بدم:ابتدا نرم افزار IDLE رو اجرا کنید.حالا یه عبارت ریاضی مثل زیر رو تایپ کنید و Enter رو بزنید. مثلا:11 + 3 – 4همون طور که دیدین، میشه از این محیط به عنوان ماشین‌حساب هم استفاده کرد و انواع عملیات ریاضی پیچیده‌تری هم انجام داد که مثلا شامل ضرب و تقسیم و توان و چیزای دیگه هم باشه. پیشنهاد می‌کنم که به این مثال اکتفا نکنید و خودتون موارد دیگه‌ای رو هم امتحان کنید.اما یه سوال؟ زمانی که ما مثلا یه سری عبارات پیچیده داریم که ترکیبی از ضرب و تقسیم و جمع و… هستند اونا رو با چه ترتیبی محاسبه کنیم؟ مثلا اول جمع و تفریق ها رو حساب کنیم یا ضرب و تقسیم ها رو؟ اینجاست که اولویت عملگرها اهمیت پیدا می‌کنه.انواع عملگرهای ریاضیخب اول اجازه بدین که انواع عملگرهای ریاضی رو معرفی کنیم. همون‌طور که می‌بینید در ادامه جدول عملگرهای حسابی رو قرار دادم.خب همون طور که میدونید در عبارات ترکیبی و پیچیده طبیعتا باید یه قانون یا اولویتی برای به کارگیری این عملگرها باشه که در جدول پایین به ترتیب اولولیت عملگرها از بالا به پایین اومده.خب فکر می‌کنم بهتره که یه خورده هم عملی کار کنیم و از تئوری فاصله بگیریم.گفتیم که از محیط پایتون شل میشه به عنوان یه ماشین حساب استفاده کرد. اما این کار یه مشکلی داره. چی مثلا؟تا اینجا که این قابلیت شبیه ماشین حساب های معمولیه. اما بعضی مواقع ما نیاز داریم که محاسبات و عبارات خودمون رو ذخیره داشته باشیم و هر بار مجبور نباشیم که اونها رو بنویسیم. اینجاست که باید یه برنامه یا کد رو تو محیط ویرایشگر بنویسیم.برای اینکار از همون محیط پایتون شل، از منوی File -&gt; New File یه پرونده جدید باز کنید و کدهای خودتون رو داخلش بنویسید.توضیح:برای اینکه عبارات خودمون رو ذخیره داشته باشیم باید از متغیرها کمک بگیریم و بهشون مقدار بدیم. مثلا فرض کنید که میخوایم فرمول محاسبه مساحت و محیط یه مستطیل رو بدست بیاریم. خب همون طور که می‌دونید برای حل مسایل ریاضی سه تا عامل داریم:ورودیفرمولخروجیبرای مثال:ورودی‌های ما طول و عرض هستند که به ترتیب با tool و arz مشخص می‌کنیم.فرمول محاسبه مساحت و محیط مربع هم رو که همه بلدید.مساحت = حاصل ضرب طول در عرضمحیط = دو برابر حاصل جمع طول و عرضخروجی ما هم که همون مقادیر مساحت و محیط هستندخب حالا میخوایم یه برنامه خیلی ساده بنویسیم که همین عملیات ساده رو برای ما انجام بده و نتیجه رو توی خروجی نشون بده:tool = 4
arz = 3masahat = tool * arz
mohit = (tool + arz) * 2print(“masahat: “,masahat)
print(“mohit: “,mohit)بعد از نوشتن کدها، برنامه‌تون رو ذخیره کنید و اون رو اجرا کنید. اگه اجرای برنامه رو بلد نیستید، پیشنهاد می‌کنم که قسمت نصب و راه‌ندازی پایتون رو یه نگاهی بهش بیندازین.بعد از اجرا شما باید چنین خروجی‌ای رو داشته باشین:خب این یک مثال ساده بود و شما می‌تونید برای یادگیری بهتر خودتون مثال‌های دیگه‌ای رو هم در نظر بگیرین و کدهاشو بزنید. توصیه می‌کنم که علاوه بر مثال‌هایی که توی این آموزش‌ها گفته میشه خودتون هم دست به کیبرد باشین و بیشتر کد بزنین.این مقاله هم به پایان رسید. امیدوارم که از مطالب و توضیحات اون لذت برده باشین.منبع: آموزش پایتون به زبان ساده: ریاضیات - وبسایت شخصی محمدحسین میثاق‌پور</description>
                <category>محمدحسین میثاق‌پور</category>
                <author>محمدحسین میثاق‌پور</author>
                <pubDate>Fri, 10 Apr 2020 15:53:53 +0430</pubDate>
            </item>
                    <item>
                <title>آموزش پایتون به زبان ساده: رشته‌ها</title>
                <link>https://virgool.io/python-learning/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%D8%A8%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-%D8%B3%D8%A7%D8%AF%D9%87-%D8%B1%D8%B4%D8%AA%D9%87%D9%87%D8%A7-u4aads0poovp</link>
                <description>همه‌ی برنامه‌نویسان به متن‌ها در زبان‌های برنامه‌نویسی رشته یا string میگن. رشته همون‌طور که از نامش پیداست یعنی باید شامل رشته‌ای از یک سری چیزها باشه. ما تو دنیای واقعی هم کلمه رشته‌ها رو به کار می‌بریم مثلا رشته گردنبند یا رشته تسبیح! و در دنیای کامپیوتر هم رشته یعنی رشته‌ای از کاراکترها. کاراکترها همون حروف الفبا و اعداد و یه سری علایم نشانه‌گذاری مثل . – + و … هستند. خلاصه هر کلیدی که روی صفحه کلیدتون می‌بینید یه کاراکتره!اجازه بدین تا با نحوه‌ی تعریف رشته‌ها در پایتون با یه مثال آشنا بشین.str1 = ‘hello world’
print(str1)این مثال یکی از مثالهای ابتدایی هستش که قبلا هم داشتیم. در واقع برای تعریف رشته‌ها ما باید اول و آخر اونا رو کاراکترهای نقل‌قول قرار بدیم. می تونید از تک‌کوتیشین ‘ یا دابل‌کوتیشین “ استفاده کنید.اگر بخواین رشته‌های چندخطی داشته باشین باید رشته هاتون بین سه تا علامت نقل‌قول یا کوتیشین قرار بگیره مثل کد زیر:str1 = ‘’’ hello world
How are you? ’’’خب در ادامه قصد داریم تا برای کار با رشته‌ها و انجام یه سری دستکاری‌ها چند تا مورد رو بررسی کنیم. کارای زیادی میشه با رشته ها انجام داد. مثلا:اونا رو با هم دیگه ترکیب کرد.به یه فرمت خاص اونا رو نشون دادو کلی کارای دیگهکه البته توی این مقاله فرصت نمی‌کنیم همه‌شون رو بررسی کنیم و فقط برای نمونه چند تاشون رو میگیم.چسباندن رشته‌هافرض کنید شما می‌خواین نام و نام‌خانوادگی خودتون رو که در متغیرهای جداگانه‌ای ذخیره شده‌اند رو توی یه متغیر جدید بریزین و در واقع یه رشته جدید از اونا بسازین. برای این منظور باید از عملگر + کمک بگیرین. به مثال زیر توجه کنید:first_name = ‘ali’
last_name = ‘ahmadi’
full_name = first_name + last_name
print(full_name)اگه برنامه رو اجرا کنید با چنین خروجی‌ای مواجه میشین:aliahmadiخب همون‌طور که می بینید یه خورده خوانایی این عبارت سخته و بهتر بود که بین نام و نام خانوادگی یه فاصله باشه. برای این منظور میتونید در متغیر first_name بعد از کلمه ali یه فاصله ایجاد کنید و تغییرات رو ذخیره و کدتون رو اجرا کنید.برای اینکه بخواین همین مثال بالا که نمایش نام و نام خانوادگی بود رو با ساختار قشنگ تری بنویسید می‌تونید یه تغییر تو کد بالا بدین. به این صورت که مقدار full_name رو عوض کنید‌. به مثال زیر دقت کنید:full_name = “Your first name is: “ + first_name + ”. Your last name is: “ + last_nameتغییرات رو ذخیره و برنامه رو اجرا کنید.البته از یه راه دیگه‌ای هم میشه خروجی مشابهی تولید کرد و اون استفاده از تابع format هستش.تابع format() - ورژن قدیمیبا یک مثال می تونیم طرز کار این تابع رو متوجه بشیم.full_name = “Your first name is: {}. Your last name is: {}”.format(fist_name,last_name)توضیح:در مثال بالا مقدار نهایی full_name همون مقدار قبلی هستش ولی خب یه جور دیگه تعریف شده. همون‌طور که می‌بینید داخل نقل‌قول‌ها بعد از عبارت “Your ..” یه جفت آکلاد {} اومده و در آخر رشته هم دوباره آکلاد اومده. بعد از پایان رشته علامت نقطه . اومده به همراه تابع format که داخل اون تابع دو تا متغیر به نام های first_name و last_name اومده. حالا این تابع چیکار می کنه؟این تابع به ترتیب به جای {} ها مقادیر fist_name و last_name رو قرار میده و اگه برنامه رو اجرا کنید. همون خروجی قبلی رو می بینید.نکته:این نسخه از تعریف تابع format ویژه ورژن‌های قدیمی پایتون هستش. در نسخه‌های جدید پایتون یه نوع دیگه هم از این تابع داریم که میشه اونو استفاده کرد. البته در نسخه‌های جدیدتر هم این تابع قدیمی کار می‌کنه.تابع format() - ورژن جدیداجازه بدین که مثال قبلی رو با استفاده از نوع جدید این تابع بازنویسی کنیم.full_name = f“Your first name is: {first_name}. Your last name is: {last_name}”ایجاد فاصله در رشته‌هاگاهی اوقات ما تصمیم می‌گیریم که برای خوانایی نوشته‌هامون تو خروجی بین اونا فاصله ایجاد کنیم. اونم نه یکی بلکه چندتا!و یا بعضی از اوقات ادامه‌ی رشته‌هامون از سطر جدیدی شروع بشن. در اینجا ما در رشته‌ها از یه سری کاراکترهای مخصوصی استفاده می‌کنیم که اصطلاحا بهشون escape میگن و با یه فرمت خاصی توی خروجی نشون داده میشن. در این مقاله قصد داریم که دو تا از اونها رو معرفی کنیم:خط جدید – n\فاصله تب – t\کاراکترهای escape با \ یا بک اسلش شروع میشن و بعد از اونا یه حرفی میاد که نشون دهنده یه کاربرد خاصیه. ترجیح میدم که یه مثال رو اجرا کنید و خروجی رو با دقت بررسی کنید و متوجه بشین.message = ‘Your name:Ali\tYour Last name: Ahmadi\nHow are you?’
print(message)در نگاه اول شاید رشته‌تون یه جوری باشه و اصطلاحا بهم ریخته به نظر بیاد. اما بهتره که اونو اجرا کنید و خروجی رو بررسی کنید.در ادامه متوجه میشین که در خروجی به جای t\ به اندازه ۴ تا فاصله یا یه تب داریم. و بعد از اون هم بعد از n\ ادامه‌ی رشته از خط جدید شروع شده.با رشته‌ها کارای زیادی میشه انجام داد. برای این منظور توابع مختلفی هم برای کار با اونا ایجاد شده‌اند که البته توی این مقاله به اونا نپرداختیم و صرفا یه آشنایی کلی با رشته‌ها بدست آوردیم. اما حیفم اومد این تابع پرکاربردی رو نگم و اون حذف فاصله‌هاست.حذف فاصله در رشته‌هادر دنیای برنامه‌نویسی رشته با فضای خالی و فاصله با رشته‌ها بدون فاصله تفاوت داره. مثلا فرض کنید یه فرم ثبت‌نام قراره پردازش بشه و کاربر در انتهای فیلد بعد از وارد کردن یوزرنیم یه فاصله هم ایجاد میشه. تو این مواقع ما نیاز داریم که فاصله‌های اضافی اول یا آخر یه رشته رو حذف کنیم. از این رو از تابع strip استفاده می‌کنیم. مثال:user_name = ‘ Ali ‘
print(user_name.strip())این قسمت از مقاله هم به پایان رسید. اگرچه برای کار با رشته‌ها توابع و متعدد زیادی تعریف شده که اگه مایل باشین می‌تونین با یه جستجو تو اینترنت نحوه‌ی استفاده از اونا رو یاد بگیرین. امیدوارم که این قسمت هم براتون مفید بوده باشه.منبع: آموزش پایتون به زبان ساده: رشته‌ها - وبسایت شخصی محمدحسین میثاق‌پور</description>
                <category>محمدحسین میثاق‌پور</category>
                <author>محمدحسین میثاق‌پور</author>
                <pubDate>Fri, 10 Apr 2020 15:39:44 +0430</pubDate>
            </item>
                    <item>
                <title>آموزش پایتون به زبان ساده: توضیحات</title>
                <link>https://virgool.io/python-learning/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%D8%A8%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-%D8%B3%D8%A7%D8%AF%D9%87-%D8%AA%D9%88%D8%B6%DB%8C%D8%AD%D8%A7%D8%AA-wxp4rifcc2sr</link>
                <description>یکی از موضوعاتی که تقریبا در همه زبان‌های برنامه‌نویسی وجود داره کامنت‌ها یا توضیحات هستند اگرچه در بعضی زبان‌ها شیوه‌ی به کارگیری‌شون متفاوته، اما کابردشون یکیه. تو این قسمت قصد داریم تا به موضوع توضیحات یا کامنت‌ها در زبان پایتون بپردازیم. این که اصلا کاربرد اونا چیه و چه جوری تعریف میشن.کامنت (Comment) چیه؟توضیحات قسمتی از کدهای ما هستند که توسط کامپیوتر اجرا نمیشن و به عبارتی اونها نادیده گرفته میشن و هر چیزی می تونه باشه و در استفاده از اونا محدودیتی وجود نداره. خب یه سوال اگه قراره که این قسمت از کدها توسط برنامه اجرا نشن پس چه به دردی میخوره؟ علت استفاده از اونا رو در ادامه میگم.کاربردهای توضیحات در برنامه‌نویسیکدنویسی تمیز (Clean Code)درسته که کامپیوتر کدها رو اجرا می کنه، اما یه مساله‌ی دیگه‌ای که هست اینه که این کدها توسط برنامه‌نویسان و عوامل انسانی خونده میشن. پس لازمه که در بخش‌هایی از برنامه یه سری توضیحاتی رو بنویسیم که مثلا فلان بخش چه کاری رو انجام میده. کاربردش زمانی مشخص میشه که بعد از چند ماه دوباره سراغ اون کد میریم و متوجه میشیم که اینجای برنامه چیکار می‌کنه. همچنین توی کارهای گروهی خوندن برنامه ما توسط برنامه‌نویسای دیگه راحت‌تر میشه و اینجاست که مباحثی مثل کدنویسی تمیز یا Clean Code توی پروژه‌ها اهمیت پیدا می‌کنه و این موضوع هم به نفع شماست هم برنامه نویسای دیگه!باگ‌یابی و رفع اشکال (Debugging)یکی از دیگه از کاربردهای کامنت در بحث باگ‌یابی یا رفع اشکال کد هستش. در آینده پروژه‌های شما بزرگ میشن و خب طبیعتا به وجود اومدن مشکلات یه امر طبیعی هستش. در اون مواقع شما میخواین از عملکرد درست یه سری خط‌ها مطمئن بشین اینجاس که می‌تونید یه بخشی از کدهاتون رو به کامنت تبدیل کنید به این معنی که برنامه اون قسمت رو اجرا نکنه تا اینجوری شاید بتونید سریع‌تر مشکل‌تون رو رفع کنید.خب حالا که فهمیدین توضیحات یا کامنت‌ها (Comments) چی هستند و چه کاربردی دارند اجازه بدین که با یه مثال توی پایتون این موضوع رو بررسی کنیم. مثال زیر رو در نظر بگیرین.# print welcome function
print(‘hello world’)در مثال بالا خط اول با یه علامت # شروع شده و این علامت نشون‌دهنده‌ی اینه که از اینجا تا آخر خط یه توضیح هستش و کامپیوتر اونو نادیده می گیره و اجرا نمی‌کنه اما همون‌طور که گفتم این کار به ما کمک می‌کنه که بفهمیم این قسمت از کد چیکار می‌کنه.چند تا نکته:لازم نیست که کامنت‌ها حتما از اول خط شروع بشن، بلکه می‌تونند در وسط خط هم تعریف بشن. اما دقت کنید هرجا علامت # اومد این یعنی هرچیزی که نوشته شده رو تا آخر خط کامنت در نظر بگیر مثل مثال زیر:print(‘hello world’) # print welcome functionنکته‌ی دیگه اینکه این نوع از کامنت‌ها تک‌خطی هستند و اگه مجبور شدین ادامه توضیحات رو در خط بعد بنویسین، باید برای هر خط به طور جداگانه علامت # قرار بدین. مثال زیر اشتباهه:# hello world
how are you?
print(‘hello world’)و باید مثلا این طوری اصلاح بشه:# hello world
# world functionکامنت‌های چندخطیکامنت‌های چندخطی رو یه جور راحت‌تر دیگه هم میشه تعریف کرد و اونجوری مجبور نیستیم که برای هر خط، # بذارین.به این صورت که کامنت‌های خودتون چه یه خط چه صد خط! بین ۳ تا علامت نقل‌قول قرار بگیرن. هم علامت نقل‌قولی تکی میتونه هم دوتایی مثال:”’
hello world
how are you?
”’
print(“Hello world”)جمع بندیتو این قسمت با کامنت‌ها یا توضیحات آشنا شدیم و خلاصه‌ی کلام اینکه کامنت‌ها اجباری نیستند و اختیاری‌اند. اما از من می‌شنوید عادت‌کردن به کامنت نویسی یه امر مستحبیه! علی الخصوص توی پروژه‌ها که میشه گفت یه کار مستحب اکیده!چه جالب یه خورده هم اصطلاحات فقهی به کار بردیم همش که نمیشه این عبارات خارجکی رو به کار ببریم. اینجوری یه تنوعی هم ایجاد میشه.این قسمت از آموزش هم به پایان رسید. امیدوارم که از این مقاله هم لذت برده باشین.منبع: آموزش پایتون به زبان ساده: توضیحات - وبسایت شخصی محمدحسین میثاق‌پور</description>
                <category>محمدحسین میثاق‌پور</category>
                <author>محمدحسین میثاق‌پور</author>
                <pubDate>Fri, 10 Apr 2020 12:51:30 +0430</pubDate>
            </item>
                    <item>
                <title>آموزش پایتون به زبان ساده: متغیرها</title>
                <link>https://virgool.io/python-learning/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%D8%A8%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-%D8%B3%D8%A7%D8%AF%D9%87-%D9%85%D8%AA%D8%BA%DB%8C%D8%B1%D9%87%D8%A7-kxk6gszi1hxf</link>
                <description>یکی از اجزای پایه‌ای و مشترک در زبان‌های برنامه‌نویسی متغیرها هستند. در واقع ما برای راحتی کارمون برای داده‌های مختلف یه سری نام‌هایی رو انتخاب می‌کنیم و با اونا کار می‌کنیم. اجازه بدین برای اینکه مفهوم رو توضیح بدم یه مثال بزنم.ما توی واقعی با اشیاء زیادی سر و کار داریم و برای هر کدوم یه نامی رو در نظر گرفته‌ایم. مثلا ما به یه وسیله‌ای که چهارتا پایه داره و یه تخته بزرگ میگیم: میز و در مکالمات‌مون هم وقتی می‌گیم میز یعنی اون وسیله‌ای که چهار تا پایه داره و یه تخته و برای اینکه بخوایم به اونا اشاره کنیم نمیایم اونا رو تعریف کنیم و فقط کافیه که اسمشون رو ببریم. خب همون‌طور که می‌دونید این نام‌گذاری‌ها قراردادی‌اند مثلا همین کلمه میز رو انگلیسی‌ها بهش میگن table.متغیر چیه؟توی برنامه‌نویسی هم به جای اینکه بخوایم از خود داده‌ها استفاده کنیم، یه متغیرها یا برچسب‌هایی رو براشون تعریف می‌کنیم و در طول برنامه از اونا استفاده می‌کنیم.اجازه بدین این موضوع رو با یه مثال توضیح بدم. بیاین همون برنامه hello world رو یه بار دیگه بررسی کنیم.print(‘hello world’)این برنامه رو به این صورت هم میشه نوشت:message = ‘hello world’
print(message)توضیح:تو این تکه کد بالا ابتدا یه متغیر تعریف کردیم و عبارت ‘hello world’ رو بهش مقدار دادیم.در خط بعدی فقط کافیه که اسم اون متغیر رو چاپ کنیم. و نکته‌ای که اینجا هستش اگه خروجی رو ببینید، مقدار پیام رو نشون میده یعنی hello world نه عبارت message رو.میشه درباره کار با متغیرها بیشتر توضیح بدی؟خب حالا بیاین یه خورده با جزییات بیشتری متغیرها رو بررسی کنیم.در ابتدای هر خط ابتدا باید یه اسمی رو برای متغیری در نظر بگیریم که البته برای نام‌گذاری متغیرها یه سری قوانین وجود داره که در ادامه بهش می پردازیم. برای مثال ما اینجا message رو در نظر گرفته‌ایم.بعد از اون کاراکتر  = میاد که به معنی انتساب هستش یعنی قراره یه مقداری رو به یه متغیری انتساب بدیم.بعد از = یه داده‌ای باید نوشته بشه. داده‌های مختلفی با انواع متفاوتی تو پایتون وجود داره مثل متنی، عددی، لیست‌ها، بولین و… که توی این مقاله قصد نداریم به توضیح دقیق اونا بپردازیم و در قسمت‌های بعد اونا رو توضیح میدیم فقط بدونید تا اینجای کار یه قاعده‌ی مشترکی وجود داره.توی این مثال بالا ما با یه داده متنی یا رشته string کار می‌کنیم. مثلا برای تعریف و کارکردن رشته‌ها یه قانون وجود داره و اون اینه که رشته‌ها حتما باید بین دو تا علامت نقل‌قول “ یا ‘ قرار بگیرند مثل عبارت بالا ‘hello world’.چند اصل در نام‌گذاری متغیرهاخب حالا بیاین یه سری قوانین در نام‌گذاری رشته‌ها رو با هم بررسی کنیم:متغیرهای شما حتما باید با یه حرف الفبا یا _ شروع بشه و نمی تونه به غیر از اینا مثلا با یه عدد شروع بشه.مثلا مثال زیر اشتباهه:1message = ‘hello’اما این عبارت درسته:message1 = ‘hello’متغیرها حساس به متن هستند یعنی به حروف کوچک و بزرگ انگلیسی حساس‌اند. مثلا متغیر name با Name تفاوت داره.در نام‌گذاری متغیرها فاصله مجاز نیست مثلا کد زیر اشتباه هستش:my message = ‘hello world’بهتره که این کد رو بدون فاصله بنویسیمmy_message = ‘hello world’همون طور که از نام متغیر پیداست یعنی چیزی که قابل تغییر هستش. برای اینکه این موضوع روشن بشه تکه کد زیر رو بنویسید و اونو اجرا کنید. اگه هنوز کدی اجرا نکردین می تونید مقاله … رو بخونین.message = ‘hello’
print(message)
message = ‘hello world’
print(message)توضیح: تو خط اول یه متغیر با نام message تعریف کردیم و مقدار ‘hello’ رو بهش انتساب دادیم.در خط بعدی مقدار این متغیر تو خروجی یا صفحه مانیتور نشون داده میشه.در خط سوم همون متغیری که قبلا تعریف کردیم رو مقدارش رو عوض کردیم و در خط بعد دوباره ازش یه خروجی گرفتیم.به عبارتی اگه اون یه نامی رو برای اولین بار برای یه متغیر تو برنامه استفاده کنیم و اونو مقدار بدیم، یعنی یه متغیر جدید تعریف کردیم اما اگه چند خط بعد یه متغیری که قبلا با یه نام خاص تعریف شده و مقدار داده شده رو دوباره مقدار بدیم، این یعنی ما مقدار اونو تغییر دادیم یا اصطلاحا بروزرسانی یا update کرده ایم.تو مقالات بعد به تفصیل درباره انواع داده‌ها توی پایتون صحبت می‌کنیم و کار با اونا رو یاد می‌گیریم. امیدوارم که از این مقاله لذت برده باشین.منبع: آموزش پایتون به زبان ساده: متغیرها - وبسایت شخصی محمدحسین میثاق‌پور</description>
                <category>محمدحسین میثاق‌پور</category>
                <author>محمدحسین میثاق‌پور</author>
                <pubDate>Fri, 10 Apr 2020 12:43:34 +0430</pubDate>
            </item>
                    <item>
                <title>آموزش پایتون به زبان ساده: نصب و راه‌اندازی</title>
                <link>https://virgool.io/python-learning/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%D8%A8%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-%D8%B3%D8%A7%D8%AF%D9%87-%D9%86%D8%B5%D8%A8-%D9%88-%D8%B1%D8%A7%D9%87%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C-g6kbh5serfq8</link>
                <description>تو این قسمت میخوایم محیط کار و ابزارهای مورد نیاز خودمون رو تهیه کنیم. همون‌طور که می‌دونید برنامه‌نویسی یه حرفه و شغل محسوب میشه و خب مثل بقیه شغل‌ها نیاز به یه سری ابزارهایی داره. همون‌طور که یه نجار یا مکانیک یه سری آچارها و ابزارهایی داره طبیعتا یه برنامه‌نویس هم در شروع کار باید ابزارهای خودش رو تهیه کنه.یه خبر خوش! این ابزارها در واقع برای برنامه‌نویسان همون محیط‌های ویرایشگر کد میشه. قاعدتا باید ابزارها و محیط‌های زیادی برای برنامه‌نویسی پایتون توی وب موجود باشه. از ساده گرفته تا پیچیده. اما ما قصد داریم که برای اهداف آموزشی خودمون با یه ابزار نسبتا ساده و کاربردی که از مرجع اصلی خود پایتون هست کار کنیم.برای این منظور بهتره که به سایت python.org مراجعه کنید و به بخش دانلود اون برین و با توجه به سیستم عاملتون، یکی‌شون رو دانلود کنید. از اونجایی که اکثر کاربران ویندوزی هستند من نسخه‌ی ویندوزی‌اش رو دانلود و نصب کردم. اسم این ابزار به انگلیسی IDLE هستش این کلمه مخفف عبارت “Integrated DeveLopment Envoronment” هستش یعنی محیط توسعه یکپارچه.حالا این ابزار چی هستش؟به بیان دیگه برنامه‌نویسان نیاز به یه سری ابزار و محیط دارند تا بتونند کدهاشون رو بزنن. اونها رو اجرا و باگ‌یابی کنند و خلاصه برنامه‌های خودشون رو مدیریت کنند که البته تو زبان‌های دیگه IDE گفته میشه اما توی پایتون IDLE.خب بعد از دانلود این نرم‌افزار شما باید اونو نصب کنید که توی ویندوز خیلی ساده است شبیه همون برنامه‌هایی که شامل چند تا next و finish هستش.تو این محیط شما میتونید به دو طریق باهاش کار کنید:یکی اینکه به صورت لحظه‌ای کدهاتون رو خط به خط توش وارد کنید و نتیجه رو ببینید. یعنی خط به خط کدهاتون رو وارد کنید و اینتر بزنید و نتیجه رو ببینید. اما این روش در بعضی موارد جالب نیست. مثلا اگه برنامه رو ببندید دیگه کدهاتون از بین می بره و برای دفعه بعد مجبورین که دوباره اونا رو تایپ و اجرا کنید. خب پس چه روشی خوبه؟روش مناسب‌تر اینه که ما کدهای خودمون رو داخل یه فایل که با پسوند py هستش ذخیره کنیم و اونا رو اجرا کنیم.برای این منظور می‌تونید با استفاده از مسیر زیر یه فایل ایجاد کنید.File -&gt; New Fileبعد از اون یه پنجره‌ی جدید براتون باز میشه که می‌تونید کدهاتون رو وارد کنید و اجرا کنید.خب بیاین دست به کیبرد بشین و اولین برنامه رو بنویسیم. برنامه‌ای که میان برنامه‌نویسان خیلی مشهوره.سلام جهان – hello worldاین دستورات رو توی محیط ویرایشگر متنی بنویسید.print(‘hello world’)فایل‌تون رو ذخیره کنید. برای این منظور می‌تونید از مسیر زیر یا با استفاده از میانبر ctrl + s فایل‌تون رو ذخیره کنید.File -&gt; Saveبعد از اون برنامه نوبت به اجرای برنامه‌تون میرسه. برای این کار با استفاده از میانبر F5 یا از طریق مسیر زیر اونو اجرا کنید.Run -&gt; Run Moduleحالا می‌تونید در محیط python shell نتیجه برنامه‌تون رو ببینید که شامل خروجی زیره:hello worldتبریک! شما اولین برنامه خودتون به زبان پایتون رو نوشتین و با موفقیت اونو اجرا کردین. به دنیای برنامه‌نویسی خوش اومدین.این ساده‌ترین برنامه‌ای هستش که اکثر برنامه‌نویسان در اولین برنامه‌هاشون می‌نویسند. در ادامه قراره که آموزش‌های پیچیده‌تری از این زبان رو یاد بگیرین و امکانات پیشرفته‌تری از این زبان رو یاد بگیرین و با دونستن اونا برنامه‌های کاربردی زیادی بنویسین.نگران نباشید ما به تدریج و اصطلاحا “لقمه لقمه” این مباحث رو پیش می بریم.امیدوارم که از مطالعه این قسمت لذت برده باشین.منبع: آموزش پایتون به زبان ساده: نصب و راه‌اندازی - وبسایت شخصی محمدحسین میثاق‌پور</description>
                <category>محمدحسین میثاق‌پور</category>
                <author>محمدحسین میثاق‌پور</author>
                <pubDate>Fri, 10 Apr 2020 12:34:52 +0430</pubDate>
            </item>
            </channel>
</rss>