درخواست های ارتباط
جستجو
لیست دوستان من
صندوق پیام
همه را دیدم
  • در حال دریافت لیست پیام ها
صندوق پیام
رویدادها
همه را دیدم
  • در حال دریافت لیست رویدادها
همه رویدادهای من
تخفیف های وب سایت
همه تخفیف ها

عضویت در

کانال تلگرام

توسینسو

اطلاعات مطلب
مدرس/نویسنده
حسین احمدی
امتیاز: 215942
رتبه:3
344
265
416
2833
حسین احمدی ، بنیانگذار TOSINSO ، توسعه دهنده وب و برنامه نویس ، بیش از 12 سال سابقه فعالیت حرفه ای در سطح کلان ، مشاور ، مدیر پروژه و مدرس نهادهای مالی و اعتباری ، تخصص در پلتفرم دات نت و زبان سی شارپ ، طراحی و توسعه وب ، امنیت نرم افزار ، تحلیل سیستم های اطلاعاتی و داده کاوی ... پروفایل کاربر

آموزش: برنامه نویسی به زبان ساده - قسمت آخر :: توابع (Functions)

تاریخ 33 ماه قبل
نظرات 8
بازدیدها 1540
این قسمت از آموزش برنامه نویسی به زبان ساده، آخرین قسمت از این سری آموزشی می باشد. در این بخش به بررسی مفهوم توابع در زبان های برنامه نویسی می پردازیم. در زبان های برنامه نویسی، توابع قطعاتی از کد هستند که بوسیله یک نام در قسمت های مختلف برنامه قابل دسترس بوده و می توان آن ها را فراخوانی کرد. در مثال هایی که برای زبان سی زدیم با تابع printf آشنا شدیم. این تابع رشته ای را به عنوان ورودی گرفته و در خروجی آن را نمایش می دهد:

printf("Welcome to ITPro.ir");

دقت کنید که امکان فراخوانی تابع printf در هر قسمت از برنامه وجود دارد. در ادامه به بررسی شیوه های مختلف تعریف توابع خواهیم پرداخت.


نحوه تعریف توابع


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

#include <stdio.h>

void DisplayWelcome()
{
	printf("Welcome to ITPro.ir");
}

void main()
{
	DisplayWelcome();
}

در کد بالا تابعی با نام DisplayWelcome تعریف شده که پیغام Welcome to ITPro.ir را در خروجی نمایش می دهد. به صورت کلی ساختار تعریف یک تابع به صورت زیر است:

[return-type] (Name)({parameters})
{
	[method-body]
}

  1. return-type: در این قسمت می توان نوع بازگشتی تابع را مشخص کرد. نوع بازگشتی را می توان از نوع های داده تعریف شده مانند int یا string در نظر گرفت. در صورت استفاده از کلمه کلیدی void به این معنی است که تابع مقدار بازگشتی ندارد.
  2. name: در این قسمت نام تابع را مشخص می کنیم.
  3. parameters: پارامتر های ورودی تابع را مشخص می کنیم، یک تابع می توانند بدون پارامتر بوده یا شامل یک یا چند پارامتر باشد.
  4. method-body: بدنه تابع شامل کدهایی است که زمان فراخوانی تابع باید اجرا شوند.

در مثال زیر نحوه تعریف توابع را زبان سی شارپ مشاهده می کنید:

public class Program
{
    public static void Main()
    {
        DisplayWelcome();
    }
    public static void DisplayWelcome()
    {
        Console.WriteLine("Welcome to ITPro.ir");
    }
}

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


توابع با پارامترهای ورودی


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

#include <stdio.h>

void DisplaySum(int n1, int n2)
{	
	printf("%d", n1 + n2);
}

void main()
{
	DisplaySum(2, 6);
}

در تابع بالا و برای تابع DisplaySum در پارامتر ورودی مشخص کردیم، یکی n1 که از نوه int است و دیگری n2 از نوع int. برای تعریف پارامتر نوع داده پارامتر و سپس نام آن را می نویسیم. دقت کنید که یک متد می تواند چندین پارامتر داشته باشد که پارامترها را بوسیله , از هم جدا می کنیم. زمانی که قصد فراخوانی یک متد را داریم، در داخل () به ترتیب و بر اساس پارامترهای تعریف شده مقادیر را مشخص می کنیم. در مثال بالا به ترتیب عدد 2 برای n1 و عدد 6 برای n2 در نظر گرفته می شود، یعنی این مقادیر داخل پارامترها قرار گرفته و در بدنه تابع می توان از آن ها استفاده کرد. کد بالا عدد 8 که حاصل جمع 2 و 6 است را در خروجی چاپ می کند.


توابع با مقادیر خروجی


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

#include <stdio.h>

int Sum(int n1, int n2)
{	
	return n1 + n2;
}

void main()
{
	int result = Sum(2, 6);
	printf("%d", result);
}

همانطور که مشاهده می کنید در زمان تعریف تابع Sum، به جای کلمه کلیدی void، کلمه کلیدی int نوشته شده است، یعنی تابع مقداری از نوع int را بر میگرداند. تمامی توابعی که نوع بازگشتی دارند باید در قسمتی از بدنه تابع بوسیله دستور return مقداری باز گردانده شود. کلمه کلیدی return باعث اتمام روند اجرای تابع شده و مقداری که در جلوی آن نوشته شده را به عنوان خروجی بر میگرداند که در مثال بالا حاصل جمع مقادیر 2 و 6 به عنوان خروجی از متد بازگردانده می شود. در حقیقت مقداری که به عنوان خروجی از متد بازگردانده می شود جایگزین عبارت فراخوانی متد شده و کد اجرا می شود. به کد زیر دقت کنید:

