بایگانی برچسب: s

آموزش زبان ++C - مقدمه

آموزش برنامه نویسی ++C – الگوریتم های پر کاربرد – قسمت دوم

در این مقاله قصد آموزش الگوریتم مرتب سازی تعویضی و یک الگوریتم برای جابجایی مقادیر دو متغیر بدون استفاده از متغیر کمکی.

مرتب سازی تعویضی

در الگوریتم های مرتب سازی قصدمان این است که اعداد یک آرایه ی عددی را  به صورت صعودی یا نزولی مرتب کنیم.
الگوریتم های مرتب سازی آرایه انواع مختلفی دارند مانند: حبابی ، تعویضی ، shell ، quick sort و… .
در این الگوریتم مرتب سازی هر اندیس آرایه با اندیس های بعد از خود مقایسه می شود و طبق شرط مقایسه ی مان اعداد آرایه را مرتب می کنیم.
شرط مقایسه :
صعودی: اگر این عدد از این اندیس آرایه بزرگتر از اعداد بعد از خود بود آن ها را با هم تعویض کن.
نزولی: اگر این عدد از این اندیس آرایه کوچکتر از اعداد بعد از خود بود آن ها را با هم تعویض کن.

توضیحات الگوریتم مرتب سازی

فرض کنید آرایه ی ما این باشد:

روش مرتب سازی به این صورت خواهد بود:
گام اول: اندیس صفرم یعنی ۳ ابتدا با ۰ بعد با ۱ سپس با ۲ و سپس با ۵ مقایسه می شود
گام دوم: اندیس یک یعنی ۰ با ۱ و ۲ و ۵ مقایسه می شود
و در گام های بعدی هم به همین صورت ادامه خواهد داشت.
در تصویر می توانید بهتر متوجه شوید:
sort_tavizi
مقایسه ها با خط نمایش داده شده است.
کد

خروجی:
Osort

توضیحات: ما ابتدا یک آرایه تعریف کردیم با یک متغیر به نام temp که بتوانیم با استفاده از آن مقادیر آرایه را جا به جا کنیم سپس در for تودرتو الگوریتم مرتب سازی را اجرا کردیم و در for بعدی آرایه ی مرتب شده را نمایش دادیم.
شرط ما در if این است که اگر مقدار اندیس آرایه با مقدار اندیس های بعد از خود بزرگتر بود آن ها را با متغیر کمکی جابجا کن.
برای اینکه ما دو مقدار از دو اندیس آرایه را با هم جابه جا کنیم به یک متغیر کمکی نیاز داریم و به همان صورت که در داخل بلوک if میبینید دو مقدار را جابه جا می کنیم.
در این شرط آرایه ما آرایه را به صورت صعودی مرتب کردیم ولی اگر شما بخواهید آن را به صورت نزولی مرتب کنید فقط کافیست شرط آرایه را بر عکس کنید به صورت:

جابجایی مقادیر دو عدد بدون استفاده از متغیر کمکی

برای جا به جایی دو مقدار در دو متغیر ما به متغیر کمکی نیاز داریم ولی اگر کسی بخواهد بدون استفاده از آن متغیر کمکی دو مقدار را جا به جا کند باید چه کار کرد؟
ما می توانیم با استفاده از عملگر های محاسباتی آن دو مقدار را جا به جا کنیم.

خروجی:
jabejayi

سی شارپ #C

آموزش برنامه نویسی #C – متدها

با سلام در این جلسه می خوام  شما رو با متدها آشنا کنم با ما همراه باشید

