ویکی‌کتاب fawikibooks https://fa.wikibooks.org/wiki/%D8%B5%D9%81%D8%AD%D9%87%D9%94_%D8%A7%D8%B5%D9%84%DB%8C MediaWiki 1.39.0-wmf.23 first-letter مدیا ویژه بحث کاربر بحث کاربر ویکی‌کتاب بحث ویکی‌کتاب پرونده بحث پرونده مدیاویکی بحث مدیاویکی الگو بحث الگو راهنما بحث راهنما رده بحث رده کتاب‌آشپزی بحث کتاب‌آشپزی ویکی‌کودک بحث ویکی‌کودک موضوع بحث موضوع TimedText TimedText talk پودمان بحث پودمان ابزار بحث ابزار توضیحات ابزار بحث توضیحات ابزار ریاضیات پیشرفته 0 35952 117772 117753 2022-08-15T04:59:58Z HEJJWJDEJDNSGWTG 23762 wikitext text/x-wiki {{وضعیت|25%}} {{در دست ویرایش ۲|ماه=ژانویه|روز=۲۵|سال=۲۰۲۳}} {{مداوم}} {{کمک}} <code>آمار صفحات کتاب:۱۰۱</code> این کتاب،نسخه ای از ریاضیات است که نوع پیشرفته ریاضیات را به نمایش می گذارد. دراین کتاب به مباحثی پیشرفته مانند حسابان، آنالیز، هندسه و ... می پردازیم.این کتاب با ریاضی پایه فرق دارد، ریاضی پایه مفاهیم ابتدایی را آموزش می دهد و ریاضی را به زبانی ساده آموزش می دهد. مفهوم ریاضیات پیشرفته به این معنا نیست که مفاهیم پیچیده و پیشرفته را ارائه دهیم، به این معنا است که مفاهیم گسترده نیز همراه آن ها هست.این ایبوک به شما در مفاهیم پیشرفته و گسترده ریاضی کمکتان می کند. {{چاپ|نسخه چاپی}} [[پرونده:Nuvola Math and Inf.svg|بندانگشتی|300x300پیکسل]] == مقدمه == *[[ریاضیات پیشرفته/مقدمه|مقدمه]] == درباره ریاضیات == *[[ریاضیات پیشرفته/تعریف ریاضیات|تعریف ریاضیات]] *[[ریاضیات پیشرفته/تاریخ ریاضیات|تاریخ ریاضیات]] *[[ریاضیات پیشرفته/المپیاد ریاضیات|المپیاد ریاضیات]] *[[ریاضیات پیشرفته/جوایز ریاضیات|جوایز ریاضیات]] *[[ریاضیات پیشرفته/شاخه‌های ریاضیات|شاخه های ریاضیات]] *[[ریاضیات پیشرفته/ریاضیات کاربردی|ریاضیات کاربردی]] *[[ریاضیات پیشرفته/ریاضیات محض|ریاضیات محض]] *[[ریاضیات پیشرفته/فلسفه ریاضیات|فلسفه ریاضیات]] *[[ریاضیات پیشرفته/انجمن ریاضیات ایران|انجمن ریاضیات ایران]] == ریاضیات گسسته == # [[ریاضیات پیشرفته/نظریه مجموعه‌ها|نظریه مجموعه‌ها]] # منطق(مطالعه استدلال) # [[ریاضیات پیشرفته/نظریه اعداد|نظریه اعداد]] # [[ریاضیات پیشرفته/ترکیبیات|ترکیبیات]] # [[ریاضیات پیشرفته/نظریه گراف|نظریه گراف]] # هندسه دیجیتال و توپولوژی دیجیتال # الگوریتم‌شناسی # نظریه اطلاعات # نظریهٔ محاسبه‌پذیری و پیچیدگی # نظریه احتمالات بنیادی و زنجیره مارکوف # جبر خطی # مجموعه جزئاً مرتب # احتمالات # برهان(ریاضیات) # شمارش # رابطه دوتایی == حسابان == #[[ریاضیات پیشرفته/حساب دیفرانسیل|حساب دیفرانسیل]] #[[ریاضیات پیشرفته/انتگرال|انتگرال]] #[[ریاضیات پیشرفته/انتگرال سری فوریه|انتگرال سری فویه]] #[[ریاضیات پیشرفته/سری فوریه|سری فوریه]] #[[ریاضیات پیشرفته/تبدیل فوریه|تبدیل فوریه]] #[[ریاضیات پیشرفته/معادله لاپلاس|معادله لاپلاس]] #[[ریاضیات پیشرفته/تبدیل لاپلاس|تبدیل لاپلاس]] #[[مریاضیات پیشرفته/معادله دیفرانسیل|معادله دیفرانسیل]] #[[ریاضیات پیشرفته/مثلثات|مثلثات]] #[[ریاضیات پیشرفته/مثلثات کروی|مثلثات کروی]] #[[ریاضیات پیشرفته/تابع(ریاضیات)|تابع(ریاضیات)]] #[[ریاضیات پیشرفته/تابع لگاریتمی|تابع لگاریتمی]] #معادله خطی #جبر و معادله #حد و پیوستگی #حد نامتناهی #حد متناهی #مشتق == هندسه == === مفاهیم هندسه === #[[ریاضیات پیشرفته/هندسه فضایی|هندسه فضایی]] #[[ریاضیات پیشرفته/هندسه اقلیدسی|هندسه اقلیدسی]] #[[ریاضیات پیشرفته/هندسه نااقلیدسی|هندسه نااقلیدسی]] #[[ریاضیات پیشرفته/هندسه تحلیلی|هندسه تحلیلی]] #[[ریاضیات پیشرفته/هندسه ریمانی|هندسه ریمانی]] #[[ریاضیات پیشرفته/هندسه جبری|هندسه جبری]] #[[ریاضیات پیشرفته/هندسه دیفرانسیل|هندسه دیفرانسیل]] #[[ریاضیات پیشرفته/هندسه تصویری|هندسه تصویری]] === مفاهیم مورد هندسی === #[[ریاضیات پیشرفته/مکعب|مکعب]] #[[ریاضیات پیشرفته/منشور|منشور]] #[[ریاضیات پیشرفته/استوانه|استوانه]] #[[ریاضیات پیشرفته/کره|کره]] #[[ریاضیات پیشرفته/هرم|هرم]] #[[ریاضیات پیشرفته/مخروط|مخروط]] #[[ریاضیات پیشرفته/چهاروجهی منتظم|چهاروجهی منتظم]] #[[ریاضیات پیشرفته/متوازی السطوح|متوازی السطوح]] #[[ریاضیات پیشرفته/چندوجهی|چندوجهی]] #[[ریاضیات پیشرفته/هشت وجهی منتظم|هشت وجهی منتظم]] #[[ریاضیات پیشرفته/چنبره|چنبره]] #[[ریاضیات پیشرفته/دوران|دوران]] #[[ریاضیات پیشرفته/زاویه مرکزی|زاویه مرکزی]] #[[ریاضیات پیشرفته/زاویه محاطی|زاویه محاطی]] #[[ریاضیات پیشرفته/زاویه ظلی|زاویه ظلی]] #[[ریاضیات پیشرفته/زاویه فضایی|زاویه فضایی]] #[[ریاضیات پیشرفته/قطاع|قطاع]] #[[ریاضیات پیشرفته/رادیان|رادیان]] #[[ریاضیات پیشرفته/گرادیان|گرادیان]] == آنالیز ریاضی == #[[ریاضیات پیشرفته/آنالیز حقیقی|آنالیز حقیقی]] #[[ریاضیات پیشرفته/آنالیز مختلط|آنالیز مختلط]] #[[ریاضیات پیشرفته/آنالیز تابعی|آنالیز تابعی]] #[[ریاضیات پیشرفته/آنالیز هارمونیک|آنالیز هارمونیک]] #[[ریاضیات پیشرفته/آنالیز پیچیده|آنالیز پیچیده]] #[[ریاضیات پیشرفته/آنالیز عددی|آنالیز عددی]] #[[ریاضیات پیشرفته/آنالیز برداری|آنالیز برداری]] #[[ریاضیات پیشرفته/آنالیز اسکالر|آنالیز اسکالر]] #[[ریاضیات پیشرفته/آنالیز تانسور|آنالیز تانسور]] == آمار و احتمال == #[[ریاضیات پیشرفته/دسته بندی دادها|دسته بندی دادها]] #[[ریاضیات پیشرفته/قانون احتمال کل|قانون احتمال کل]] #میانگین #نمودارها #متغیرهای آمار #آمار استنباطی #آمار توصیفی #مبانی ریاضیات #تعداد حالت های ممکن #پیشامدهای مستقل #احتمال شرطی #مجموعه و احتمال #جامعه و نمونه<br /> == مفاهیم مهم == *[[ریاضیات پیشرفته/مساحت و حجم|مساحت و حجم]] *[[ریاضیات پیشرفته/تقسیم طولانی چندجمله ای|تقسیم طولانی چندجمله ای]] *[[ریاضیات پیشرفته/چندضلعی منتظم|چندضلعی منتظم]] == زمینه های پژوهش(پیوند ندارد) == *مساحت و حجم == شاخه ها == *[[ریاضیات پیشرفته/حسابان|حسابان]] *[[ریاضیات پیشرفته/هندسه|هندسه]] *[[ریاضیات پیشرفته/ریاضیات گسسته|ریاضیات گسسته]] *[[ریاضیات پیشرفته/آنالیز ریاضی|آنالیز ریاضی]] *[[ریاضیات پیشرفته/آمار و احتمال|آمار و احتمال]] [[رده:ریاضیات پیشرفته]] okxofzlw0xv6o0dnx4y1o879cf0sflj کتاب آشپزی/کاپ کیک 0 36107 117775 117696 2022-08-15T11:10:50Z Roozitaa 5260 /* دستور شماره یک، کاپ کیک خشخاشی */ wikitext text/x-wiki [[پرونده:Cranberry-Mohn Muffins on plate.jpg|250px|بندانگشتی]] '''کاپ کیک''' == دستور شماره یک، کاپ کیک خشخاشی == مواد لازم: # کره ۱۸۵ گرم # شکر یا پودر قند ۱۶۰ گرم # مارمالاد پرتقال ۱۰۰ گرم # پوست پرتقال رنده شده دو عدد # آب پرتقال ۸۰ میلی‌لیتر # آرد شیرینی ۱۸۵ گرم # پودر بادام ۶۰ گرم # خشخاش سیاه ۴۰ گرم # پوست مرکبات مخلوط آبنباتی شده ۵۰ گرم # تخم‌مرغ با چنگال زده شده 3 عدد طرز تهیه: * ابتدا کره، شکر، مارمالاد پرتقال، پوست پرتقال ریز رنده شده و آب پرتقال را با هم مخلوط می‌کنیم در یک کاسه روی حرارت کم می‌گذاریم تا کره و شکر حل شود. می‌گذاریم تا سرد شود. * سپس آرد گندم و پودر بادام و خشخاش و پوست مرکبات را مخلوط کرده مایه کره را درون آن ریخته و مخلوط می‌کنیم. تخم مرغ را با مایه مخلوط می‌کنیم. * مایه را درون کاغذ کاپ کیکی که درون قالب فلزی کاپ کیک قرار گرفته تا حدی که کاغذ پر شود می‌ریزیم. قالب کاپ کیک را در فر قرار می‌دهیم. * در فر ۱۷۰ درجه به مدت ۲۰ دقیقه می‌پزیم. == دستور شماره یک، کاپ کیک با گیلاس آبنباتی == مواد لازم: # کره ۲۰۰ گرم # شکر یا پودر قند ۲۰۰ گرم # تخم‌مرغ با چنگال زده شده ۴ عدد # آرد شیرینی ۱۷۵ گرم # پودر بادام ۷۵ گرم # بیکینگ پودر ۳ و یک دوم قاشق چایخوری # شیر ۱۰۰ گرم # عصاره بادام یک دوم قاشق چایخوری # گیلاس آبنباتی شده ۳۰۰ گرم طرز تهیه: * ابتدا کره و شکر با هم مخلوط می‌کنیم در با همزن برقی می‌زنیم تا کره و شکر سفید شود. یکی یکی تخم مرغ‌ها را اضافه می‌کنیم و با همزن برقی هم می‌زنیم. * قاشق قاشق آرد گندم و پودر بادام و بیکینگ پودر را با لیسک با مایه مخلوط می‌کنیم. شیر و عصاره بادام را نیز درون آن ریخته و مخلوط می‌کنیم. * کاغذ کاپ کیک را درون قالب فلزی کاپ کیک قرار می‌دهیم مایه را تا حدی که کاغذ پر شود داخل آن می‌ریزیم. قالب کاپ کیک را در فر قرار می‌دهیم. * در فر ۱۶۰ درجه به مدت ۲۵ دقیقه می‌پزیم. == جستارهای وابسته == * [[کتاب آشپزی/نان بربری]] * [[کتاب آشپزی/نان سنگک خانگی بدون سنگ]] {{ویکی‌پدیا|نان تافتون}} [[رده:نان‌ها]] es5rn7lcgizctxuavi84xbr344pmqc1 زبان برنامه نویسی سی/پارامترها و آرگومان‌ها 0 36119 117769 117763 2022-08-14T23:43:03Z HadiLovelorn 23337 wikitext text/x-wiki {{سرص|زبان برنامه نویسی سی/اعلان، تعریف و احضار تابع|زبان برنامه نویسی سی/مطالب تکمیلی}} پارامتر به مفهوم وابستگی یک متغیر به یک متغیر دیگر است ، در علوم ریاضی ( شامل خود ریاضیات و البته فیزیک و شیمی ) متغیر را به همراه یک علامت تساوی نوشته و در رو به روی آن پارامترهای آن را که به همراه نوع و مقدار نسبت آنها به هم و در نهایت متغیر سمت چپ تساوی است می‌نویسیم . اما در زبان‌های برنامه‌نویسی متداول و از جمله زبان C و خانواده آن این وابستگی ( پارامتر ) به شکل دیگری نوشته می‌شود . شما یک نوع داده را که قرار است بازگردانده شود می‌نویسید سپس نامی برای آن انتخاب می‌کنید و در مقابل جفت پرانتزهای باز و بسته آن ، نوع داده و نام پارامترها را می‌نویسید تا بعد از نوشته شدن تابع ؛ هر جا تابع احضار شد و داده‌هایی به عنوان آرگومان به آن ارسال شدند ( پاس داده شدند pass ) داده‌ها را دریافت کرده و بر روی آن مقادیر پردازشی که در داخل بدنه تابع تعریف شده است را انجام دهد و سپس حاصل را بازگرداند {{چپ‌چین}} <code> return-data-type-of-function function-name( data-type parameter-name-1, data-type parameter-name-2, ...) { //body of function processing of data and parameters return data-type-of-function; } </code> {{پایان چپ‌چین}} این شبه کد نحوه نوشته شدن تابع و پارامترهای آن را نمایش می‌دهد که در مبحث پیشین به آن پرداختیم . اما همچنین نوشته شد که آرگومان‌ها خود توسط تابع پردازش نمی‌شوند ، بلکه مقدار آنها بر روی پارامتر کپی می‌شود و پردازش‌ها بر روی پارامترها انجام می‌شود ، اما برای اینکه تابع مقدار داده‌ای را تغییر دهد ، پارامتر یا پارامترهای لازم خود را به عنوان اشاره‌گر تعریف می‌کنیم و سپس در هنگام ارسال داده‌ها از آرگومان به جای پارامترهای تابع از عملگر آدرس‌دهی استفاده می‌کنیم . مثال : {{چپ‌چین}} <syntaxhighlight lang=c> #include <stdio.h> void addOne ( int notadd, int * ptr ) { notadd++; (*ptr)++; return; } int main() { int i = 10, j = 10; addOne( i, &j); printf("%d , %d", i, j); return 0; } </syntaxhighlight> {{پایان چپ‌چین}} در این مثال تابع addOne از نوع داده پوچ است بنابراین مجاز نیستیم تا در انتهای آن مقداری را بازگردانیم اما به صورت استاندارد نوشته‌ایم ;return که ۲ پارامتر دارید ، اولی notadd که از نوع صحیح است و دومی ptr که از نوع اشاره‌گر صحیح است . داخل بدنه تابع notadd توسط عملگر افزایش یک واحد افزایش می‌یابد و همین طور پارامتر ptr که اشاره‌گر است و به متغیری اشاره نمی‌کند اما به صورت مستقیم شده توسط عملگر افزایش ، یک واحد افزایش پیدا می‌کند ( دقت کنید که اگر پرانتزهای آن را نمی‌گذاشتیم تبدیل نمی‌شد به مقدار یک صحیح و فقط آدرس اشاره‌گر افزایش یافته و به جلو می‌رفت ) در تابع اصلی برنامه یعنی main دو متغیر به نام‌های i و j با مقدار ۱۰ تعریف کرده‌ایم . تابع addOne اولی را به صورت صحیح دریافت می‌کند و دومی را به صورت اشاره‌گر که به واسطه عملگر آدرس‌دهی متغیر j را به آن ارسال کرده‌ایم ( پاس داده‌ایم ) و در نهایت توسط تابع کتابخانه‌ای printf مقدار هر ۲ متغیر را در خروجی خط‌دستوری چاپ نموده‌ایم و چون تابع main مقداری را قرار نیست بازگرداند و در سیستم باقی بماند نوشته‌ایم return 0 تا به کامپایلر اعلام کنیم که خروجی‌ای ندارد و برنامه به پایان رسیده تا منابع اشغال شده توسط برنامه آزاد گردند . اما مقدار i و j با اینکه هر دو ۱۰ است اما در خروجی مقدار i مقدار ۱۰ بوده و مقدار j مقدار ۱۱ ، چون اولی در تابع addOne کپی شده است و در آرگومان i تغییری ایجاد نمی‌شود اما دومی به واسطه عملگر آدرس‌دهی ( & ) به تابع addOne ارسال شده است که به جای پارامتر ptr قرار می‌گیرد و چون ptr اشاره‌گر است مقدار j را تغییر می‌دهد حتماً به یاد دارید که برای اشاره کردن به یک اشاره‌گر باید یک اشاره‌گر به اشاره‌گر تعریف کنید . برای ارسال یک اشاره‌گر به عنوان آرگومان به یک تابع نیز باید پارامتر آن را از نوع اشاره‌گر به اشاره‌گر تعریف کنید ( و البته برای اشاره به اشاره‌گر به اشاره‌گر یک اشاره‌گر به اشاره‌گر به اشاره‌گر تعریف می‌کنیم و همین طور الی آخر ) . مثال : {{چپ‌چین}} <syntaxhighlight lang=c> #include <stdio.h> void addOne ( int ** ptr ) { (**ptr)++; return; } int main() { int i = 10, * ptr2 = &i; addOne( &ptr2 ); printf("%d", *ptr2); return 0; } </syntaxhighlight> {{پایان چپ‌چین}} در مثال بالا ( که همانند مثال پیشین است ، می‌خواهیم مقدار متغیر i را تغییر بدهیم که اشاره‌گر ptr2 به آن اشاره می‌کند و اشاره‌گر ptr2 را به تابع addOne ارسال کرده‌ایم که یک پارامتر از نوع اشاره‌گر به اشاره‌گر دارد و مقدار آن را توسط عملگر افزایش ، یک واحد افزایش می‌دهد ، بنابراین با احضار تابع addOne پارامتر ptr به ptr2 اشاره می‌کند که به i اشاره می‌کند و مقدار آن را تغییر می‌دهد و در خروجی خط‌دستوری می‌توانیم مقدار ۱۱ را مشاهده نمائیم همچنین برای ارسال یک تابع به عنوان آرگومان به تابعی دیگر باید تابعی که می‌خواهد تابع دیگر را دریافت کند پارامتری از نوع اشاره‌گر تابع داشته باشد تا بتوان تابع دیگر را با عملگر آدرس‌دهی ( امپرسند & ) به آن ارسال نمود . دقت کنید که برای تعریف هر تابع به عنوان پارامتر باید نوع داده را بنویسید در مقابل آن یک جفت پرانتز باز و بسته که داخل آن یک عملگر اشاره‌گر ( استریسک * ) به همراه نام یک تابع به عنوان پارامتر نوشته و در مقابل آن یک جفت پرانتز باز و بسته دیگر بنویسید که دارای نوع داده همسان با تابعی که می‌خواهد دریافت کند باشد به علاوه نام پارامتر دل به خواه . به مثال زیر دقت کنید : {{چپ‌چین}} <syntaxhighlight lang=c> #include <stdio.h> int take(void) { int a; scanf("%d", &a); return a; } int not(int (*func)(void)) { if ((*func)() == 0) return 1; else return 0; } int main() { printf("%d", not(&take)); return 0; } </syntaxhighlight> {{پایان چپ‌چین}} در مثال بالا یک تابع با نام take داریم که از نوع صحیح می‌باشد و پارامتری را پذیرا نیست ( که نوشته‌ایم void ) در داخل آن یک متغیر با نام a اعلان شده است که در خط بعدی توسط مقداری که کاربر وارد می‌کند تعریف می‌شود ( که این کار را توسط تابع کتابخانه‌ای scanf انجام داده‌ایم که اول نوع داده مشخص می‌شود سپس توسط عملگر آدرس‌دهی متغیر مورد نظر را دریافت می‌نماید که در مبحث فایل سرآیند stdio مفصلاً آن را تعریف نموده و تشریح خواهیم کرد ) سپس تابع not از نوع صحیح را تعریف نموده‌ایم که یک پارامتر از نوع داده تابع از نوع صحیح و بدون پارامتر ( به همراه کلیدواژه void ) را می‌پذیرد . که اگر پارامتر که یک تابع می‌باشد که فراخوانی خواهد شد مقدار بازگردانده شده آن 0 باشد مقدار 1 را باز می‌گرداند و در غیر این صورت مقدار 0 را ( یعنی اگر مقداری وجود نداشته باشد آن را موجود می‌کند و اگر موجود باشد آن را 0 و ناموجود می‌کند ) در انتها نیز تابع اصلی برنامه مقدار تابع not را که تابع take را دریافت می‌کند در خروجی خط‌دستوری چاپ نموده‌ایم که مقداری را از کاربر خواهد گرفت و در صورتی که 0 باشد 1 را چاپ می‌کند و اگر عددی دیگر باشد 0 را چاپ می‌کند و در پایان نیز منابع سیستم را آزاد نموده‌ایم ( با دستور ;0 return ) '''نکته :''' در کامپایلرهایی با استانداردهای قدیمی شما فقط مجاز به ارسال یک تابع به تابعی دیگر با پارامتری از نوع اشاره‌گر هستید ( البته همیشه به همراه تعداد و نوع پارامترهای تابعی که قرار است دریافت شود ) اما در کامپایلرهایی با استانداردهای جدید شما مجاز به ارسال تابع به تابعی دیگر بدون پارامتر اشاره‌گر نیز هستید ؛ اما بهتر است همواره از روش فوق که نوشته گردید استفاده کنید چون هم با همه استانداردها سازگار است و هم روش صحیح ارسال یک تابع به تابعی دیگر است ( و شما همچنان باید تعداد و نوع پارامترهای تابعی که قرار است ارسال شود را به ترتیب و درست اعلان کنید ) یک مثال دیگر : {{چپ‌چین}} <syntaxhighlight lang=c> #include <stdio.h> int sum(int firstsummand, int secondsummand) { return firstsummand + secondsummand; } int sub(int minuend, int subtrahend) { return minuend - subtrahend; } int mul(int multiplier, int multiplicand) { return multiplier * multiplicand; } int div(int dividend, int divisor) { return dividend / divisor; } int calc(int (*execute)(int, int), int a, int b) { return (*execute)(a, b); } int main() { printf("%d , %d , %d , %d", calc(&sum, 10, 12), calc(&sub, 9, 3), calc(&mul, 3, 10), calc(&div, 10, 2)); return 0; } </syntaxhighlight> {{پایان چپ‌چین}} در این مثال ۴ تابع صحیح تعریف کرده‌ایم که هر کدام ۲ پارامتر صحیح می‌پذیرند ، اولی پارامترهای خود را جمع می‌کند ، دومی تفریق ، سومی ضرب می‌کند و چهارمی تقسیم . سپس یک تابع با نام calc تعریف نموده‌ایم که ۳ پارامتر دارد ، اولی یک تابع از نوع صحیح که ۲ پارامتر از نوع صحیح دارد و دومی یک صحیح با نام a و سومی یک صحیح دیگر با نام b که داخل بدنه تابع calc تابع پارامتر به اجرا گذاشته می‌شود ( execute ) و ۲ پارامتر a و b را پردازش می‌کند . سپس در تابع اصلی برنامه main در خروجی خط‌دستوری ۴ مقدار صحیح را چاپ نموده‌ایم که اولی فراخوانی تابع calc با دریافت تابع sum به جای پارامتر execute و مقادیر ۱۰ و ۱۲ است ( که البته تابع با عملگر آدرس‌دهی دریافت شده است چون پارامتر تابع اشاره‌گر است ) و دومی فراخوانی تابع calc با دریافت تابع sub و مقادیر ۹ و ۳ و سومی دریافت تابع mul و مقادیر ۳ و ۱۰ و چهارمی که آخری است فراخوانی تابع calc که تابع div را که تقسیم است به عنوان پارامتر از نوع اشاره‌گر دریافت می‌کند که با عملگر آدرس‌دهی آن را دریافت کرده است و مقادیر ۱۰ و ۲ را به تابع div می‌فزستد تا ۱۰ به ۲ تقسیم شود و در پایان منابع اشغال شده سیسنم را آزاد نموده‌ایم و در خروجی خط‌دستوری می‌توانید مقادیر ۲۲ و ۶ و ۳۰ و ۵ را مشاهده کنید که خروجی پردازش‌های هر کدام از تابع‌های جمع ، تفریق ، ضرب و تقسیم هستند [[رده:زبان برنامه نویسی سی]] cg6ilcx9rkyim8xrt2rdi9zgo82dy57 117773 117769 2022-08-15T06:37:02Z HadiLovelorn 23337 wikitext text/x-wiki {{سرص|زبان برنامه نویسی سی/اعلان، تعریف و احضار تابع|زبان برنامه نویسی سی/مطالب تکمیلی}} پارامتر به مفهوم تغییر یک متغیر در ازای یک متغیر دیگر است ، در علوم ریاضی ( شامل خود ریاضیات و البته فیزیک و شیمی ) متغیر را به همراه یک علامت تساوی نوشته و در رو به روی آن پارامترهای آن را که به همراه نوع و مقدار نسبت آنها به هم و در نهایت متغیر سمت چپ تساوی است می‌نویسیم . اما در زبان‌های برنامه‌نویسی متداول و از جمله زبان C و خانواده آن این وابستگی ( پارامتر ) به شکل دیگری نوشته می‌شود . شما یک نوع داده را که قرار است بازگردانده شود می‌نویسید سپس نامی برای آن انتخاب می‌کنید و در مقابل جفت پرانتزهای باز و بسته آن ، نوع داده و نام پارامترها را می‌نویسید تا بعد از نوشته شدن تابع ؛ هر جا تابع احضار شد و داده‌هایی به عنوان آرگومان به آن فرستاده شدند ( پاس داده شدند pass ) داده‌ها را دریافت کرده و بر روی آن مقادیر پردازشی که در داخل بدنه تابع تعریف شده است را انجام دهد و سپس حاصل را بازگرداند {{چپ‌چین}} <code> return-data-type-of-function function-name( data-type parameter-name-1, data-type parameter-name-2, ...) { //body of function processing of data and parameters return data-type-of-function; } </code> {{پایان چپ‌چین}} این شبه کد نحوه نوشته شدن تابع و پارامترهای آن را نمایش می‌دهد که در مبحث پیشین به آن پرداختیم . اما همچنین نوشته شد که آرگومان‌ها خود توسط تابع پردازش نمی‌شوند ، بلکه مقدار آنها بر روی پارامتر کپی می‌شود و پردازش‌ها بر روی پارامترها انجام می‌شود ، اما برای اینکه تابع مقدار داده‌ای را تغییر دهد ، پارامتر یا پارامترهای لازم خود را به عنوان اشاره‌گر تعریف می‌کنیم و سپس در هنگام فرستادن داده‌ها از آرگومان به جای پارامترهای تابع از عملگر آدرس‌دهی استفاده می‌کنیم . مثال : {{چپ‌چین}} <syntaxhighlight lang=c> #include <stdio.h> void addOne ( int notadd, int * ptr ) { notadd++; (*ptr)++; return; } int main() { int i = 10, j = 10; addOne( i, &j); printf("%d , %d", i, j); return 0; } </syntaxhighlight> {{پایان چپ‌چین}} در این مثال تابع addOne از نوع داده پوچ است بنابراین مجاز نیستیم تا در انتهای آن مقداری را بازگردانیم اما به صورت استاندارد نوشته‌ایم ;return که ۲ پارامتر دارید ، اولی notadd که از نوع صحیح است و دومی ptr که از نوع اشاره‌گر صحیح است . داخل بدنه تابع notadd توسط عملگر افزایش یک واحد افزایش می‌یابد و همین طور پارامتر ptr که اشاره‌گر است و به متغیری اشاره نمی‌کند اما به صورت مستقیم شده توسط عملگر افزایش ، یک واحد افزایش پیدا می‌کند ( دقت کنید که اگر پرانتزهای آن را نمی‌گذاشتیم تبدیل نمی‌شد به مقدار یک صحیح و فقط آدرس اشاره‌گر افزایش یافته و به جلو می‌رفت ) در تابع اصلی برنامه یعنی main دو متغیر به نام‌های i و j با مقدار ۱۰ تعریف کرده‌ایم . تابع addOne اولی را به صورت صحیح دریافت می‌کند و دومی را به صورت اشاره‌گر که به واسطه عملگر آدرس‌دهی متغیر j را به آن فرستاده‌ایم ( پاس داده‌ایم ) و در نهایت توسط تابع کتابخانه‌ای printf مقدار هر ۲ متغیر را در خروجی خط‌دستوری چاپ نموده‌ایم و چون تابع main مقداری را قرار نیست بازگرداند و در سیستم باقی بماند نوشته‌ایم return 0 تا به کامپایلر اعلام کنیم که خروجی‌ای ندارد و برنامه به پایان رسیده تا منابع اشغال شده توسط برنامه آزاد گردند . اما مقدار i و j با اینکه هر دو ۱۰ است اما در خروجی مقدار i مقدار ۱۰ بوده و مقدار j مقدار ۱۱ ، چون اولی در تابع addOne کپی شده است و در آرگومان i تغییری ایجاد نمی‌شود اما دومی به واسطه عملگر آدرس‌دهی ( & ) به تابع addOne فرستاده شده است که به جای پارامتر ptr قرار می‌گیرد و چون ptr اشاره‌گر است مقدار j را تغییر می‌دهد حتماً به یاد دارید که برای اشاره کردن به یک اشاره‌گر باید یک اشاره‌گر به اشاره‌گر تعریف کنید . برای فرستادن یک اشاره‌گر به عنوان آرگومان به یک تابع نیز باید پارامتر آن را از نوع اشاره‌گر به اشاره‌گر تعریف کنید ( و البته برای اشاره به اشاره‌گر به اشاره‌گر یک اشاره‌گر به اشاره‌گر به اشاره‌گر تعریف می‌کنیم و همین طور الی آخر ) . مثال : {{چپ‌چین}} <syntaxhighlight lang=c> #include <stdio.h> void addOne ( int ** ptr ) { (**ptr)++; return; } int main() { int i = 10, * ptr2 = &i; addOne( &ptr2 ); printf("%d", *ptr2); return 0; } </syntaxhighlight> {{پایان چپ‌چین}} در مثال بالا ( که همانند مثال پیشین است ، می‌خواهیم مقدار متغیر i را تغییر بدهیم که اشاره‌گر ptr2 به آن اشاره می‌کند و اشاره‌گر ptr2 را به تابع addOne فرستاده‌ایم که یک پارامتر از نوع اشاره‌گر به اشاره‌گر دارد و مقدار آن را توسط عملگر افزایش ، یک واحد افزایش می‌دهد ، بنابراین با احضار تابع addOne پارامتر ptr به ptr2 اشاره می‌کند که به i اشاره می‌کند و مقدار آن را تغییر می‌دهد و در خروجی خط‌دستوری می‌توانیم مقدار ۱۱ را مشاهده نمائیم همچنین برای فرستادن یک تابع به عنوان آرگومان به تابعی دیگر باید تابعی که می‌خواهد تابع دیگر را دریافت کند پارامتری از نوع اشاره‌گر تابع داشته باشد تا بتوان تابع دیگر را با عملگر آدرس‌دهی ( امپرسند & ) به آن فرستاد . دقت کنید که برای تعریف هر تابع به عنوان پارامتر باید نوع داده را بنویسید در مقابل آن یک جفت پرانتز باز و بسته که داخل آن یک عملگر اشاره‌گر ( استریسک * ) به همراه نام یک تابع به عنوان پارامتر نوشته و در مقابل آن یک جفت پرانتز باز و بسته دیگر بنویسید که دارای نوع داده همسان با تابعی که می‌خواهد دریافت کند باشد به علاوه نام پارامتر دل به خواه . به مثال زیر دقت کنید : {{چپ‌چین}} <syntaxhighlight lang=c> #include <stdio.h> int take(void) { int a; scanf("%d", &a); return a; } int not(int (*func)(void)) { if ((*func)() == 0) return 1; else return 0; } int main() { printf("%d", not(&take)); return 0; } </syntaxhighlight> {{پایان چپ‌چین}} در مثال بالا یک تابع با نام take داریم که از نوع صحیح می‌باشد و پارامتری را پذیرا نیست ( که نوشته‌ایم void ) در داخل آن یک متغیر با نام a اعلان شده است که در خط بعدی توسط مقداری که کاربر وارد می‌کند تعریف می‌شود ( که این کار را توسط تابع کتابخانه‌ای scanf انجام داده‌ایم که اول نوع داده مشخص می‌شود سپس توسط عملگر آدرس‌دهی متغیر مورد نظر را دریافت می‌نماید که در مبحث فایل سرآیند stdio مفصلاً آن را تعریف نموده و تشریح خواهیم کرد ) سپس تابع not از نوع صحیح را تعریف نموده‌ایم که یک پارامتر از نوع داده تابع از نوع صحیح و بدون پارامتر ( به همراه کلیدواژه void ) را می‌پذیرد . که اگر پارامتر که یک تابع می‌باشد که فراخوانی خواهد شد مقدار بازگردانده شده آن 0 باشد مقدار 1 را باز می‌گرداند و در غیر این صورت مقدار 0 را ( یعنی اگر مقداری وجود نداشته باشد آن را موجود می‌کند و اگر موجود باشد آن را 0 و ناموجود می‌کند ) در انتها نیز تابع اصلی برنامه مقدار تابع not را که تابع take را دریافت می‌کند در خروجی خط‌دستوری چاپ نموده‌ایم که مقداری را از کاربر خواهد گرفت و در صورتی که 0 باشد 1 را چاپ می‌کند و اگر عددی دیگر باشد 0 را چاپ می‌کند و در پایان نیز منابع سیستم را آزاد نموده‌ایم ( با دستور ;0 return ) '''نکته :''' در کامپایلرهایی با استانداردهای قدیمی شما فقط مجاز به فرستادن یک تابع به تابعی دیگر با پارامتری از نوع اشاره‌گر هستید ( البته همیشه به همراه تعداد و نوع پارامترهای تابعی که قرار است دریافت شود ) اما در کامپایلرهایی با استانداردهای جدید شما مجاز به فرستادن تابع به تابعی دیگر بدون پارامتر اشاره‌گر نیز هستید ؛ اما بهتر است همواره از روش فوق که نوشته گردید استفاده کنید چون هم با همه استانداردها سازگار است و هم روش صحیح فرستادن یک تابع به تابعی دیگر است ( و شما همچنان باید تعداد و نوع پارامترهای تابعی که قرار است فرستاده شود را به ترتیب و درست اعلان کنید ) یک مثال دیگر : {{چپ‌چین}} <syntaxhighlight lang=c> #include <stdio.h> int sum(int firstsummand, int secondsummand) { return firstsummand + secondsummand; } int sub(int minuend, int subtrahend) { return minuend - subtrahend; } int mul(int multiplier, int multiplicand) { return multiplier * multiplicand; } int div(int dividend, int divisor) { return dividend / divisor; } int calc(int (*execute)(int, int), int a, int b) { return (*execute)(a, b); } int main() { printf("%d , %d , %d , %d", calc(&sum, 10, 12), calc(&sub, 9, 3), calc(&mul, 3, 10), calc(&div, 10, 2)); return 0; } </syntaxhighlight> {{پایان چپ‌چین}} در این مثال ۴ تابع صحیح تعریف کرده‌ایم که هر کدام ۲ پارامتر صحیح می‌پذیرند ، اولی پارامترهای خود را جمع می‌کند ، دومی تفریق ، سومی ضرب می‌کند و چهارمی تقسیم . سپس یک تابع با نام calc تعریف نموده‌ایم که ۳ پارامتر دارد ، اولی یک تابع از نوع صحیح که ۲ پارامتر از نوع صحیح دارد و دومی یک صحیح با نام a و سومی یک صحیح دیگر با نام b که داخل بدنه تابع calc تابع پارامتر به اجرا گذاشته می‌شود ( execute ) و ۲ پارامتر a و b را پردازش می‌کند . سپس در تابع اصلی برنامه main در خروجی خط‌دستوری ۴ مقدار صحیح را چاپ نموده‌ایم که اولی فراخوانی تابع calc با دریافت تابع sum به جای پارامتر execute و مقادیر ۱۰ و ۱۲ است ( که البته تابع با عملگر آدرس‌دهی دریافت شده است چون پارامتر تابع اشاره‌گر است ) و دومی فراخوانی تابع calc با دریافت تابع sub و مقادیر ۹ و ۳ و سومی دریافت تابع mul و مقادیر ۳ و ۱۰ و چهارمی که آخری است فراخوانی تابع calc که تابع div را که تقسیم است به عنوان پارامتر از نوع اشاره‌گر دریافت می‌کند که با عملگر آدرس‌دهی آن را دریافت کرده است و مقادیر ۱۰ و ۲ را به تابع div می‌فزستد تا ۱۰ به ۲ تقسیم شود و در پایان منابع اشغال شده سیسنم را آزاد نموده‌ایم و در خروجی خط‌دستوری می‌توانید مقادیر ۲۲ و ۶ و ۳۰ و ۵ را مشاهده کنید که خروجی پردازش‌های هر کدام از تابع‌های جمع ، تفریق ، ضرب و تقسیم هستند [[رده:زبان برنامه نویسی سی]] 3b3822uc010b3so2xwd22uu7ok38c8w بحث کاربر:Hakanalvin 3 36120 117768 2022-08-14T16:32:55Z New user message 8356 افزودن [[الگو:خوشامدید|پیام خوش‌آمد]] به صفحهٔ بحث کاربر تازه wikitext text/x-wiki == خوش آمدید == [[File:Carl Spitzweg 021-detail.jpg|thumb|left|180px|خوش‌آمدید!]] <br/> سلام {{PAGENAME}}، به ویکی‌کتاب خوش آمدید. از مشارکت شما سپاسگزارم. امیدوارم که از اینجا خوشتان بیاید و تصمیم به ماندن بگیرید. راهنماهای ویکی‌کتاب در [[راهنما:فهرست|اینجا]] است اما پیوندهای زیر برای کاربرهای جدید مفیدند: {| |- |[[پرونده:Noia 64 apps help index.png|30px|right|link=ویکی‌کتاب:ویکی‌کتاب چیست؟|ویکی‌نسک (ویکی‌کتاب) چیست؟]] || [[ویکی‌کتاب:ویکی‌کتاب چیست؟|ویکی‌نسک (ویکی‌کتاب) چیست؟]] |- | [[پرونده:Nuvola apps ksig.png|30px|right|link=ویکی‌کتاب:آموزش سریع|آموزش سریع]] || [[ویکی‌کتاب:آموزش سریع|آموزش سریع]] آموزش کار با زبان مدیاویکی (محیط ویکی‌کتاب) |- | [[پرونده:Cscr-featured.svg|30px|right|link=ویکی‌کتاب:کتاب‌های برگزیده|کتاب‌های برگزیده]] || [[ویکی‌کتاب:کتاب‌های برگزیده|کتاب‌های برگزیده]] فهرستی از کتاب‌های برگزیده |- | [[پرونده:Nuvola apps chat.png|30px|right|link=ویکی‌کتاب:میز تحریر|میز تحریر]]||[[ویکی‌کتاب:میز تحریر]] برای گفتگو دربارهٔ مسائل فنی و سیاست‌ها. |- | [[پرونده:Nuvola_apps_bookcase_1.svg|30px|right|link=ویکی‌کتاب:خودآموز/کمک کردن در یکی از کتاب‌های موجود|کمک کردن در یکی از کتاب‌های موجود]]||[[ویکی‌کتاب:خودآموز/کمک کردن در یکی از کتاب‌های موجود|کمک کردن در یکی از کتاب‌های موجود]] راه‌های تکمیل و ویرایش ایبوک‌های ویکی‌کتاب |- |[[File:Bucket in the sand.svg|right|50px|link=ویکی‌کتاب:صفحه تمرین|صفحه تمرین]]||[[ویکی‌کتاب:صفحه تمرین|صفحه تمرین]] برای تمرین ویرایش |- |[[پرونده:Nuvola apps agent.svg|30px|right|link=w:ویکی‌کتاب:خودآموز|آموزش پیشرفته]]||[[w:ویکی‌پدیا:خودآموز|آموزش پیشرفته]] |- |'''پروژه‌های دیگر بنیاد'''||[[پرونده:Wikipedia-logo.png|20px|link=w:صفحه_اصلی|ویکی‌پدیا]][[پرونده:HSWikimedia.svg|25px|link=m:Special:Recentchanges|فراویکی]] [[پرونده:HSCommons.svg|25px|link=commons:Special:Recentchanges|ویکی‌انبار]][[پرونده:HSWNews.svg|25px|link=n:ویژه:تغییرات اخیر|ویکی‌خبر]] [[پرونده:HSWtionary.svg|25px|link=wikt:صفحه_اصلی|ویکی‌واژه]] [[پرونده:HSWQuote.svg|25px|link=q:صفحه_اصلی|ویکی‌گفتاورد]][[پرونده:HSWSource.svg|30px|link=s:صفحه_اصلی|ویکی‌نبشته]][[پرونده:Wikidata-logo.svg|25px|link=wikidata:صفحه_اصلی|ویکی‌داده]] |} امیدوارم از ''[[ویکی‌نسک:ویکی‌نسک‌نویسان|ویکی‌نسک‌نویس]]'' بودن لذت ببرید! لطفاً برای آزمایش از [[ویکی‌کتاب:گودال ماسه‌بازی]] استفاده کنید. باز هم خوش آمد می‌گویم.شاد باشید! -- [[کاربر:New user message|New user message]] ([[بحث کاربر:New user message|بحث]]) ‏۱۴ اوت ۲۰۲۲، ساعت ۱۶:۳۲ (UTC) qh8c4uy0adux7xxq9uqa320zm5qctav بحث کاربر:Sisisi888888 3 36121 117770 2022-08-15T04:25:26Z New user message 8356 افزودن [[الگو:خوشامدید|پیام خوش‌آمد]] به صفحهٔ بحث کاربر تازه wikitext text/x-wiki == خوش آمدید == [[File:Carl Spitzweg 021-detail.jpg|thumb|left|180px|خوش‌آمدید!]] <br/> سلام {{PAGENAME}}، به ویکی‌کتاب خوش آمدید. از مشارکت شما سپاسگزارم. امیدوارم که از اینجا خوشتان بیاید و تصمیم به ماندن بگیرید. راهنماهای ویکی‌کتاب در [[راهنما:فهرست|اینجا]] است اما پیوندهای زیر برای کاربرهای جدید مفیدند: {| |- |[[پرونده:Noia 64 apps help index.png|30px|right|link=ویکی‌کتاب:ویکی‌کتاب چیست؟|ویکی‌نسک (ویکی‌کتاب) چیست؟]] || [[ویکی‌کتاب:ویکی‌کتاب چیست؟|ویکی‌نسک (ویکی‌کتاب) چیست؟]] |- | [[پرونده:Nuvola apps ksig.png|30px|right|link=ویکی‌کتاب:آموزش سریع|آموزش سریع]] || [[ویکی‌کتاب:آموزش سریع|آموزش سریع]] آموزش کار با زبان مدیاویکی (محیط ویکی‌کتاب) |- | [[پرونده:Cscr-featured.svg|30px|right|link=ویکی‌کتاب:کتاب‌های برگزیده|کتاب‌های برگزیده]] || [[ویکی‌کتاب:کتاب‌های برگزیده|کتاب‌های برگزیده]] فهرستی از کتاب‌های برگزیده |- | [[پرونده:Nuvola apps chat.png|30px|right|link=ویکی‌کتاب:میز تحریر|میز تحریر]]||[[ویکی‌کتاب:میز تحریر]] برای گفتگو دربارهٔ مسائل فنی و سیاست‌ها. |- | [[پرونده:Nuvola_apps_bookcase_1.svg|30px|right|link=ویکی‌کتاب:خودآموز/کمک کردن در یکی از کتاب‌های موجود|کمک کردن در یکی از کتاب‌های موجود]]||[[ویکی‌کتاب:خودآموز/کمک کردن در یکی از کتاب‌های موجود|کمک کردن در یکی از کتاب‌های موجود]] راه‌های تکمیل و ویرایش ایبوک‌های ویکی‌کتاب |- |[[File:Bucket in the sand.svg|right|50px|link=ویکی‌کتاب:صفحه تمرین|صفحه تمرین]]||[[ویکی‌کتاب:صفحه تمرین|صفحه تمرین]] برای تمرین ویرایش |- |[[پرونده:Nuvola apps agent.svg|30px|right|link=w:ویکی‌کتاب:خودآموز|آموزش پیشرفته]]||[[w:ویکی‌پدیا:خودآموز|آموزش پیشرفته]] |- |'''پروژه‌های دیگر بنیاد'''||[[پرونده:Wikipedia-logo.png|20px|link=w:صفحه_اصلی|ویکی‌پدیا]][[پرونده:HSWikimedia.svg|25px|link=m:Special:Recentchanges|فراویکی]] [[پرونده:HSCommons.svg|25px|link=commons:Special:Recentchanges|ویکی‌انبار]][[پرونده:HSWNews.svg|25px|link=n:ویژه:تغییرات اخیر|ویکی‌خبر]] [[پرونده:HSWtionary.svg|25px|link=wikt:صفحه_اصلی|ویکی‌واژه]] [[پرونده:HSWQuote.svg|25px|link=q:صفحه_اصلی|ویکی‌گفتاورد]][[پرونده:HSWSource.svg|30px|link=s:صفحه_اصلی|ویکی‌نبشته]][[پرونده:Wikidata-logo.svg|25px|link=wikidata:صفحه_اصلی|ویکی‌داده]] |} امیدوارم از ''[[ویکی‌نسک:ویکی‌نسک‌نویسان|ویکی‌نسک‌نویس]]'' بودن لذت ببرید! لطفاً برای آزمایش از [[ویکی‌کتاب:گودال ماسه‌بازی]] استفاده کنید. باز هم خوش آمد می‌گویم.شاد باشید! -- [[کاربر:New user message|New user message]] ([[بحث کاربر:New user message|بحث]]) ‏۱۵ اوت ۲۰۲۲، ساعت ۰۴:۲۵ (UTC) 3dlv9slpa58qakgu6whnzehgo747q03 بحث کاربر:Bagher9914 3 36122 117771 2022-08-15T04:32:23Z New user message 8356 افزودن [[الگو:خوشامدید|پیام خوش‌آمد]] به صفحهٔ بحث کاربر تازه wikitext text/x-wiki == خوش آمدید == [[File:Carl Spitzweg 021-detail.jpg|thumb|left|180px|خوش‌آمدید!]] <br/> سلام {{PAGENAME}}، به ویکی‌کتاب خوش آمدید. از مشارکت شما سپاسگزارم. امیدوارم که از اینجا خوشتان بیاید و تصمیم به ماندن بگیرید. راهنماهای ویکی‌کتاب در [[راهنما:فهرست|اینجا]] است اما پیوندهای زیر برای کاربرهای جدید مفیدند: {| |- |[[پرونده:Noia 64 apps help index.png|30px|right|link=ویکی‌کتاب:ویکی‌کتاب چیست؟|ویکی‌نسک (ویکی‌کتاب) چیست؟]] || [[ویکی‌کتاب:ویکی‌کتاب چیست؟|ویکی‌نسک (ویکی‌کتاب) چیست؟]] |- | [[پرونده:Nuvola apps ksig.png|30px|right|link=ویکی‌کتاب:آموزش سریع|آموزش سریع]] || [[ویکی‌کتاب:آموزش سریع|آموزش سریع]] آموزش کار با زبان مدیاویکی (محیط ویکی‌کتاب) |- | [[پرونده:Cscr-featured.svg|30px|right|link=ویکی‌کتاب:کتاب‌های برگزیده|کتاب‌های برگزیده]] || [[ویکی‌کتاب:کتاب‌های برگزیده|کتاب‌های برگزیده]] فهرستی از کتاب‌های برگزیده |- | [[پرونده:Nuvola apps chat.png|30px|right|link=ویکی‌کتاب:میز تحریر|میز تحریر]]||[[ویکی‌کتاب:میز تحریر]] برای گفتگو دربارهٔ مسائل فنی و سیاست‌ها. |- | [[پرونده:Nuvola_apps_bookcase_1.svg|30px|right|link=ویکی‌کتاب:خودآموز/کمک کردن در یکی از کتاب‌های موجود|کمک کردن در یکی از کتاب‌های موجود]]||[[ویکی‌کتاب:خودآموز/کمک کردن در یکی از کتاب‌های موجود|کمک کردن در یکی از کتاب‌های موجود]] راه‌های تکمیل و ویرایش ایبوک‌های ویکی‌کتاب |- |[[File:Bucket in the sand.svg|right|50px|link=ویکی‌کتاب:صفحه تمرین|صفحه تمرین]]||[[ویکی‌کتاب:صفحه تمرین|صفحه تمرین]] برای تمرین ویرایش |- |[[پرونده:Nuvola apps agent.svg|30px|right|link=w:ویکی‌کتاب:خودآموز|آموزش پیشرفته]]||[[w:ویکی‌پدیا:خودآموز|آموزش پیشرفته]] |- |'''پروژه‌های دیگر بنیاد'''||[[پرونده:Wikipedia-logo.png|20px|link=w:صفحه_اصلی|ویکی‌پدیا]][[پرونده:HSWikimedia.svg|25px|link=m:Special:Recentchanges|فراویکی]] [[پرونده:HSCommons.svg|25px|link=commons:Special:Recentchanges|ویکی‌انبار]][[پرونده:HSWNews.svg|25px|link=n:ویژه:تغییرات اخیر|ویکی‌خبر]] [[پرونده:HSWtionary.svg|25px|link=wikt:صفحه_اصلی|ویکی‌واژه]] [[پرونده:HSWQuote.svg|25px|link=q:صفحه_اصلی|ویکی‌گفتاورد]][[پرونده:HSWSource.svg|30px|link=s:صفحه_اصلی|ویکی‌نبشته]][[پرونده:Wikidata-logo.svg|25px|link=wikidata:صفحه_اصلی|ویکی‌داده]] |} امیدوارم از ''[[ویکی‌نسک:ویکی‌نسک‌نویسان|ویکی‌نسک‌نویس]]'' بودن لذت ببرید! لطفاً برای آزمایش از [[ویکی‌کتاب:گودال ماسه‌بازی]] استفاده کنید. باز هم خوش آمد می‌گویم.شاد باشید! -- [[کاربر:New user message|New user message]] ([[بحث کاربر:New user message|بحث]]) ‏۱۵ اوت ۲۰۲۲، ساعت ۰۴:۳۲ (UTC) eg3kzj4kf3ll9sb76cv6rqqwnuncmqi بحث کاربر:علی صادق تهرانی 3 36123 117774 2022-08-15T10:25:45Z New user message 8356 افزودن [[الگو:خوشامدید|پیام خوش‌آمد]] به صفحهٔ بحث کاربر تازه wikitext text/x-wiki == خوش آمدید == [[File:Carl Spitzweg 021-detail.jpg|thumb|left|180px|خوش‌آمدید!]] <br/> سلام {{PAGENAME}}، به ویکی‌کتاب خوش آمدید. از مشارکت شما سپاسگزارم. امیدوارم که از اینجا خوشتان بیاید و تصمیم به ماندن بگیرید. راهنماهای ویکی‌کتاب در [[راهنما:فهرست|اینجا]] است اما پیوندهای زیر برای کاربرهای جدید مفیدند: {| |- |[[پرونده:Noia 64 apps help index.png|30px|right|link=ویکی‌کتاب:ویکی‌کتاب چیست؟|ویکی‌نسک (ویکی‌کتاب) چیست؟]] || [[ویکی‌کتاب:ویکی‌کتاب چیست؟|ویکی‌نسک (ویکی‌کتاب) چیست؟]] |- | [[پرونده:Nuvola apps ksig.png|30px|right|link=ویکی‌کتاب:آموزش سریع|آموزش سریع]] || [[ویکی‌کتاب:آموزش سریع|آموزش سریع]] آموزش کار با زبان مدیاویکی (محیط ویکی‌کتاب) |- | [[پرونده:Cscr-featured.svg|30px|right|link=ویکی‌کتاب:کتاب‌های برگزیده|کتاب‌های برگزیده]] || [[ویکی‌کتاب:کتاب‌های برگزیده|کتاب‌های برگزیده]] فهرستی از کتاب‌های برگزیده |- | [[پرونده:Nuvola apps chat.png|30px|right|link=ویکی‌کتاب:میز تحریر|میز تحریر]]||[[ویکی‌کتاب:میز تحریر]] برای گفتگو دربارهٔ مسائل فنی و سیاست‌ها. |- | [[پرونده:Nuvola_apps_bookcase_1.svg|30px|right|link=ویکی‌کتاب:خودآموز/کمک کردن در یکی از کتاب‌های موجود|کمک کردن در یکی از کتاب‌های موجود]]||[[ویکی‌کتاب:خودآموز/کمک کردن در یکی از کتاب‌های موجود|کمک کردن در یکی از کتاب‌های موجود]] راه‌های تکمیل و ویرایش ایبوک‌های ویکی‌کتاب |- |[[File:Bucket in the sand.svg|right|50px|link=ویکی‌کتاب:صفحه تمرین|صفحه تمرین]]||[[ویکی‌کتاب:صفحه تمرین|صفحه تمرین]] برای تمرین ویرایش |- |[[پرونده:Nuvola apps agent.svg|30px|right|link=w:ویکی‌کتاب:خودآموز|آموزش پیشرفته]]||[[w:ویکی‌پدیا:خودآموز|آموزش پیشرفته]] |- |'''پروژه‌های دیگر بنیاد'''||[[پرونده:Wikipedia-logo.png|20px|link=w:صفحه_اصلی|ویکی‌پدیا]][[پرونده:HSWikimedia.svg|25px|link=m:Special:Recentchanges|فراویکی]] [[پرونده:HSCommons.svg|25px|link=commons:Special:Recentchanges|ویکی‌انبار]][[پرونده:HSWNews.svg|25px|link=n:ویژه:تغییرات اخیر|ویکی‌خبر]] [[پرونده:HSWtionary.svg|25px|link=wikt:صفحه_اصلی|ویکی‌واژه]] [[پرونده:HSWQuote.svg|25px|link=q:صفحه_اصلی|ویکی‌گفتاورد]][[پرونده:HSWSource.svg|30px|link=s:صفحه_اصلی|ویکی‌نبشته]][[پرونده:Wikidata-logo.svg|25px|link=wikidata:صفحه_اصلی|ویکی‌داده]] |} امیدوارم از ''[[ویکی‌نسک:ویکی‌نسک‌نویسان|ویکی‌نسک‌نویس]]'' بودن لذت ببرید! لطفاً برای آزمایش از [[ویکی‌کتاب:گودال ماسه‌بازی]] استفاده کنید. باز هم خوش آمد می‌گویم.شاد باشید! -- [[کاربر:New user message|New user message]] ([[بحث کاربر:New user message|بحث]]) ‏۱۵ اوت ۲۰۲۲، ساعت ۱۰:۲۵ (UTC) 3wz4loa057ht4da4s8e0z65krrdins8