#include <stdio.h>

int Sum(int n1, int n2)
{	
	return n1 + n2;
}

void main()
{
	int result = Sum(2, 6) + 5;
	printf("%d", result);
}

در مثال بالا، ابتدا تابع Sum با مقادیر 2 و 6 فراخوانی شده، سپس نتیجه آن که عدد 6 است با عدد 5 جمع شده و حاصل آن در متغیر result ریخته می شود.

خیلی از زبان های برنامه نویسی شیوه های متفاوتی برای تعریف توابع دارند، برای مثال در زبان python برای تعریف توابع به صورت عمل می کنیم:

def function_name(parameters)
	[function_body]
	return [expression]

بر اساس قالب بالا، به صورت زیر می توان در زبان پایتون یک تابع تعریف و از آن استفاده کرد:

def getMax(list)
	max = list[0]
	index = 1
	while( index < 5 )
		if(max < list[index])
			max = list[index]
		index = index + 1
	return max

list1 = [2, 5, 6,1 ,3, 9, 7]

max = getMax(list1)

print "Max: ", max

این قسمت آخرین مطلب از سری آموزشی برنامه نویسی به زبان ساده بود. امیدوارم که این دوره مورد استفاده دوستانی که قصد ورود به دنیای برنامه نویسی را دارند قرار گرفته باشد. ITPRO باشید

نویسنده: حسین احمدی
منبع: ITPRO
برچسب ها
ردیف عنوان
1 برنامه نویسی به زبان ساده - قسمت اول :: آشنایی با برنامه کامپیوتری، برنامه نویس و زبان برنامه نویسی
2 برنامه نویسی به زبان ساده - قسمت دوم :: انواع زبان های برنامه نویسی
3 برنامه نویسی به زبان ساده - قسمت سوم :: اجرای کد ها، Compiler و Interpreter و Assembler
4 برنامه نویسی به زبان ساده - قسمت چهارم :: مبناهای عددی
5 برنامه نویسی به زبان ساده - قسمت پنجم :: عملگر های بیتی (Bitwise Operators)
6 برنامه نویسی به زبان ساده - قسمت ششم :: محیط های یکپارچه توسعه (Integrated Development Environment)
7 برنامه نویسی به زبان ساده - قسمت هفتم :: شروع به کار با زبان های برنامه نویسی و اصطلاحات رایج
8 برنامه نویسی به زبان ساده - قسمت هشتم :: نوع های داده (Data Types) و متغیرها (Variables)
9 برنامه نویسی به زبان ساده - قسمت نهم :: کلمات کلیدی (Keywords) و الگوریتم ها (Algorithms)
10 برنامه نویسی به زبان ساده - قسمت دهم :: عملگرها و عملوندها
11 برنامه نویسی به زبان ساده - قسمت یازدهم :: دستورات کنترلی و شرط ها
12 برنامه نویسی به زبان ساده - قسمت دوازدهم :: دستورات تکرار و حلقه ها
13 برنامه نویسی به زبان ساده - قسمت سیزدهم :: آرایه ها و کاراکترها
14 آموزش: برنامه نویسی به زبان ساده - قسمت آخر :: توابع (Functions)
دوره مجموعه کل دوره
مطالب مرتبط

در حال دریافت اطلاعات

نظرات
  • باسلام
    مهندس آموزش هاتون عالی هستش.
    اگه مقدور هست زبان cudaرو هم جز آموزش هاتون قراربدید
    متشکرم
  • ممنون خیلی خوب بود، یه سوالی داشتم:
    متد با تابع چه فرقی داره؟
    آخه ما توی دانشگاه در ++C به تابع میگیم تابع! ولی یه فیلم آموزش جاوا دیدم که یه تابع می‌نویسن و بش میگن متد!
    حالا یه کم گیج شدم که متد همون تابعه یا فرق داره؟
  • فرقش اینه که وقتی زبان ها به سمت شی گرایی رفتن دیگه به تابع میگفتن متد و اسمش عوض شد.
    فک کنم همین باشه نمیدونم با ما اینطوری گفتن.
  • سلام
    اگه آموزش الگوریتم و فلوچارت هم بزارید خیلی خوب میشه
  • ابتدا آموزش سی پلاس پلاس رو قصد دارم به صورت قدم به قدم در سایت قرار بدم و بعد به امید خدا مبحث الگوریتم رو شروع می کنیم.
  • سلام
    ممنون خیلی خوب بود واقعا استفاده کردیم
  • سلام، خسته نباشید استاد!
    یه سوال دارم!
    ببخشید من سه تا چیز رو متوجه نشدم!
    حلقه ها (while, for, do) و اینکه پارامتر چی هست؟
    ممنون میشم بنده رو راهنمایی بفرمایید!
  • سلام و عرض ادب، در مورد حلقه ها، شما زمانی که بخوایید یک قطعه کد به تعداد مورد نظر اجرا بشه باید از حلقه ها استفاده کنید، برای مثال، میخوایید یک عدد رو 10 بار روی صفحه چاپ کنید، یه حلقه درست می کنید و کد مورد نظر رو داخل بدنه حلقه می نویسید، for و while و do هر کدوم به یک شیوه حلقه ها رو پیاده سازی می کنند.
    در مورد پارامتر هم، شما وقتی یک متد یا Function تعریف می کنید، می تونید یک سری مقادیر به متد پاس بدید، برای مثال متدی نوشتید با عنوان Sum که حاصل جمع دو عدد رو حساب می کنه، شما پارامتر رو تعریف می کنید که بتونید دو عدد رو به تابع پاس بدید.

برای ارسال نظر ابتدا به سایت وارد شوید