متدها:
یک متد، یک تکه کد است که وظیفه خاصی را انجام می دهد . متدها که پروسیجر هم نامیده می شوند به دو دلیل اهمیت زیادی دارند. دلیل اول این است که آنها برنامه را به قسمت کوچکتر تقسیم می کنند و موجب می شوند که برنامه بهتر درک شود. دوم اینکه آنها قابلیت استفاده مجدد از کدها را افزایش می دهند.استفاده مجدد ازکدها به اندازه ای مهم است که از این به بعد بیشتر وقت خود را صرف آن می کنید.
همانطور که میدانید، هنگامی که شروع به نوشتن یک برنامه می کنید ، ابتدا باید الگوریم کلی آن را تهیه کرده و سپس جزئیات هر قسمت از الگوریتم را به کد تبدیل کنید تا کل بخشهای الگوریتم را به صورت کد داشته باشید ، سپس با کنار هم قرار دادن این کدها به الگوریتم کلی می رسید.یک متد، یکی از خطهای این الگوریتم کلی را اجرا می کند، برای مثال “یک فایل را باز کن”،”یک متن را روی صفحه نمایش بده”،”یک صفحه را چاپ کن”ویا مواردی از این قبیل.
دانستن این که چگونه یک برنامه را به چند قسمت کوچکتر تقسیم کنید موردی است که به تجربه بستگی دارد. اهمیت تقسیم کردن یک برنامه به چند قسمت کوچک وتاثیر آن در سادگی برنامه را زمانی مشاهده خواهید کرد که برنامه بسیار پیچیده تری نسبت به آنهایی که تاکنون نوشته اید، بنویسید،در ادامه سعی می کنیم به شما بگوییم چرا و چگونه باید از متدها استفاده کنیم.

چرا از متدها استفاده می کنیم؟

در استفاده از متدها،شما باید اطلاعاتی که یک متد برای اجرا به آنها نیاز دارد را فراهم کنید تا نتیجه مطلوبی دریافت کنید. این اطلاعات ممکن است یک عدد صحیح،یک رشته متنی ویا ترکیبی از هردو باشد.
این اطلاعات به عنوان مقادیر ورودی خوانده می شوند.البته بعضی از متدها ورودی دریافت نمی کنند، بنابراین داشتن مقادیر ورودی یرای یک متد لازم نیست. یک متد با استفاده از این اطلاعات ورودی ونیز یک سری اطلاعات درونی سعی میکند تا وظیفه خود را انجام دهد.
هنگامی که این اطلاعات را به برنامه می فرستید، در اصطلاع داده به تابع فرستاده اید. به این داده ها پارامتر نیز گفته می شود.در نهایت برای استفاده از یک تابع شما باید آن را فراخوانی کنید. خلاصه ، شما یک متد را فراخوانی می کنید و داده های مورد نیاز آن را به وسیله پارامترها به آن می فرستید.
همانطور که قبلا گفتیم، دلیل استفاده از یک تابع این است که از یک قطعه کد چندین مرتبه استفاده کنیم. برای این کار ابتدا باید بتوانیم الگوریتم برنامه را در حالت کلی بررسی کنیم سپس قسمت هایی که ممکن است چند بار به آنها نیاز پیدا کنیم را مشخص کنیم. بعد از مشخص کردن این قسمتها، می توانیم آنها را با استفاده از متدها بنویسیم وسپس متدها را چندین مرتبه در برنامه استفاده کنیم.
برای مثال تصور کنید که برنامه شما از الگوریتم های زیادی تشکیل شده است . بعضی از این الگوریتم ها برای محاسبات خود نیاز دارند که بتوانند محیط دایره را محاسبه کنند. چون بعضی از قسمت های الگوریتم ما نیاز دارند که نحوه محاسبه محیط دایره را بدانند،استفاده از یک متد در این مورد می تواند مناسب باشد. شما می توانید متدی بنویسید که بتواند محیط یک دایره را با دانستن شعاع آن محاسبه کند، سپس در هر قسمت از الگوریتم که به محاسبه محیط نیاز بود می توانید این متد را فراخوانی کنید. به این ترتیب نیازی نیست کدی که یک کار مشخص انجام میدهد چند بار نوشنه شود. شما فقط یک بار کد را می نویسید و چند بار از ان استفاده می کنید.
همچنین ممکن است یک قسمت از الگوریتم بخواهد محیط یک دایره به شعاع ۱۰۰ را بداند و قسمتی دیگر محیط یک دایره به شعاع ۲۰۰، بنابراین متد شما می توانید شعاع دایره را به عنوان پارامتر از ورودی بگیرد و سپس محیط را محاسبه کند. به این ترتیب این متد در هر شرایطی می تواند مورد استفاده قرار بگیرد