ویکیکتاب
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.47.0-wmf.22
first-letter
مدیا
ویژه
بحث
کاربر
بحث کاربر
ویکیکتاب
بحث ویکیکتاب
پرونده
بحث پرونده
مدیاویکی
بحث مدیاویکی
الگو
بحث الگو
راهنما
بحث راهنما
رده
بحث رده
کتابآشپزی
بحث کتابآشپزی
ویکیکودک
بحث ویکیکودک
موضوع
بحث موضوع
TimedText
TimedText talk
پودمان
بحث پودمان
Event
Event talk
فرهنگ نجوم
0
1838
135587
127244
2026-10-05T08:49:16Z
Fwldom
26269
135587
wikitext
text/x-wiki
{{برگزیدگی|1}}
{{وضعیت|75%}}
'''فرهنگ نجوم''' مجموعهای آموزشی و مرجع درباره مفاهیم، پدیدهها و موضوعات گوناگون نجوم و [[/اخترفیزیک/]] است. این کتاب موضوعاتی از [[/منظومه شمسی/]] و اجرام آسمانی تا کیهانشناسی، فضانوردی، [[/فیزیک/]] و [[/کره آسمان/]] را پوشش میدهد.
این کتاب برای آشنایی با اصطلاحات و مفاهیم پایه و تخصصی نجوم و ایجاد یک مرجع موضوعی برای مطالعه و مراجعه به مطالب نجومی تدوین شده است.
==فهرست مطالب==
[[پرونده:Michael Gernhardt in space during STS-69 in 1995.jpg|بندانگشتی|یک فضانورد]]
[[پرونده:Crab_Nebula.jpg|بندانگشتی|چپ|عکس گرفتهشده از سحابی خرچنگ توسط تلسکوپ فضایی هابل]]
[[پرونده:Uvsun trace big.jpg|چپ|بندانگشتی|تصویرماوراء بنفش از فتوسفر فعال خورشید که توسط تلسکوپ فضایی تریس (TRACE) گرفته شدهاست. (تصویر از ناسا).]]
[[پرونده: grav.lens1.arp.750pix.jpg|بندانگشتی|چپ| در این شکل چندین جرم حلقه مانند آبی رنگ رامشاهده میکنید که تصاویر همان کهکشان هستند که با استفاده از اثر عدسیهای گرانشی از خوشه کهکشان زرد رنگ در وسط عکس کپی برداری شدهاند. این عدسیها با استفاده از میزان گرانش خوشه نور را خم کرده و تصویر اجرام دورتر را بزرگنمایی نموده و درآنها اعوجاج ایجاد میکند.]]
[[پرونده:Astrolabe-Persian-18C.jpg|بندانگشتی|اسطرلاب ایرانی ساختهٔ دانشمند بزرگ ایرانی غیاث الدین جمشید کاشانی در سده هجدهم میلادی. صفحه گرد کوچکتر دارای ۱۳ میخچه یا پیکانک کمانی شکل است. جهت و اشاره پیکانکها، موقعیت درخشانترین و روشنترین ستارهها را نشان میدهند. نام ستارهها در پایین هر پیکانک حک شدهاست. صفحه گرد بزرگتر به وسیله خطوط هماهنگ ترسیم شدهاست.{{سخ}}این اسطرلاب در موزه تاریخ علم کمبریج نگهداری میشود.]]
[[پرونده:Ant Nebula.jpg|بندانگشتی|چپ| سحابی مورچه. دفع گاز از ستاره مرکزی در حال مرگ برخلاف الگوهای بی نظم انفجارات معمولی الگوهای متقارن نشان میهد.]]
[[پرونده: dust.devil.mars.arp.750pix.jpg|بندانگشتی|چپ| نقطه سیاه رنگی که در بالای تصویر دیده میشود یک گردباد است که دیوارهای متحرک را در سطح مریخ ایجاد کردهاست. این ستون متحرک و چرخان جو مریخ (که با گردبادهای زمینی (تورنادوها) قابل مقایسهاست) نوار طولانی و سیاه رنگی را به وجود آوردهاست.]]
* [[فرهنگ نجوم/اخترفیزیک|اخترفیزیک]]
** [[فرهنگ نجوم/اخترفیزیک/ستاره|ستاره]]
** [[فرهنگ نجوم/اخترفیزیک/ماده میان ستاره ای|ماده میان ستاره ای]]
** [[فرهنگ نجوم/اخترفیزیک/سحابی|سحابی]]
** [[فرهنگ نجوم/اخترفیزیک/تحول ستاره ها|تحول ستاره ها]]
** [[فرهنگ نجوم/اخترفیزیک/نمودار HR|نمودار HR]]
** [[فرهنگ نجوم/اخترفیزیک/ذرات کیهانی|ذرات کیهانی]]
** [[فرهنگ نجوم/اخترفیزیک/انفجارهای گاما|انفجارهای گاما]]
** [[فرهنگ نجوم/اخترفیزیک/همجوشی|همجوشی]]
* [[فرهنگ نجوم/منظومه شمسی|منظومه شمسی]]
** [[فرهنگ نجوم/منظومه شمسی/خورشید|خورشید]]
*** [[فرهنگ نجوم/منظومه شمسی/خورشید/لکه های خورشیدی|لکه های خورشیدی]]
*** [[فرهنگ نجوم/منظومه شمسی/خورشید/ساختار خورشید|ساختار خورشید]]
*** [[فرهنگ نجوم/منظومه شمسی/خورشید/تاج|تاج]]
*** [[فرهنگ نجوم/منظومه شمسی/خورشید/فام سپهر|فام سپهر]]
*** [[فرهنگ نجوم/منظومه شمسی/خورشید/نورسپهر|نورسپهر]]
*** [[فرهنگ نجوم/منظومه شمسی/خورشید/فوران های ماده از تاج خورشید|فوران های ماده از تاج خورشید]]
** [[فرهنگ نجوم/منظومه شمسی/عطارد|عطارد]]
** [[فرهنگ نجوم/منظومه شمسی/زهره|زهره]]
** [[فرهنگ نجوم/منظومه شمسی/زمین|زمین]]
*** [[فرهنگ نجوم/منظومه شمسی/زمین/جو زمین|جو زمین]]
*** [[فرهنگ نجوم/منظومه شمسی/زمین/ساختار زمین|ساختار زمین]]
*** [[فرهنگ نجوم/منظومه شمسی/زمین/فعالیت های زمین شناختی|فعالیت های زمین شناختی]]
*** [[فرهنگ نجوم/منظومه شمسی/زمین/میدان مغناطیسی زمین|میدان مغناطیسی زمین]]
*** [[فرهنگ نجوم/منظومه شمسی/زمین/شفق های قطبی|شفق های قطبی]]
*** [[فرهنگ نجوم/منظومه شمسی/زمین/جزر و مد|جزر و مد]]
** [[فرهنگ نجوم/منظومه شمسی/ماه|ماه]]
** [[فرهنگ نجوم/منظومه شمسی/مریخ|مریخ]]
** [[فرهنگ نجوم/منظومه شمسی/مشتری|مشتری]]
** [[فرهنگ نجوم/منظومه شمسی/قمرهای مشتری|قمرهای مشتری]]
** [[فرهنگ نجوم/منظومه شمسی/زحل|زحل]]
** [[فرهنگ نجوم/منظومه شمسی/حلقه های زحل|حلقه های زحل]]
** [[فرهنگ نجوم/منظومه شمسی/قمرهای زحل|قمرهای زحل]]
** [[فرهنگ نجوم/منظومه شمسی/قمرهای منظومه شمسی|قمرهای منظومه شمسی]]
** [[فرهنگ نجوم/منظومه شمسی/اورانوس|اورانوس]]
** [[فرهنگ نجوم/منظومه شمسی/نپتون|نپتون]]
** [[فرهنگ نجوم/منظومه شمسی/پلوتون|پلوتون]]
** [[فرهنگ نجوم/منظومه شمسی/سیاره دهم|سیاره دهم؟]]
** [[فرهنگ نجوم/منظومه شمسی/کاوش منظومه شمسی|کاوش منظومه شمسی]]
*** [[فرهنگ نجوم/منظومه شمسی/سریع السیر زهره|سریع السیر زهره]]
*** [[فرهنگ نجوم/منظومه شمسی/فضاپیمای کاسینی|فضاپیمای کاسینی]]
*** [[فرهنگ نجوم/منظومه شمسی/فضاپیمای گالیله|فضاپیمای گالیله]]
*** [[فرهنگ نجوم/منظومه شمسی/مریخ نوردهای ناسا|مریخ نوردهای ناسا]]
* [[فرهنگ نجوم/کیهانشناسی|کیهانشناسی]]
** [[فرهنگ نجوم/کیهانشناسی/تاریخچه کیهانشناسی|تاریخچه کیهانشناسی]]
** [[فرهنگ نجوم/کیهانشناسی/جهان|جهان]]
** [[فرهنگ نجوم/کیهانشناسی/کهشکان|کهکشان]]
** [[فرهنگ نجوم/کیهانشناسی/خوشه های کهکشانی|خوشه های کهکشانی]]
** [[فرهنگ نجوم/کیهانشناسی/ساختارهای کیهان|ساختارهای کیهانشناسی]]
** [[فرهنگ نجوم/کیهانشناسی/انتقال به سرخ|انتقال به سرخ]]
** [[فرهنگ نجوم/کیهانشناسی/تابش پیش زمینه کیهانی|تابش پیش زمینه کیهانی]]
** [[فرهنگ نجوم/کیهانشناسی/سیاهچاله ها|سیاهچاله ها]]
** [[فرهنگ نجوم/کیهانشناسی/فضا-زمان|فضا-زمان]]
** [[فرهنگ نجوم/کیهانشناسی/مهبانگ|مهبانگ]]
** [[فرهنگ نجوم/کیهانشناسی/ماده تاریک|ماده تاریک]]
** [[فرهنگ نجوم/کیهانشناسی/انبساط جهان|انبساط جهان]]
** [[فرهنگ نجوم/کیهانشناسی/ثابت هابل|ثابت هابل]]
** [[فرهنگ نجوم/کیهانشناسی/انرژی تاریک|انرژی تاریک]]
** [[فرهنگ نجوم/کیهانشناسی/سرنوشت جهان|سرنوشت جهان]]
* [[فرهنگ نجوم/فضا|فضا]]
** [[فرهنگ نجوم/فضا/فضانوردی|فضانوردی]]
** [[فرهنگ نجوم/فضا/شاتل های فضایی|شاتل های فضایی]]
** [[فرهنگ نجوم/فضا/سایوز|سایوز]]
** [[فرهنگ نجوم/فضا/ایستگاه فضایی بین المللی|ایستگاه فضایی بین المللی]]
** [[فرهنگ نجوم/فضا/ماهواره ها|ماهواره ها]]
* [[فرهنگ نجوم/فیزیک|فیزیک]]
** [[فرهنگ نجوم/فیزیک/قوانین کپلر|قوانین کپلر]]
** [[فرهنگ نجوم/فیزیک/نورشناسی|نورشناسی]]
*** [[فرهنگ نجوم/فیزیک/نورشناسی/پراش|پراش]]
*** [[فرهنگ نجوم/فیزیک/نورشناسی/تداخل|تداخل]]
*** [[فرهنگ نجوم/فیزیک/نورشناسی/طیف الکترومغناطیس|طیف الکترومغناطیس]]
** [[فرهنگ نجوم/فیزیک/جرم|جرم]]
** [[فرهنگ نجوم/فیزیک/نسبیت خاص|نسبیت خاص]]
** [[فرهنگ نجوم/فیزیک/نسبیت عام|نسبیت عام]]
* [[فرهنگ نجوم/کره آسمان|کره آسمان]]
** [[فرهنگ نجوم/کره آسمان/مقارنه|مقارنه]]
** [[فرهنگ نجوم/کره آسمان/مقارنه (سیارات)|مقارنه (سیارات)]]
** [[فرهنگ نجوم/کره آسمان/بیشترین کشیدگی|بیشترین کشیدگی]]
** [[فرهنگ نجوم/کره آسمان/مقابله|مقابله]]
** [[فرهنگ نجوم/کره آسمان/زاویه کشیدگی|زاویه کشیدگی]]
** [[فرهنگ نجوم/کره آسمان/زاویه فاز|زاویه فاز]]
** [[فرهنگ نجوم/کره آسمان/سیستم های مختصات آسمان|سیستم های مختصات آسمان]]
*** [[فرهنگ نجوم/کره آسمان/مختصات افقی|مختصات افقی]]
*** [[فرهنگ نجوم/کره آسمان/مختصات استوایی|مختصات استوایی]]
*** [[فرهنگ نجوم/کره آسمان/مختصات کهکشانی|مختصات کهکشانی]]
*** [[فرهنگ نجوم/کره آسمان/مختصات خورشید مرکزی|مختصات خورشید مرکزی]]
*** [[فرهنگ نجوم/کره آسمان/مختصات زمین مرکزی|مختصات زمین مرکزی]]
** [[فرهنگ نجوم/کره آسمان/استوای آسمان|استوای آسمان]]
** [[فرهنگ نجوم/کره آسمان/دایرة البروج|دایرة البروج]]
** [[فرهنگ نجوم/کره آسمان/قطب های سماوی|قطب های سماوی]]
** [[فرهنگ نجوم/کره آسمان/حرکت وضعی|حرکت وضعی]]
** [[فرهنگ نجوم/کره آسمان/حرکت انتقالی|حرکت انتقالی]]
** [[فرهنگ نجوم/کره آسمان/حرکت تقدیمی|حرکت تقدیمی]]
* [[فرهنگ نجوم/مقاله/نور|مقاله نور]]
* [[فرهنگ نجوم/مقاله/اختروش ها|مقاله اختروش ها]]
{{موضوع|فیزیک}}
[[رده:فرهنگ نجوم]]
jbgaadvnt52dk9cri72r3lnxdgaj8vu
ویکیکتاب:ایبوکها بر حسب وضعیت تکمیلشدگی
4
24328
135552
135042
2026-10-05T07:12:19Z
Vivairan2
28134
/* آثاری که با همکاری کاربران تکمیل میشود 20px */
135552
wikitext
text/x-wiki
[[پرونده:Couverture-wikimedia.jpg|بیقاب|چپ]]
{{امروز- تاریخ - به وقت تهران}}{{سخ}}
اگر کتاب جدیدی ایجاد کردهاید و قصد دارید به زودی آن را تکمیل کنید نام آن را به فهرست زیر بیفزایید. تعداد زیرصفحههای کتابی که ایجاد کردهاید در ابتدا بهتر است دست کم ۵ باشد. اگر محتوای کافی به کتاب اضافه نکنید ممکن است به زودی حذف شود. افزودن کتاب به فهرست زیر الزاما به این معنی نیست که سایر کاربران در آن مشارکت خواهند کرد اما اگر فکر میکنید میتوانید در تکمیل یکی از کتاب های زیر کمک کنید پس از مشارکت در آن (با هماهنگی نویسندگان قبلی) نام/نام کاربری خود را در بخش مشارکت کنندگان در فهرست زیر بنویسید.
نام تعدادی از کتابها در رده [[:رده:کتابهای ویکیکتاب بر حسب وضعیت تکمیل شدگی|کتابهای ویکیکتاب بر حسب وضعیت تکمیل شدگی]] مشخص شده است. تعدادی از کتابها به طور ۱۰۰٪ تکمیل شدهاند و ممکن است نسخه چاپی/پیدیاف/ایپاب هم داشته باشند اما اگر کتابی را یافتید که هنوز تکمیل نشده است میتوانید در صورت داشتن اطلاعات کافی و آشنایی به موضوع، در آن مشارکت کنید.
در فهرست زیر نام کتابهایی که هنوز تکمیل نشدهاند به همراه تعداد صفحه، میزان تکمیلشدگی، موضوع، وضعیت ویرایش و نام مشارکتکنندگان (پیشین و کنونی) مشخص شده است. در صورتی که تعداد زیرصفحههای یک کتاب زیاد باشد و مدت زمان طولانی دست نخورده بماند احتمالاً به زودی حذف خواهد شد.
پیش از مشارکت در یک کتاب حتما راهنمای ویکیکتاب یا [[ویکیکتاب:خودآموز|خودآموز ویکیکتاب]] را مطالعه کنید و پس از آشنایی با [[ویکیکتاب:سیاستها و رهنمودها|سیاستها و رهنمودها]] دست به ویرایش بزنید. بدون اجازه مدیران ویکیکتاب اجازه ادغام کتابها با یکدیگر را ندارید.
اگر قصد دارید عنوان کتابی را که اخیراً ایجاد کردهاید به این صفحه بیفزایید، ابتدا مطمئن شوید فهرست، چارچوب کلی کتاب، ... را به درستی تکمیل کردهاید سپس نام آن (عنوان کتاب) را به این فهرست بیفزایید و سایر مشخصات را به دقت پر کنید.
::''برای مشاهده کتابهای در حال تکمیل در [[ویکیکودک]]، به [[ویکیکودک:کتابهای در حال تکمیل ویکیکتاب]] مراجعه کنید.''
::''برای مشاهده کتابهای در حال تکمیل در [[ویکیراهنما]]، به [[ویکیکتاب:کتابهای در حال تکمیل ویکیراهنما]] مراجعه کنید.''
==آثاری که با همکاری کاربران تکمیل میشود [[پرونده:Wikibooks-logo-fa2.svg|20px]] ==
{{جعبه هشدار|به دلیل نداشتن تعریف دقیقی از سرشناسی در ویکیکتاب، از مرداد ۱۴۰۳ تا اطلاع ثانوی به کتابهایی که در حوزه سیاسی و اجتماعی و مسائل روز باشند اجازه انتشار داده نخواهد شد. }}
ایبوکهای زیر ایبوکهایی هستند در ویکیکتاب که هنوز کامل نشدهاند. در حال حاضر ۵۳ کتاب در این فهرست جای گرفتهاند که بسیار بیشتر از تعداد معمول است (نباید بیش از ۲۰ کتاب در این فهرست باشد). وضعیت تکمیل همه این ایبوکها به صورت درصد تقریبی نشان داده شده است زیرا [[راهنما:مراحل توسعه|میزان پیشرفت]] یک ایبوک توسط نویسنده مشخص میشود و دقیق نیست.
معمولا فهرست هر کدام از این کتابها توسط نویسنده اصلیاش کامل شده است تا با داشتن ساختاری مشخص و از پیش تعیین شده دیگران هم بتوانند کمک کنند. شما هم میتوانید در کتاب های زیر مشارکت کنید:
{| class="wikitable" style="font-size: 95%"
!'''نام ایبوک'''||'''تعداد زیرصفحه'''||'''میزان توسعه'''||'''موضوع'''||'''وضعیت'''||'''مشارکت کنندگان'''
|-
||''[[آشنایی با چندوجهیها]]''||۱۲ ||۱۰٪|| ریاضی||{{در حال انجام}}||[[کاربر:هيربد فودازى٢]]
|-
||''[[آشنایی با هواشناسی]]''||۱۰ ||۶۵٪|| فیزیک||{{در حال انجام}}||[[کاربر:Hldv ugd psdk]]، آیپی
|-
||''[[آموزش زبان اسپانیایی]]''||۶ ||۴۵٪|| زبان||{{در حال انجام}}||[[کاربر:روح الله بهسودی]]
|-
||''[[آموزش زبان چینی]]''||۲ ||۱۵٪|| زبان||{{در حال انجام}}||[[کاربر:Amir.Vector]]
|-
||''[[آموزش زبان روسی]]''||۱۲ ||۵۰٪|| زبان||{{در حال انجام}}||[[کاربر:Amir.Vector]]
|-
||''[[آموزش زبان عربی]]''||۲ ||۱۵٪|| زبان||{{در حال انجام}}||[[کاربر:Amir.Vector]]
|-
||''[[آموزش زبان کردی]]''||۲ ||۱۰٪|| زبان||{{در حال انجام}}||[[کاربر:Amir.Vector]]، [[کاربر:Calak]]
|-
||''[[آموزش زبان فرانسوی]]''||۵ ||۲۰٪|| زبان||{{در حال انجام}}||[[کاربر:Amir.Vector]]، [[کاربر:Sinafe]]
|-
||''[[آموزش کار با دیسکورد]]''||۳ ||۱۰٪|| رایانه||{{در حال انجام}}||[[کاربر:Doostdar]]
|-
||''[[اجزای رابط گرافیکی کاربران اینترنتی]]''||۱۲ ||۳۰٪|| رایانه||{{در حال انجام}}||[[کاربر:Doostdar]]
|-
||''[[استفاده از فناوری اطلاعات در آموزش]]''||۹ ||۵۰٪|| رایانه||{{در حال انجام}}||[[کاربر:Doostdar]]
|-
||''[[اسناد نام خلیج فارس، میراثی کهن و جاودان]]''||۱۱ ||۵۰٪ (نیازمند نسخهخوانی و ویرایش)|| تاریخ||{{در حال انجام}}||[[کاربر:Cultural sec]]
|-
||''[[اقتصاد خرد ۱]]''||۲ ||۱۰٪|| اقتصاد||{{در حال انجام}}||[[کاربر:Niyumard]]
|-
||''[[امور مالی شخصی]]''||۲ ||۵۰٪|| اقتصاد||{{در حال انجام}}||[[کاربر:God's spirit]]
|-
||''[[بررسی موردهایی از اخلاق حرفهای]]''||۶۳ ||۶۰٪|| کارورزی||{{در حال انجام}}||[[کاربر:Doostdar]]
|-
||''[[برنامهنویسی دلفی]]''||۲ ||۱۰٪|| رایانه||{{در حال انجام}}||آیپی
|-
||''[[پروتکل اس اس ال]]''||۱ ||۱۰٪|| رایانه||{{در حال انجام}}||[[کاربر:Abolfazlgoodarzi]]
|-
||''[[پندنامه ویکی]]''||۸ ||۶۰٪|| علوم اجتماعی||{{در حال انجام}}||[[کاربر:مجید~fawikibooks]]، [[کاربر:Reza1615]]
|-
||''[[تفکر رندانه برای نسل شورشی]]''||۸ ||۷۰٪|| علوم اجتماعی||{{در حال انجام}}||[[کاربر:GoldenJDM]]
|-
||''[[آموزش رانندگی]]''||۱۸ ||۴۰٪|| دفترچه راهنما||{{در حال انجام}}||[[کاربر:Parsa 2au]]
|-
||''[[توابع مثلثاتی]]''||۱۴ ||۱۰٪|| ریاضی||{{در حال انجام}}||[[کاربر:Doostdar]]، [[کاربر:Nightdevil]]
|-
||''[[ثروت ملل]]''||۴ ||۶۰٪|| اقتصاد||{{در حال انجام}}||[[کاربر:2nd Socrates]]
|-
||''[[جاوا اسکریپت]]''||۵ ||۲۵٪|| رایانه||{{در حال انجام}}||[[کاربر:Amir.Vector]]
|-
||''[[خودآموز اوبونتو]]''||۲۵ ||۵۰٪||رایانه||{{در حال انجام}}||[[کاربر:Erghezi]]، [[کاربر:AFlorence]]، [[کاربر:Ebrahim]]
|-
||''[[دیوار سه بعدی]]''||۳ ||۵۰٪||مهندسی||{{در حال انجام}}|| آیپی
|-
||''[[راهنمای شبکهٔ اجتماعی ماستودون]]''||۱ ||۴۰٪|| رایانه||{{در حال انجام}}||[[کاربر:Alirezahayati]]، [[کاربر:Be4zad]]، [[کاربر:Ehsan0921]]
|-
||''[[رمزنگاری]]''||۲ ||۱۰٪|| ریاضی||{{در حال انجام}}||[[کاربر:Crypto~fawikibooks]]، [[کاربر:Doostdar]]، [[کاربر:Editor-1]]
|-
||''[[راهنمای مطالعه اولیس اثر تنیسون]]''||۲ ||۱۰٪|| ادبیات||{{در حال انجام}}||[[کاربر:Nightdevil]]
|-
||''[[ریاضی پایه]]''||۲۰ ||۷۰٪||ریاضی||{{در حال انجام}}||[[کاربر:Ebrahim]]، [[کاربر:Afshin sultani123]]، [[کاربر:Doostdar]]
|-
||''[[ریاضیات برای اقتصاد]]''||۶ ||۲۰٪||ریاضی||{{در حال انجام}}||[[کاربر:Niyumard]]
|-
||''[[ریاضی برای شیمی]]''||۹ ||۲۰٪||ریاضی و شیمی||{{در حال انجام}}||آی پی
|-
||''[[راهنمای برگزاری کنفرانسهای بینالمللی در ایران]]''||۱۵ ||۴۰٪|| دفترچه راهنما||{{در حال انجام}}||[[کاربر:Doostdar]]
|-
||''[[زبان برنامه نویسی سی]]''||۴۰ ||۶۰٪|| رایانه||{{در حال انجام}}||[[کاربر:Hard Backrest]]، [[کاربر:Amir.Vector]]، [[کاربر:HadiLovelorn]]
|-
||''[[زبان برنامهنویسی گو]]''||۲۱ ||۲۵٪|| رایانه||{{در حال انجام}}||[[کاربر:Fwldom]]
|-
||''[[سیستم عامل]]''||۷ ||۴۰٪|| رایانه||{{در حال انجام}}||[[کاربر:IamRezaMousavi]]، [[کاربر:Silverman2009]]، [[کاربر:Mohammad Mahdavi]]
|-
||''[[سیستمعامل تحقیقاتی آروس]]''||۱۱ ||۳۰٪|| رایانه||{{در حال انجام}}||[[کاربر:Doostdar]]
|-
||''[[سیشارپ]]''||۶ ||۴۰٪|| رایانه||{{در حال انجام}}||آیپی
|-
||''[[غلبه بر سستی]]''||۷ ||۷۵٪|| خودیاری||{{در حال انجام}}||[[کاربر:Doostdar]]
|-
||''[[فرمولهای فیزیک]]''||۸ ||۵۰٪|| فیزیک||{{در حال انجام}}||[[کاربر:Komeil 4life]]، [[کاربر:Kaveh]]، [[کاربر:Ubeyde in]]
|-
||''[[فرمولهای ریاضی]]''||۳ || ۱۰٪|| ریاضی||{{در حال انجام}}||آیپی
|-
||''[[فرهنگ افغانی]]''||۶ ||۴۰٪|| علوم اجتماعی||{{در حال انجام}}||[[کاربر:راشد عبیدی]]، [[کاربر:پاسدار]]
|-
||''[[فرهنگ ایرانی]]''||۴ ||۲۰٪|| علوم اجتماعی||{{در حال انجام}}||[[کاربر:Gire 3pich2005]]، [[کاربر:Doostdar]]
|-
||''[[فروشگاه نرمافزاری افدروید]]''||۴ ||۲۰٪|| رایانه||{{در حال انجام}}||[[کاربر:BehDev]]
|-
||''[[فیزیک مدرن]]''||۴ ||۵۰٪|| فیزیک||{{در حال انجام}}||[[کاربر:Xpluto]]
|-
||''[[کالبدشناسی انسان]]''||۴ ||۱۰٪|| پزشکی||{{در حال انجام}}||[[کاربر:Sprazizi]]، [[کاربر:گلبول سیاه]]
|-
||''[[کتاب عصر پایتون]]''||۸ ||۵۰٪|| رایانه||{{در حال انجام}}||[[کاربر:Reza1615]]، [[کاربر:IamRezaMousavi]]
|-
||''[[کوهنوردی]]''||۴ || ۲۰٪|| ورزش ||{{در حال انجام}}||[[کاربر:Doostdar]]، [[کاربر:Fwldom]]
|-
||''[[لاتک]]''||۸ || ۵۰٪|| رایانه||{{در حال انجام}}||[[کاربر:Ab.diyanat]]
|-
||''[[مدل ذهنی]]''||۳ ||۵۰٪|| فلسفه||{{در حال انجام}}||[[کاربر:Tarahikhodro]]
|-
||''[[مدرک لینوکس LPI]]'' ||۳ || رایانه||۵۰٪|| {{در حال انجام}}||[[کاربر:Doostdar]]، [[کاربر:Sajjad.r]]
|-
||''[[نگاهی به ریاضیات پیشرفته]]''||۹۰ ||۷۵٪||ریاضی||{{در حال انجام}}||[[کاربر:HEJJWJDEJDNSGWTG]]، [[کاربر:FDVDBFNDBSW2552]]
|-
||''[[هک]]''||۷ || ۹۰٪|| رایانه||{{در حال انجام}}||[[کاربر:Doostdar]]، [[کاربر:7ramin7]]
|-
||''[[یادگیری نرم افزار متلب]]''||۳ || ۵۰٪|| رایانه|| {{در حال انجام}}||[[کاربر:Key1nike]]، [[کاربر:Doostdar]]
|}
{{-}}
::''اگر علاقهمند به مشارکت در یکی از ایبوکهای بالا هستید با هماهنگی مشارکتکنندگان فعلی، میتوانید در پیشرفت کتاب کمک کنید.''
::''اگر فکر میکنید یکی از کتابهای بالا دارای مشکلاتی همچون نقض حق تکثیر است یا دارای سایر شرایط حذف است، آن را در [[وک:نبح|نظرخواهی برای حذف]] نامزد حذف کنید.''
==آثاری که به تازگی تکمیل شدهاند [[پرونده:Wikibooks-logo-fa2.svg|20px]] ==
در حال حاضر ۱۱ کتاب به ترتیب زمانی (از جدیدترین به قدیمیترین) در این فهرست جای گرفتهاند (که همه آنها در ۵ سال گذشته ایجاد شدهاند).
{| class="wikitable" style="font-size: 95%"
!'''نام ایبوک'''||'''تاریخ تکمیل'''||'''وضعیت'''||'''موضوع'''||'''وضعیت'''||'''مشارکت کنندگان'''
|-
||''[[سیاساس]]''||مرداد ۱۴۰۴ ||{{کامل شد}}|| رایانه||تکمیل||[[کاربر:Fwldom]]
|-
||''[[دورهمی طرح و حل مساله ریاضی]]''||اسفند ۱۴۰۳ ||{{کامل شد}}||ریاضی||تکمیل||[[کاربر:Abstractionist]]، [[کاربر:Tara.dalaei]]، [[کاربر:Mhrezanezhad]]، [[کاربر:Behnoosh.j]]، [[کاربر:AFarazF]]، [[کاربر:امید]]
|-
||''[[برنامه نویسی PSP]]''||شهریور ۱۴۰۳ ||{{کامل شد}}||رایانه||تکمیل||[[کاربر:Fwldom]]
|-
||''[[مبانی شبکههای کامپیوتری و سختافزار]]''||شهریور ۱۴۰۳ ||{{کامل شد}}||رایانه||تکمیل||[[کاربر:Fwldom]]
|-
||''[[پیاچپی]]''||شهریور ۱۴۰۳ ||{{کامل شد}}|| رایانه||تکمیل||[[کاربر:Sh-gholipour]]، [[کاربر:Editor-1]]، [[کاربر:Komeil 4life]] , [[کاربر:Fwldom]]
|-
||''[[آموزش کامل خط فرمان ویندوز]]''||فروردین ۱۴۰۳ || {{کامل شد}}||رایانه||تکمیل||[[کاربر:Fwldom]]
|-
||''[[مسیریابی وسایل نقلیه]]''|| دی ۱۴۰۲|| {{کامل شد}}||مدیریت||تکمیل||[[کاربر:Mehrdad1250]]
|-
||''[[آموزش کار با گودریدز]]''|| فروردین ۱۴۰۲|| {{کامل شد}}||رایانه||تکمیل||[[کاربر:Doostdar]]
|-
||''[[مقطع مخروطی]]''|| شهریور ۱۴۰۱|| {{کامل شد}}|| ریاضی||تکمیل||[[کاربر:FDVDBFNDBSW2552]]
|-
||''[[راهنمای شیوهنامه پیامرسانی ماتریکس]]''|| آبان ۱۴۰۱|| {{کامل شد}}|| رایانه||تکمیل||[[کاربر:BehDev]]
|-
||''[[سفرنامه ایران از اولیا چلبی]]''|| ۱۴۰۰|| {{کامل شد}}|| تاریخ||تکمیل||[[کاربر:ماسرا]]
|}
[[رده:ویکیکتاب]]
[[رده:فهرست کتابهای در حال تکمیل]]
301olqt7sg5cq3hbgaf8var2h2krtsv
راهنمای شبکهٔ اجتماعی ماستودون
0
30866
135550
134457
2026-10-04T17:13:32Z
~2026-38503-74
28196
135550
wikitext
text/x-wiki
{{کتاب کوچک}}
== ماستودون چیست؟ ==
[[پرونده:Mastodon_Logotype_(Full_Reversed).svg|بندانگشتی|300x300پیکسل|نشان شبکهٔ اجتماعی ماستودون]]
ماستودون [[پرونده:Font_Awesome_5_brands_mastodon.svg|بیقاب|24x24پیکسل]] یک شبکه اجتماعی است که در آن میتوان مطلب نوشت، عکس (نگاره) و ویدئو به اشتراک گذاشت و با کاربران دیگر برهمکنش داشت. ماستودون مانند رایانامه کار میکند و هر سروری میتواند با سروری دیگر ارتباط داشته باشد. محیط ماستودون برای نوشتههای کوتاه (میکروبلاگینگ) بهینه شدهاست و سقف پیشفرض نوشتهها در آن ۵۰۰ نویسه است.
واژهٔ [[w:ماستودون|ماستودون]] برگرفته از نام یک گونهٔ منقرضشده از راستهٔ فیلسانان است که شبیه ماموتها و فیلهای امروزی بودند و حدود ده هزار سال پیش منقرض شدند.
== کجا حساب باز کنیم؟ ==
ماستودون یک شبکۀ اجتماعی غیرمتمرکز است. درست همان طور که نشانیهای رایانامه را میتوان روی سرورهای گوناگونی ثبت کرد (مانند GMail، Hotmail یا Yahoo). کاربران ماستودون میتوانند حساب خود را روی سرورهای گوناگونی باز کنند. با این حال، همهٔ این کاربران میتوانند نوشتههای خود را برای کاربران سرورهای دیگر به اشتراک بگذارند و با آنها ارتباط داشته باشند.
به سرورهای ماستودون، «نمونه» یا "Instance" گفته میشود. فرقی نمیکند که روی کدام یک از نمونههای ماستودون ثبت نام کنید. حالت ایدهآل این است که روی نمونهای حساب باز کنید که مدیران یا دستکم برخی از کاربرانش را از قبل میشناسید و قوانین آن نمونه را رعایت میکنید. چند نمونه از نمونههای شناختهشدهٔ ماستودون را نام میبریم:
[[پرونده:Mastodon_Mascot_(Alternative).png|بندانگشتی|319x319پیکسل|نماد شگوننمای ماستودون یک ماموت پشمالو است که گاهی یک موبایل یا تبلت در دستش گرفته]]
* [http://mastodon.social/ mastodon.social] نمونهای که برنامهنویس اصلی نرمافزار ماستودون مدیر آن است. کاربران زیادی در این نمونه هستند و ثبتنام در آن پیشنهاد نمیشود. (همچنین در ایران فیلتر است)
* [https://mstdn.social mstdn.social]
* [https://mastodon.online mastodon.online] دومین نمونهای که برنامهنویس اصلی ماستودون مدیر آن است.
* [https://tilde.zone tilde.zone] نمووهای که قابلیت های بیشتری نسبت به ماستودون دارد و از انشعاب Glitch-soc استفاده میکند که قابلیتهایی مانند پشتیبانی از مارکدون را در اختیار میگذارد.
* [https://persadon.com/ persadon.com] پرسادون، نمونهای که با هدف گردهمآوری کاربران فارسیزبان پایهگذاری شدهاست (نمایهٔ [http://persadon.com/@masoud مدیر پرسادون]).
* [https://kompektiva.org kompektiva.org] کمپکتیوا، نمونهای جمعی، ضدفاشیست.
* [https://social.tchncs.de social.tchncs.de] یکی از نخستین نمونههای ماستودون.
* [https://fosstodon.org fosstodon.org] نمونهای برای کاربران علاقهمند به نرمافزارهای آزاد و متنباز (صرفا به انگلیسی).
* [https://mastodon.cloud/ mastodon.cloud]
فهرست بزرگتری از نمونههای ماستودون را در [https://joinmastodon.org/#getting-started اینجا] یا [https://instances.social/ اینجا] ببینید. توجه داشته باشید که منتقل کردن حساب بین نمونههای مختلف بسیار آسان است؛ اما شما نمیتوانید نوشتههای خود را به حساب مقصد انتقال دهید. با این حال یک پیوند به حساب مقصد داده میشود.
== با چه نرمافزاری وارد ماستودون شویم؟ ==
شما تقریباً میتوانید از هر پلتفرمی وارد ماستودون شوید. برای ورود به ماستودون از طریق وب، تنها آدرس نمونهتان را در مرورگر خود وارد کنید. نرمافزارهای مختلفی هم برای اتصال به ماستودون در سیستمعاملهایی چون اندروید، آیاواس، گنو، ویندوز و مک وجود دارند که میتوانید فهرست آنها را در [https://joinmastodon.org/apps وبگاه ماستودون] ببینید. ([https://github.com/tootsuite/documentation/blob/master/Using-Mastodon/Apps.md فهرست بسیار طولانیتری هم] اینجاست).
توجه: نرمافزارهای آزاد برای اتصال به ماستودون را از استورهای ناامنی مانند گوگلپلی یا وبگاههای متفرقه دانلود نکنید. استفاده از اینها میتواند حریم خصوصی و امنیت شما را به خطر بیندازد.
== حریم خصوصی نوشتهها ==
حریم خصوصی نوشتهها به صورت مستقل از حریم خصوصی حساب کاربری شما و مستقلاً برای هر نوشته مدیریت میشود. چهار حالت مختلف نمایش نوشتهها شامل عمومی، فهرست نشده، خصوصی و مستقیم در دسترس کاربر قرار دارند.
جهت انتخاب حالت نمایش (حریم خصوصی) هر نوشته از بین حالات فوق، بر روی نماد کره زمین در پایین کادری که نوشته خود را در آن مینویسید، کلیک کرده و گزینه مورد نظر را انتخاب کنید. تغییری که در این قسمت اعمال میکنید برای نوشتههای بعدی شما هم به خاطر سپرده میشود. به عنوان مثال چنانچه برای یک نوشته حالت نمایش را بر روی خصوصی قرار دهید، از آن پس برای تمامی نوشتههای شما این حالت در نظر گرفته خواهد شد. لذا اگر مایل نیستید که نوشتههای بعدی شما هم در همان حالت نمایش داده شوند، کافیست تا با استفاده از همین روش، حالت دلخواه خود را تغییر دهید.
=== [[پرونده:Globe_font_awesome.svg|بیقاب|25x25پیکسل]] عمومی ===
حالت پیشفرض در برای اغلب کاربران، این حالت است. نوشتههای عمومی برای همگان شامل اعضای ماستودون، کسانی که عضو نمونه شما و حتی عضو ماستودون هم نیستند و حتی برای باتهای جستجوگرها قابل روئیتاند و در صفحه شخصی شما نمایش داده خواهند شد.
=== [[پرونده:Font_Awesome_5_solid_unlock.svg|بیقاب|29x29پیکسل]] فهرستنشده ===
تقریباً مشابه حالت عمومی است و نوشتهها برای همه کسانی که شما را پی میگیرند یا نمیگیرند و حتی افرادی غیر از اعضای ماستودون قابل دیدن بوده و در صفحه شخصی شما نمایش داده میشوند، اما در نتایج جستجوها (مثلاً در فهرست نوشتههایی که تحت یک برچسب (hashtag) نوشته شدهاند) پدیدار نمیشوند و از نمایش آنها در فهرست نوشتههای عمومی نیز جلوگیری خواهد شد. لذا هرکس که بخواهد آن نوشته را ببیند باید یا شمارا قبلاً پی گرفته باشد یا نشانی صفحهٔ شخصی شما را داشته باشد و در آنجا مشاهدهاش کند.
=== [[پرونده:Font_Awesome_5_solid_lock.svg|بیقاب|29x29پیکسل]] خصوصی ===
نوشتهها در تایملاین عمومی نمایش داده نخواهند شد و حتی در صفحه شخصی شما هم برای افرادی که پیگیر (به انگلیسی: Follower) شما نباشند نمایش داده نخواهند شد.
=== [[پرونده:Envelope_alt_font_awesome.svg|بیقاب|25x25پیکسل]] مستقیم ===
نوشتهها فقط برای کاربرانی که آنهارا منشن کرده باشید (نام کاربریشان را در متن پیام درج کرده باشید) قابل روئیت خواهند بود و آنها نمیتوانند پیام شما را به اشتراک بگذارند. البته در ذهنتان داشته باشید که ممکن است نمونه مقصد از قوانین پیام مستقیم (به انگلیسی: Direct) تبعیت نکند. لذا چنانچه در حال طرح موضوع حساسی هستید که تمایلی به دیده شدن آن توسط سایرین ندارید، توصیه میکنیم آن مکالمه را به مکانی خارج از ماستودون منتقل کنید.
== یافتن کاربران دیگر ==
=== با دانستن نام کاربری ===
برای یافتن کاربرهای دیگر در شبکه ماستودون کافیست نام و نمونه آنها را به صورت یک آدرس ایمیل بنویسید.
مثلا برای یافتن کاربر user که در نمونه mastodon.social ثبت نام کرده، باید در کادر جستجو ابتدا واژهٔ user و پس از آن علامت @ و سپس عبارت mastodon.social را وارد کرده و دکمه جستجو را بفشارید.
نکته: چنانچه کاربر مورد نظر عضو نمونه فعلی شما باشد (در این مثال چنانچه هم شما و هم کاربر مورد نظر عضو mastodon.social باشید)، کافیست یک علامت @ درج کرده و سپس نام کاربر را بنویسید و نیاز به سایر قسمتها نمیباشد.
=== با تغییر تنظیمات ===
شما میتوانید برای یافتن کاربران دیگر از قسمت تایملاین جهانی استفاده کنید. در این قسمت شما میتوانید پستهایی از هر زبانی را ببینید، اما اگر میخواهید فقط پستهایی به یک زبان خاص (مثلاً فارسی) را ببینید، به قسمت تنظیمات -> ترجیحات -> دیگر بروید و در قسمت فیلتر کردن زبانها تیک فارسی را بزنید.
همچنین اگر شما هم میخواهید برای فارسی زبانها دیده شوید، به همان بخش بروید و زبان نوشتههایتان را فارسی کنید. این به دیگران کمک میکند که شما هم در قسمت تایملاین جهانی برای کاربران فارسیزبان دیده شوید.
=== با جستجوی نام نمایشی یا نام کاربری ===
در کادر جستجوی ماستودون میتوان کاربران دیگر را با «نام نمایشی» آنها نیز جستجو کرد. کافی است که عبارت جستجوی خود را (به فارسی یا به انگلیسی، مثلاً «محمدرضا» یا "Paul" یا "evergreen88") بنویسید و دکمهٔ Enter را بزنید.
=== اگر هنوز کسی را نمیشناسید ===
اگر تازه عضو ماستودون شدهاید و هنوز کسی را نمیشناسید، میتوانید نگاهی به فهرست نوشتههای محلی
[[پرونده:Group_font_awesome.svg|بیقاب|20x20پیکسل]] (local timeline) یا فهرست نوشتههای همه جا [[پرونده:Globe_font_awesome.svg|بیقاب|20x20پیکسل]] (federated timeline) بیندازید. در این دو فهرست، آخرین نوشتههایی که کاربران نمونه شما نوشتهاند، یا آخرین نوشتههایی که کاربران نمونههای دیگر (که همنمونهای شما آنها را پی میگیرند) نوشتهاند نمایش مییابد. اگر نوشتههای کسی به نظرتان جالب رسید، میتوانید روی تصویر نمایهٔ نویسنده کلیک کنید و او را پی بگیرید.
=== با داشتن نشانی صفحهٔ عمومی یا یکی از نوشتهها ===
اگر نمایهٔ (profile) یک کاربر یا یکی از نوشتههای او را در یک صفحهٔ جدا در مرورگر خود باز کردهاید، میتوانید نشانی آن صفحه را مستقیماً در کادر جستجوی ماستودون بنویسید تا نمایهٔ کاربر یا نوشتهٔ مورد نظرتان در نتایج جستجو ظاهر شود.
== یافتن و خواندن نوشتهها در میانهٔ یک گفتگو ==
شاید کاربران فیسبوک و گوگلپلاس (ولی نه توییتر) از شیوهٔ نمایش نوشتهها و پاسخها در ماستودون کمی سردرگم شوند. پس توضیح کوتاهی در این باره لازم است.
روش نمایش نوشتهها و پاسخها به هر نوشته در ماستودون بیشتر شبیه به سبک توییتر است. این یعنی اگر در ماستودون به نوشتهٔ کسی پاسخ دهید (یعنی اگر زیر نوشتهٔ کسی کامنت بگذارید)، پاسخ شما به شکل یک نوشتهٔ مستقل (بسیار شبیه نوشتهٔ اولیه) در فهرست نوشتهها پدیدار خواهد شد. این بر خلاف شبکههایی مانند فیسبوک یا گوگلپلاس است که در آنها پاسخها همیشه وابسته به نوشتهٔ اولیه هستند و در زیر آن نمایش مییابند. در روش گوگلپلاس یا فیسبوک، نویسندهٔ اولیه حتی میتواند پاسخ دیگران به نوشتهٔ خودش را حذف کند، ولی در روش ماستودون و توییتر، هر کسی مسئول و کنترلکنندهٔ نوشتهٔ خودش است.
پرسش کاربران فیسبوک و گوگلپلاس احتمالاً این است: اگر در فهرست نوشتههایی که پی میگیرم، نوشتهای را ببینم که به نظر میرسد در پاسخ به نوشتهٔ دیگری نوشته شده است، چگونه میتوانم خط سیر گفتگو را پیدا کنم و نوشتهها را به ترتیب درستش بخوانم؟ '''پاسخ:''' برای این کار کافی است که روی نوشته کلیک کنید! با این کار، نوشته در ستون جداگانهای باز میشود و در این ستون، همهٔ نوشتههای پیش و پس از آن (به شکل خط سیر کامل گفتگو) پدیدار میشوند.
اگر نوشتهٔ کاربری را روی صفحهٔ عمومی نمایهاش (و نه از درون محیط کاربری خودتان) میبینید، باید روی برچسب زمان نوشته کلیک کنید. با این کار نوشتهٔ او در یک صفحهٔ تازه باز میشود و همهٔ نوشتههای پیش و پس از آن نیز نمایش مییابند.
== خصوصیکردن حساب ==
اگر حساب خود را خصوصی کنید، افرادی که بخواهند شما را پیگیری (به انگلیسی: Follow) کنند باید درخواست دهند؛ تنها اگر شما درخواست آنها را بپذیرید آنها میتوانند نوشتههای شما را ببینند.
برای خصوصیکردن حساب، روی دکمهٔ ترجیحات [[پرونده:Cog_font_awesome.svg|بیقاب|20x20پیکسل]] (به انگلیسی: Preferences) کلیک کنید. در صفحه جدید، از ستون سمت چپ بر روی گزینه ویرایش نمایه (به انگلیسی: Edit Profile) کلیک کرده و کادر کنار عبارت «خصوصیکردن حساب» (به انگلیسی: Make account private) را تیک زده سپس دکمه ذخیره تغییرات (به انگلیسی: Save Changes) را کلیک کنید.
== نهفتن شبکهٔ ارتباطی ==
اگر شبکهٔ ارتباطی خود را پنهان کنید، کسی نمیتواند با دیدن نمایهٔ ماستودون شما بفهمد که شما پیگیر چه کسانی هستید یا چه کسانی شما را پی میگیرند.
برای نهفتن شبکهٔ ارتباطی، روی دکمهٔ ترجیحات [[پرونده:Cog_font_awesome.svg|بیقاب|20x20پیکسل]] (به انگلیسی: Preferences) کلیک کنید. سپس تیک کنار عبارت «نهفتن شبکهٔ ارتباطی» (به انگلیسی: Hide your network) را زده و در نهایت بر روی دکمه ذخیره تغییرات (به انگلیسی: SAVE CHANGES) کلیک کنید.
== پیشنهاد کاربران مورد علاقهٔ شما به دیگران ==
ماستودون بر خلاف اغلب شبکههای اجتماعی دیگر، کاربران را با هدف گسترش ارتباطات، به صورت تصادفی به یکدیگر پیشنهاد نمیدهد و برای این امر به کاربران این اجازه را میدهد که کاربرهایی را که دوست دارند با سایرین آشنا کنند، در صفحه شخصی خود معرفی کنند و هرکس که از صفحه شخصیشان بازدید کند، میتواند لیست کاربرهای منتخب آن شخص را ببیند.
برای این امر کافیست در تایملاین خود بر روی تصویر (به انگلیسی: Profile picture یا avatar) کاربر مورد نظر کلیک کرده، سپس در نمایهٔ کاربر که در ستون جدایی باز شدهاست، بر روی منو [[پرونده:Font_Awesome_5_solid_ellipsis-v.svg|بیقاب|13x13پیکسل]] کلیک کنید و گزینه «نمایش در نمایه» (به انگلیسی: Feature on profile) را برگزینید.
از این پس هر کاربری که به صفحه شخصی شما مراجعه کند، در ستون کناری میتواند آن کاربر را در لیست انتخابهای شما ببیند و چنانچه تمایل داشته باشد، با کلیک بر روی نام یا تصویر وی وارد صفحه شخصیاش خواهد شد.
نکته: برای حذف کاربر از لیست پیشنهادی، کافیست مراحل فوق را عیناً دنبال کرده و به جای گزینه «نمایش در نمایه»، ااین بار گزینه «نهفتن از نمایه» (به انگلیسی: Don't feature on profile) را کلیک کنید.
== گرفتن نسخهٔ پشتیبان از اطلاعات حساب ==
روی دکمهٔ ترجیحات [[پرونده:Cog_font_awesome.svg|بیقاب|20x20پیکسل]] (به انگلیسی: Preferences) کلیک کنید. در صفحه جدید، از ستون سمت چپ بر روی گزینه برونسپاری دادهها (به انگلیسی: Data export) کلیک کرده و در صفحه جدید بسته به نیازتان میتوانید با کلیک بر روی گزینه «درخواست بایگانی دادههایتان» (به انگلیسی: REQUEST YOUR ARCHIVE) از کل دادههای حساب کاربری خود یک نسخه پشتیبان (به انگلیسی: Backup) تهیه کنید و یا با کلیک بر روی واژه CSV موجود در مقابل گزینههای مختلف در بالای این دکمه، از هرکدام آنها به صورت جداگانه یک فایل پشتیبان تهیه کنید. توجه داشته باشید که گزینههای دارای CSV فقط برای نام و آدرس حسابهای کاربری کاربرد داشته و محتویات آنها را در بر نخواهند داشت.
== نقل مکان به یک حساب دیگر ==
روی دکمهٔ ترجیحات [[پرونده:Cog_font_awesome.svg|بیقاب|20x20پیکسل]] (به انگلیسی: Preferences) کلیک کنید. در صفحه جدید از ستون سمت چپ بر روی گزینه ویرایش نمایه (به انگلیسی: Edit Profile) کلیک کرده و در زیر دکمه ذخیره تغییرات گزینه «نقل مکان به یک حساب دیگر» قرار دارد که زیر آن جملهای برای این مضمون قرار دارد. کافیست بر روی گزینه «اینجا را کلیک کنید» (به انگلیسی: configure it here) کلیک کنید. در صفحه بعدی حساب ماستودونی که مایلید حساب فعلی به آن حساب منتقل (Redirect) شود را تایپ کرده و بر روی دکمه قرمز رنگ ذخیره (به انگلیسی: SAVE) کلیک کنید کنید.
== توسعه دهندگان ==
=== چرا باید نمونه ماستودون بسازیم؟ ===
دلایلی وجود دارد که شما را ترغیب میکند که نمونۀ ماستودون خود را راهاندازی کنید. این دلایل عبارتند از:
* به صاحب نمونۀ فعلی خود اعتماد ندارید.
* قوانین نمونۀ فعلی خود را دوست ندارید.
* یک جامعه خاص دارید.
* میخواهید مدیر خودتان باشید.
* میخواهید برای افراد مدنظرتان که به شما اعتماد دارند یک دیکتاتوری کوچک برپا کنید.
==== ایجاد نمونه ====
برای ایجاد نمونه [https://docs.joinmastodon.org/admin/prerequisites/ اینجا] را ببینید.
== اصطلاحات کاربردی در ماستودون ==
==== فرسته (به انگلیسی: Post) ====
به نوشتهها، عکسها، و هر اثر دیگری که در ماستودون میفرستیم «فرسته» میگوییم. در گذشته فرستههای ماستودون «بوق» نام داشت که صدای حیوان «ماستودون» است، مثل فرستههای توییتر که به آنها «توییت» میگویند که صدای «گنجشک» است. با این حال به دلیل ذات نامتمرکز شبکه که در آن فرستههایی از دیگر نرمافزارها مثل پیرتیوب و پیکسلفد نیز وجود دارد، اطلاق نامی خاص برای فرستههای ماستودون بیمعنی به نظر میرسید؛ بنابراین نام عمومی «فرسته» بر آنها گذاشته شد.
==== [[پرونده:Star_font_awesome.svg|بیقاب|25x25پیکسل]] برگزیدن (به انگلیسی: Favorite) ====
معادل پسندیدن و خوش آمدن است و هرگاه بخواهیم به فرستنده بگوییم از فرستهاش خوشمان آمده، دکمهٔ برگزیدن که با نماد یک ستاره مشخص شده را میفشاریم. هرگاه ستاره به صورت رنگی (زرد رنگ) درآمد یعنی آن نوشته را برگزیدهاید. فرستههای برگزیده برای همیشه در حساب کاربریتان مانده و میتوانید در آینده به آنها مراجعه کنید؛ بنابراین در برگزیدن فرستهها زیادهروی نکنید. با این حال، این فرستهها تنها برای خودتان قابل دیدن است و دیگران به فرستههای برگزیدهتان دسترسی نخواهند داشت.
==== [[پرونده:Retweet_font_awesome.svg|بیقاب|25x25پیکسل]] تقویت (به انگلیسی: Boost) ====
به عمل بازنشر یک فرسته گفته میشود. چنانچه فرستهای را کاربردی یافتید و مایل بودید آن را با پیگیرانتان همرسانی کنید، کافیست تا با تقویتش، به نظرشان برسانیدش.
==== [[پرونده:Font_Awesome_5_solid_user-plus.svg|بیقاب|25x25پیکسل]] پیگیری (به انگلیسی: Follow) ====
به عمل دنبال کردن یک حساب کاربری با هدف مشاهده فرستههایش در خط زمانی خانگی خود گفته میشود. چنانچه شخصی را پیبگیرید، از آن پس تمام نوشتههایش در قالبهای عمومی، لیست نشده و خصوصی برایتان قابل مشاهده خواهند بود و برای دیدن فرستههایش نیازی به مراجعه به صفحهٔ شخصیاش نخواهید داشت.
==== [[پرونده:Font_Awesome_5_solid_user-times.svg|بیقاب|25x25پیکسل]] ناپیگیری (به انگلیسی: Unfollow) ====
به عمل پایان پیگیری یک حساب کاربری گفته میشود. چنانچه شخصی را پیمیگیرید و مایل نباشید از این پس فرستههایش را بدون مراجعه به صفحهٔ شخصیاش ببینید، کافیست تا این دکمه را بفشارید و پس از تأیید، دیگر فرستههایش در خط زمانی خانگیتان نمایش داده نشده و از سیاههٔ پیگیران آن حساب خارج خواهید شد.
[[رده:راهنمای شبکهٔ اجتماعی ماستدون]]
[[رده:راهنماها]]
daseq24amty41o5sipvkhxgi76g9b3z
کوهنوردی
0
32710
135562
135525
2026-10-05T07:50:39Z
Fwldom
26269
/* فهرست کتاب */
135562
wikitext
text/x-wiki
{{وضعیت|0%}}{{وضعیت|0%}}
{{پارسی سره}}
{{کمک}}
[[پرونده:K2 8611.jpg|300px|چپ|چکاد K2 در هیمالیا]]
== کوهنوردی چیست؟ ==
پیمایش راهها در کوهستان، با بهکارگیری ابزارهای شگردی و درگیر شدن با راههای سنگی و یخی را '''کوهنوردی''' مینامند. به بلندیهای بیش از ۶۰۰ متر از زمینهای پیرامونی، '''کوه''' گفته میشود. کوهنوردی به پاد بسیاری از دیگر ورزشها دارای دستورهای پیچیده نیست. کوهنوردان شگردها و فلسفههای ناهمگونی برای بالا رفتن از کوه دارند.
== فهرست کتاب ==
* [[/پیشگفتار/]] {{پیشرفت|100%}}
* [[/تاریخچهٔ کوهنوردی/]] {{پیشرفت|100%}}
* [[/آمادگی پیکری/]] {{پیشرفت|100%}}
* [[/آمادگی روانی/]] {{پیشرفت|10%}}
* [[/افزارگان کوهنوردی/]] {{پیشرفت|100%}}
* [[/پوشاک و کفش کوهنوردی/]] {{پیشرفت|10%}}
* [[/خورد و خوراک/]] {{پیشرفت|10%}}
* [[/آب و نوشیدنی در کوهستان/]] {{پیشرفت|10%}}
* [[/کولهچینی و مدیریت بار/]] {{پیشرفت|10%}}
* [[/ناوبری و نقشهخوانی/]] {{پیشرفت|10%}}
* [[/هواشناسی کوهستان/]] {{پیشرفت|10%}}
* [[/ایمنی و پیشگیری از خطر/]] {{پیشرفت|10%}}
* [[/کمکهای نخستین در کوهستان/]] {{پیشرفت|10%}}
* [[/ارتفاعزدگی و سازگاری با ارتفاع/]] {{پیشرفت|10%}}
* [[/کوهپیمایی و پیمایش مسیر/]] {{پیشرفت|10%}}
* [[/صعود سنگی/]] {{پیشرفت|10%}}
* [[/صعود یخی و برفی/]] {{پیشرفت|10%}}
* [[/کوهنوردی زمستانی/]] {{پیشرفت|10%}}
* [[/کوهنوردی گروهی/]] {{پیشرفت|10%}}
* [[/کمپینگ و شبمانی در کوهستان/]] {{پیشرفت|10%}}
* [[/محیط زیست کوهستان/]] {{پیشرفت|10%}}
* [[/اصول اخلاقی کوهنوردی/]] {{پیشرفت|10%}}
* [[/معرفی قلههای ایران/]] {{پیشرفت|10%}}
* [[/معرفی رشتهکوههای ایران/]] {{پیشرفت|10%}}
* [[/معرفی قلههای جهان/]] {{پیشرفت|10%}}
* [[/درجهبندی دشواری مسیرها/]] {{پیشرفت|10%}}
* [[/برنامهریزی صعود/]] {{پیشرفت|10%}}
* [[/ثبت و گزارش صعود/]] {{پیشرفت|10%}}
* [[/تاریخچهٔ کوهنوردی ایران/]] {{پیشرفت|10%}}
* [[/کوهنوردان نامدار ایران/]] {{پیشرفت|10%}}
[[رده:کوهنوردی]]
biefrtu1bktlkujy0ve8f51snlsr0id
135570
135562
2026-10-05T08:02:49Z
Fwldom
26269
/* فهرست کتاب */ اصلاح فاصلهٔ مجازی، اصلاح ارقام، اصلاح نویسه، اصلاح نویسههای عربی
135570
wikitext
text/x-wiki
{{وضعیت|0%}}{{وضعیت|0%}}
{{پارسی سره}}
{{کمک}}
[[پرونده:K2 8611.jpg|300px|چپ|چکاد K2 در هیمالیا]]
== کوهنوردی چیست؟ ==
پیمایش راهها در کوهستان، با بهکارگیری ابزارهای شگردی و درگیر شدن با راههای سنگی و یخی را '''کوهنوردی''' مینامند. به بلندیهای بیش از ۶۰۰ متر از زمینهای پیرامونی، '''کوه''' گفته میشود. کوهنوردی به پاد بسیاری از دیگر ورزشها دارای دستورهای پیچیده نیست. کوهنوردان شگردها و فلسفههای ناهمگونی برای بالا رفتن از کوه دارند.
== فهرست کتاب ==
=== آغاز کتاب ===
* [[/صفحه اصلی/]] {{پیشرفت|100%}}
* [[/پیشگفتار/]] {{پیشرفت|100%}}
=== فصل ۱: تاریخچه و مبانی ===
* [[/تاریخچه کوهنوردی/]] {{پیشرفت|100%}}
* [[/تاریخچه کوهنوردی ایران/]] {{پیشرفت|10%}}
=== فصل ۲: آمادگی کوهنورد ===
* [[/آمادگی پیکری/]] {{پیشرفت|100%}}
* [[/آمادگی روانی/]] {{پیشرفت|100%}}
=== فصل ۳: تجهیزات کوهنوردی ===
* [[/افزارگان کوهنوردی/]] {{پیشرفت|100%}}
* [[/پوشاک و کفش کوهنوردی/]] {{پیشرفت|10%}}
=== فصل ۴: کولهچینی و مدیریت بار ===
* [[/کولهچینی و مدیریت بار/]] {{پیشرفت|10%}}
=== فصل ۵: تغذیه و آب در کوهستان ===
* [[/خورد و خوراک/]] {{پیشرفت|10%}}
* [[/آب و نوشیدنی در کوهستان/]] {{پیشرفت|10%}}
=== فصل ۶: ناوبری و شناخت مسیر ===
* [[/ناوبری و نقشهخوانی/]] {{پیشرفت|10%}}
* [[/کوهپیمایی و پیمایش مسیر/]] {{پیشرفت|10%}}
=== فصل ۷: هواشناسی کوهستان ===
* [[/هواشناسی کوهستان/]] {{پیشرفت|10%}}
=== فصل ۸: برنامهریزی و ثبت صعود ===
* [[/برنامهریزی صعود/]] {{پیشرفت|10%}}
* [[/ثبت و گزارش صعود/]] {{پیشرفت|10%}}
=== فصل ۹: ایمنی و پیشگیری از خطر ===
* [[/ایمنی و پیشگیری از خطر/]] {{پیشرفت|10%}}
=== فصل ۱۰: کمکهای نخستین ===
* [[/کمکهای نخستین در کوهستان/]] {{پیشرفت|10%}}
=== فصل ۱۱: ارتفاع و سازگاری با آن ===
* [[/ارتفاعزدگی و سازگاری با ارتفاع/]] {{پیشرفت|10%}}
=== فصل ۱۲: صعود سنگی ===
* [[/صعود سنگی/]] {{پیشرفت|10%}}
=== فصل ۱۳: صعود یخی و برفی ===
* [[/صعود یخی و برفی/]] {{پیشرفت|10%}}
=== فصل ۱۴: کوهنوردی زمستانی ===
* [[/کوهنوردی زمستانی/]] {{پیشرفت|10%}}
=== فصل ۱۵: کمپینگ و شبمانی ===
* [[/کمپینگ و شبمانی در کوهستان/]] {{پیشرفت|10%}}
=== فصل ۱۶: کوهنوردی گروهی ===
* [[/کوهنوردی گروهی/]] {{پیشرفت|10%}}
=== فصل ۱۷: محیط زیست کوهستان ===
* [[/محیط زیست کوهستان/]] {{پیشرفت|10%}}
=== فصل ۱۸: اصول اخلاقی کوهنوردی ===
* [[/اصول اخلاقی کوهنوردی/]] {{پیشرفت|10%}}
=== فصل ۱۹: درجهبندی دشواری مسیرها ===
* [[/درجهبندی دشواری مسیرها/]] {{پیشرفت|10%}}
=== فصل ۲۰: قلهها و رشتهکوههای ایران ===
* [[/معرفی قلههای ایران/]] {{پیشرفت|10%}}
* [[/معرفی رشتهکوههای ایران/]] {{پیشرفت|10%}}
=== فصل ۲۱: قلههای جهان ===
* [[/معرفی قلههای جهان/]] {{پیشرفت|10%}}
=== فصل ۲۲: تاریخچه کوهنوردی ایران ===
* [[/تاریخچه کوهنوردی ایران/]] {{پیشرفت|10%}}
=== فصل ۲۳: کوهنوردان نامدار ایران ===
* [[/کوهنوردان نامدار ایران/]] {{پیشرفت|10%}}
[[رده:کوهنوردی]]
qxme1qdby38rxep6nqxnatolsyk64qf
135573
135570
2026-10-05T08:08:03Z
Fwldom
26269
135573
wikitext
text/x-wiki
{{وضعیت|25%}}
{{پارسی سره}}
{{کمک}}
[[پرونده:K2 8611.jpg|200px|قاب|چپ|چکاد K2 در هیمالیا]]
== کوهنوردی چیست؟ ==
پیمایش راهها در کوهستان، با بهکارگیری ابزارهای شگردی و درگیر شدن با راههای سنگی و یخی را '''کوهنوردی''' مینامند. به بلندیهای بیش از ۶۰۰ متر از زمینهای پیرامونی، '''کوه''' گفته میشود. کوهنوردی به پاد بسیاری از دیگر ورزشها دارای دستورهای پیچیده نیست. کوهنوردان شگردها و فلسفههای ناهمگونی برای بالا رفتن از کوه دارند.
== فهرست کتاب ==
=== آغاز کتاب ===
* [[/صفحه اصلی/]] {{پیشرفت|100%}}
* [[/پیشگفتار/]] {{پیشرفت|100%}}
=== فصل ۱: تاریخچه و مبانی ===
* [[/تاریخچه کوهنوردی/]] {{پیشرفت|100%}}
* [[/تاریخچه کوهنوردی ایران/]] {{پیشرفت|10%}}
=== فصل ۲: آمادگی کوهنورد ===
* [[/آمادگی پیکری/]] {{پیشرفت|100%}}
* [[/آمادگی روانی/]] {{پیشرفت|100%}}
=== فصل ۳: تجهیزات کوهنوردی ===
* [[/افزارگان کوهنوردی/]] {{پیشرفت|100%}}
* [[/پوشاک و کفش کوهنوردی/]] {{پیشرفت|10%}}
=== فصل ۴: کولهچینی و مدیریت بار ===
* [[/کولهچینی و مدیریت بار/]] {{پیشرفت|10%}}
=== فصل ۵: تغذیه و آب در کوهستان ===
* [[/خورد و خوراک/]] {{پیشرفت|10%}}
* [[/آب و نوشیدنی در کوهستان/]] {{پیشرفت|10%}}
=== فصل ۶: ناوبری و شناخت مسیر ===
* [[/ناوبری و نقشهخوانی/]] {{پیشرفت|10%}}
* [[/کوهپیمایی و پیمایش مسیر/]] {{پیشرفت|10%}}
=== فصل ۷: هواشناسی کوهستان ===
* [[/هواشناسی کوهستان/]] {{پیشرفت|10%}}
=== فصل ۸: برنامهریزی و ثبت صعود ===
* [[/برنامهریزی صعود/]] {{پیشرفت|10%}}
* [[/ثبت و گزارش صعود/]] {{پیشرفت|10%}}
=== فصل ۹: ایمنی و پیشگیری از خطر ===
* [[/ایمنی و پیشگیری از خطر/]] {{پیشرفت|10%}}
=== فصل ۱۰: کمکهای نخستین ===
* [[/کمکهای نخستین در کوهستان/]] {{پیشرفت|10%}}
=== فصل ۱۱: ارتفاع و سازگاری با آن ===
* [[/ارتفاعزدگی و سازگاری با ارتفاع/]] {{پیشرفت|10%}}
=== فصل ۱۲: صعود سنگی ===
* [[/صعود سنگی/]] {{پیشرفت|10%}}
=== فصل ۱۳: صعود یخی و برفی ===
* [[/صعود یخی و برفی/]] {{پیشرفت|10%}}
=== فصل ۱۴: کوهنوردی زمستانی ===
* [[/کوهنوردی زمستانی/]] {{پیشرفت|10%}}
=== فصل ۱۵: کمپینگ و شبمانی ===
* [[/کمپینگ و شبمانی در کوهستان/]] {{پیشرفت|10%}}
=== فصل ۱۶: کوهنوردی گروهی ===
* [[/کوهنوردی گروهی/]] {{پیشرفت|10%}}
=== فصل ۱۷: محیط زیست کوهستان ===
* [[/محیط زیست کوهستان/]] {{پیشرفت|10%}}
=== فصل ۱۸: اصول اخلاقی کوهنوردی ===
* [[/اصول اخلاقی کوهنوردی/]] {{پیشرفت|10%}}
=== فصل ۱۹: درجهبندی دشواری مسیرها ===
* [[/درجهبندی دشواری مسیرها/]] {{پیشرفت|10%}}
=== فصل ۲۰: قلهها و رشتهکوههای ایران ===
* [[/معرفی قلههای ایران/]] {{پیشرفت|10%}}
* [[/معرفی رشتهکوههای ایران/]] {{پیشرفت|10%}}
=== فصل ۲۱: قلههای جهان ===
* [[/معرفی قلههای جهان/]] {{پیشرفت|10%}}
=== فصل ۲۲: تاریخچه کوهنوردی ایران ===
* [[/تاریخچه کوهنوردی ایران/]] {{پیشرفت|10%}}
=== فصل ۲۳: کوهنوردان نامدار ایران ===
* [[/کوهنوردان نامدار ایران/]] {{پیشرفت|10%}}
[[رده:کوهنوردی]]
84ffx5hws9tdpdpytyd7ni9hbk6w2gb
135574
135573
2026-10-05T08:10:33Z
Fwldom
26269
135574
wikitext
text/x-wiki
{{وضعیت|25%}}
{{پارسی سره}}
{{کمک}}
== کوهنوردی چیست؟ ==
[[پرونده:K2 8611.jpg|بندانگشتی|چپ|چکاد K2 در هیمالیا]]
پیمایش راهها در کوهستان، با بهکارگیری ابزارهای شگردی و درگیر شدن با راههای سنگی و یخی را '''کوهنوردی''' مینامند. به بلندیهای بیش از ۶۰۰ متر از زمینهای پیرامونی، '''کوه''' گفته میشود. کوهنوردی به پاد بسیاری از دیگر ورزشها دارای دستورهای پیچیده نیست. کوهنوردان شگردها و فلسفههای ناهمگونی برای بالا رفتن از کوه دارند.
== فهرست کتاب ==
=== آغاز کتاب ===
* [[/صفحه اصلی/]] {{پیشرفت|100%}}
* [[/پیشگفتار/]] {{پیشرفت|100%}}
=== فصل ۱: تاریخچه و مبانی ===
* [[/تاریخچه کوهنوردی/]] {{پیشرفت|100%}}
* [[/تاریخچه کوهنوردی ایران/]] {{پیشرفت|10%}}
=== فصل ۲: آمادگی کوهنورد ===
* [[/آمادگی پیکری/]] {{پیشرفت|100%}}
* [[/آمادگی روانی/]] {{پیشرفت|100%}}
=== فصل ۳: تجهیزات کوهنوردی ===
* [[/افزارگان کوهنوردی/]] {{پیشرفت|100%}}
* [[/پوشاک و کفش کوهنوردی/]] {{پیشرفت|10%}}
=== فصل ۴: کولهچینی و مدیریت بار ===
* [[/کولهچینی و مدیریت بار/]] {{پیشرفت|10%}}
=== فصل ۵: تغذیه و آب در کوهستان ===
* [[/خورد و خوراک/]] {{پیشرفت|10%}}
* [[/آب و نوشیدنی در کوهستان/]] {{پیشرفت|10%}}
=== فصل ۶: ناوبری و شناخت مسیر ===
* [[/ناوبری و نقشهخوانی/]] {{پیشرفت|10%}}
* [[/کوهپیمایی و پیمایش مسیر/]] {{پیشرفت|10%}}
=== فصل ۷: هواشناسی کوهستان ===
* [[/هواشناسی کوهستان/]] {{پیشرفت|10%}}
=== فصل ۸: برنامهریزی و ثبت صعود ===
* [[/برنامهریزی صعود/]] {{پیشرفت|10%}}
* [[/ثبت و گزارش صعود/]] {{پیشرفت|10%}}
=== فصل ۹: ایمنی و پیشگیری از خطر ===
* [[/ایمنی و پیشگیری از خطر/]] {{پیشرفت|10%}}
=== فصل ۱۰: کمکهای نخستین ===
* [[/کمکهای نخستین در کوهستان/]] {{پیشرفت|10%}}
=== فصل ۱۱: ارتفاع و سازگاری با آن ===
* [[/ارتفاعزدگی و سازگاری با ارتفاع/]] {{پیشرفت|10%}}
=== فصل ۱۲: صعود سنگی ===
* [[/صعود سنگی/]] {{پیشرفت|10%}}
=== فصل ۱۳: صعود یخی و برفی ===
* [[/صعود یخی و برفی/]] {{پیشرفت|10%}}
=== فصل ۱۴: کوهنوردی زمستانی ===
* [[/کوهنوردی زمستانی/]] {{پیشرفت|10%}}
=== فصل ۱۵: کمپینگ و شبمانی ===
* [[/کمپینگ و شبمانی در کوهستان/]] {{پیشرفت|10%}}
=== فصل ۱۶: کوهنوردی گروهی ===
* [[/کوهنوردی گروهی/]] {{پیشرفت|10%}}
=== فصل ۱۷: محیط زیست کوهستان ===
* [[/محیط زیست کوهستان/]] {{پیشرفت|10%}}
=== فصل ۱۸: اصول اخلاقی کوهنوردی ===
* [[/اصول اخلاقی کوهنوردی/]] {{پیشرفت|10%}}
=== فصل ۱۹: درجهبندی دشواری مسیرها ===
* [[/درجهبندی دشواری مسیرها/]] {{پیشرفت|10%}}
=== فصل ۲۰: قلهها و رشتهکوههای ایران ===
* [[/معرفی قلههای ایران/]] {{پیشرفت|10%}}
* [[/معرفی رشتهکوههای ایران/]] {{پیشرفت|10%}}
=== فصل ۲۱: قلههای جهان ===
* [[/معرفی قلههای جهان/]] {{پیشرفت|10%}}
=== فصل ۲۲: تاریخچه کوهنوردی ایران ===
* [[/تاریخچه کوهنوردی ایران/]] {{پیشرفت|10%}}
=== فصل ۲۳: کوهنوردان نامدار ایران ===
* [[/کوهنوردان نامدار ایران/]] {{پیشرفت|10%}}
[[رده:کوهنوردی]]
odu32k8dqq2fr75bnwsof3bw70bes3c
135575
135574
2026-10-05T08:11:15Z
Fwldom
26269
/* فصل ۲۳: کوهنوردان نامدار ایران */
135575
wikitext
text/x-wiki
{{وضعیت|25%}}
{{پارسی سره}}
{{کمک}}
== کوهنوردی چیست؟ ==
[[پرونده:K2 8611.jpg|بندانگشتی|چپ|چکاد K2 در هیمالیا]]
پیمایش راهها در کوهستان، با بهکارگیری ابزارهای شگردی و درگیر شدن با راههای سنگی و یخی را '''کوهنوردی''' مینامند. به بلندیهای بیش از ۶۰۰ متر از زمینهای پیرامونی، '''کوه''' گفته میشود. کوهنوردی به پاد بسیاری از دیگر ورزشها دارای دستورهای پیچیده نیست. کوهنوردان شگردها و فلسفههای ناهمگونی برای بالا رفتن از کوه دارند.
== فهرست کتاب ==
=== آغاز کتاب ===
* [[/صفحه اصلی/]] {{پیشرفت|100%}}
* [[/پیشگفتار/]] {{پیشرفت|100%}}
=== فصل ۱: تاریخچه و مبانی ===
* [[/تاریخچه کوهنوردی/]] {{پیشرفت|100%}}
* [[/تاریخچه کوهنوردی ایران/]] {{پیشرفت|10%}}
=== فصل ۲: آمادگی کوهنورد ===
* [[/آمادگی پیکری/]] {{پیشرفت|100%}}
* [[/آمادگی روانی/]] {{پیشرفت|100%}}
=== فصل ۳: تجهیزات کوهنوردی ===
* [[/افزارگان کوهنوردی/]] {{پیشرفت|100%}}
* [[/پوشاک و کفش کوهنوردی/]] {{پیشرفت|10%}}
=== فصل ۴: کولهچینی و مدیریت بار ===
* [[/کولهچینی و مدیریت بار/]] {{پیشرفت|10%}}
=== فصل ۵: تغذیه و آب در کوهستان ===
* [[/خورد و خوراک/]] {{پیشرفت|10%}}
* [[/آب و نوشیدنی در کوهستان/]] {{پیشرفت|10%}}
=== فصل ۶: ناوبری و شناخت مسیر ===
* [[/ناوبری و نقشهخوانی/]] {{پیشرفت|10%}}
* [[/کوهپیمایی و پیمایش مسیر/]] {{پیشرفت|10%}}
=== فصل ۷: هواشناسی کوهستان ===
* [[/هواشناسی کوهستان/]] {{پیشرفت|10%}}
=== فصل ۸: برنامهریزی و ثبت صعود ===
* [[/برنامهریزی صعود/]] {{پیشرفت|10%}}
* [[/ثبت و گزارش صعود/]] {{پیشرفت|10%}}
=== فصل ۹: ایمنی و پیشگیری از خطر ===
* [[/ایمنی و پیشگیری از خطر/]] {{پیشرفت|10%}}
=== فصل ۱۰: کمکهای نخستین ===
* [[/کمکهای نخستین در کوهستان/]] {{پیشرفت|10%}}
=== فصل ۱۱: ارتفاع و سازگاری با آن ===
* [[/ارتفاعزدگی و سازگاری با ارتفاع/]] {{پیشرفت|10%}}
=== فصل ۱۲: صعود سنگی ===
* [[/صعود سنگی/]] {{پیشرفت|10%}}
=== فصل ۱۳: صعود یخی و برفی ===
* [[/صعود یخی و برفی/]] {{پیشرفت|10%}}
=== فصل ۱۴: کوهنوردی زمستانی ===
* [[/کوهنوردی زمستانی/]] {{پیشرفت|10%}}
=== فصل ۱۵: کمپینگ و شبمانی ===
* [[/کمپینگ و شبمانی در کوهستان/]] {{پیشرفت|10%}}
=== فصل ۱۶: کوهنوردی گروهی ===
* [[/کوهنوردی گروهی/]] {{پیشرفت|10%}}
=== فصل ۱۷: محیط زیست کوهستان ===
* [[/محیط زیست کوهستان/]] {{پیشرفت|10%}}
=== فصل ۱۸: اصول اخلاقی کوهنوردی ===
* [[/اصول اخلاقی کوهنوردی/]] {{پیشرفت|10%}}
=== فصل ۱۹: درجهبندی دشواری مسیرها ===
* [[/درجهبندی دشواری مسیرها/]] {{پیشرفت|10%}}
=== فصل ۲۰: قلهها و رشتهکوههای ایران ===
* [[/معرفی قلههای ایران/]] {{پیشرفت|10%}}
* [[/معرفی رشتهکوههای ایران/]] {{پیشرفت|10%}}
=== فصل ۲۱: قلههای جهان ===
* [[/معرفی قلههای جهان/]] {{پیشرفت|10%}}
=== فصل ۲۲: تاریخچه کوهنوردی ایران ===
* [[/تاریخچه کوهنوردی ایران/]] {{پیشرفت|10%}}
=== فصل ۲۳: کوهنوردان نامدار ایران ===
* [[/کوهنوردان نامدار ایران/]] {{پیشرفت|100%}}
[[رده:کوهنوردی]]
jriw5r3zxddf7bi4fr2tg6vf4tv84vr
135580
135575
2026-10-05T08:24:21Z
Fwldom
26269
/* فصل ۳: تجهیزات کوهنوردی */
135580
wikitext
text/x-wiki
{{وضعیت|25%}}
{{پارسی سره}}
{{کمک}}
== کوهنوردی چیست؟ ==
[[پرونده:K2 8611.jpg|بندانگشتی|چپ|چکاد K2 در هیمالیا]]
پیمایش راهها در کوهستان، با بهکارگیری ابزارهای شگردی و درگیر شدن با راههای سنگی و یخی را '''کوهنوردی''' مینامند. به بلندیهای بیش از ۶۰۰ متر از زمینهای پیرامونی، '''کوه''' گفته میشود. کوهنوردی به پاد بسیاری از دیگر ورزشها دارای دستورهای پیچیده نیست. کوهنوردان شگردها و فلسفههای ناهمگونی برای بالا رفتن از کوه دارند.
== فهرست کتاب ==
=== آغاز کتاب ===
* [[/صفحه اصلی/]] {{پیشرفت|100%}}
* [[/پیشگفتار/]] {{پیشرفت|100%}}
=== فصل ۱: تاریخچه و مبانی ===
* [[/تاریخچه کوهنوردی/]] {{پیشرفت|100%}}
* [[/تاریخچه کوهنوردی ایران/]] {{پیشرفت|10%}}
=== فصل ۲: آمادگی کوهنورد ===
* [[/آمادگی پیکری/]] {{پیشرفت|100%}}
* [[/آمادگی روانی/]] {{پیشرفت|100%}}
=== فصل ۳: تجهیزات کوهنوردی ===
* [[/افزارگان کوهنوردی/]] {{پیشرفت|100%}}
* [[/پوشاک و کفش کوهنوردی/]] {{پیشرفت|100%}}
=== فصل ۴: کولهچینی و مدیریت بار ===
* [[/کولهچینی و مدیریت بار/]] {{پیشرفت|10%}}
=== فصل ۵: تغذیه و آب در کوهستان ===
* [[/خورد و خوراک/]] {{پیشرفت|10%}}
* [[/آب و نوشیدنی در کوهستان/]] {{پیشرفت|10%}}
=== فصل ۶: ناوبری و شناخت مسیر ===
* [[/ناوبری و نقشهخوانی/]] {{پیشرفت|10%}}
* [[/کوهپیمایی و پیمایش مسیر/]] {{پیشرفت|10%}}
=== فصل ۷: هواشناسی کوهستان ===
* [[/هواشناسی کوهستان/]] {{پیشرفت|10%}}
=== فصل ۸: برنامهریزی و ثبت صعود ===
* [[/برنامهریزی صعود/]] {{پیشرفت|10%}}
* [[/ثبت و گزارش صعود/]] {{پیشرفت|10%}}
=== فصل ۹: ایمنی و پیشگیری از خطر ===
* [[/ایمنی و پیشگیری از خطر/]] {{پیشرفت|10%}}
=== فصل ۱۰: کمکهای نخستین ===
* [[/کمکهای نخستین در کوهستان/]] {{پیشرفت|10%}}
=== فصل ۱۱: ارتفاع و سازگاری با آن ===
* [[/ارتفاعزدگی و سازگاری با ارتفاع/]] {{پیشرفت|10%}}
=== فصل ۱۲: صعود سنگی ===
* [[/صعود سنگی/]] {{پیشرفت|10%}}
=== فصل ۱۳: صعود یخی و برفی ===
* [[/صعود یخی و برفی/]] {{پیشرفت|10%}}
=== فصل ۱۴: کوهنوردی زمستانی ===
* [[/کوهنوردی زمستانی/]] {{پیشرفت|10%}}
=== فصل ۱۵: کمپینگ و شبمانی ===
* [[/کمپینگ و شبمانی در کوهستان/]] {{پیشرفت|10%}}
=== فصل ۱۶: کوهنوردی گروهی ===
* [[/کوهنوردی گروهی/]] {{پیشرفت|10%}}
=== فصل ۱۷: محیط زیست کوهستان ===
* [[/محیط زیست کوهستان/]] {{پیشرفت|10%}}
=== فصل ۱۸: اصول اخلاقی کوهنوردی ===
* [[/اصول اخلاقی کوهنوردی/]] {{پیشرفت|10%}}
=== فصل ۱۹: درجهبندی دشواری مسیرها ===
* [[/درجهبندی دشواری مسیرها/]] {{پیشرفت|10%}}
=== فصل ۲۰: قلهها و رشتهکوههای ایران ===
* [[/معرفی قلههای ایران/]] {{پیشرفت|10%}}
* [[/معرفی رشتهکوههای ایران/]] {{پیشرفت|10%}}
=== فصل ۲۱: قلههای جهان ===
* [[/معرفی قلههای جهان/]] {{پیشرفت|10%}}
=== فصل ۲۲: تاریخچه کوهنوردی ایران ===
* [[/تاریخچه کوهنوردی ایران/]] {{پیشرفت|10%}}
=== فصل ۲۳: کوهنوردان نامدار ایران ===
* [[/کوهنوردان نامدار ایران/]] {{پیشرفت|100%}}
[[رده:کوهنوردی]]
b2ks8ri1uogogcvkww7yid3tqnsnxon
کوهنوردی/افزارگان کوهنوردی
0
32713
135559
109402
2026-10-05T07:32:25Z
Fwldom
26269
135559
wikitext
text/x-wiki
{{ناوبری|قبلی=آمادگی روانی|فعلی=افزارگان کوهنوردی|بعدی=پوشاک و کفش کوهنوردی}}
* کوله پشتی
* کفش کوهنوردی
* دستکش چرمی
* کیسه خواب
[[رده:کوهنوردی]]
chpvoe4f9ldzw6qc0uxmykqthgee4eb
135561
135559
2026-10-05T07:49:02Z
Fwldom
26269
اصلاح فاصلهٔ مجازی، اصلاح نویسههای عربی
135561
wikitext
text/x-wiki
{{ناوبری|قبلی=آمادگی روانی|فعلی=افزارگان کوهنوردی|بعدی=پوشاک و کفش کوهنوردی}}
«Omnia mea mecum porto، (همه آنچه دارم را با خود حمل میکنم)»، گفته، فیلسوف یونانی بود که به سادگی و فروتنی شهرت داشت و بیش از دو هزار سال پیش میزیست.
این فصل درباره تجهیزات مورد نیاز برای یک [[w:fa:کوهنوردی|کوهنوردی]]، چه کوتاه و چه چندروزه، است.
در اینجا درباره [[w:fa:کولهپشتی|کولهپشتی]]، تجهیزات کمپ، وسایل غذاخوری و آشپزی (با کنار گذاشتن خود مواد غذایی برای فصل مربوط به آن)، و همچنین بسیاری از وسایل ضروری و معمول دیگری که یک گردشگر معمولاً برای یک گردش به همراه میبرد، صحبت خواهیم کرد.
== نکات پایه ==
با توجه به ماهیت فعالیت گردشگری، فردی که میخواهد در محیطی طبیعی به گردش بپردازد، علاوه بر اشتیاق، آمادگی جسمانی معمول و کفش و لباس مناسب، به چندین وسیله دیگر نیز نیاز خواهد داشت؛ مانند مواد غذایی، آب، یک چاقوی جیبی، لباس گرم اضافی، لباس اضافه برای زمانی که گرمش شود و همچنین وسیلهای برای نگهداری همه این موارد، در کنار بسیاری از وسایل مفید و مهم دیگر.
یکی از مسائل کلی در انتخاب تجهیزات، وزن، کاربرد و کیفیت آنهاست. یک گردشگر معمولاً کولهپشتی خود را حمل میکند و تمام وسایل شخصی خود و گاهی برخی وسایل مشترک گروه را نیز در آن قرار میدهد. بنابراین مسئله وزن اهمیت زیادی دارد، اگر بخواهیم از یک گردش لذت ببریم و در پایان از آن متنفر نشویم.
با این حال، وزن مهمترین عامل نیست؛ بلکه در درجه اول باید به دنبال تجهیزاتی کاربردی و عملی با کیفیت مناسب بود. حمل وسیلهای سبک که کارایی لازم را ندارد یا در شرایط محیطی دوام نمیآورد، فایدهای ندارد. بنابراین هنگام بستن کولهپشتی و تصمیمگیری درباره اینکه چه تجهیزات و وسایلی را با خود ببریم، باید ابتدا به «کاربرد» و سپس به «وزن» توجه کنیم.
منظور از کاربرد این است که یک وسیله تا چه اندازه برای کاری که به خاطر آن حمل میشود مفید است و کیفیت آن برای استفاده مورد نظر چقدر مناسب است. وزن، اگرچه مفهوم روشنی دارد، اما بسیاری از اوقات در خانه وزن وسایل دستکم گرفته میشود و در میانه گردش آرزو میکنیم آنها را دور بیندازیم. همچنین باید بررسی کرد که آیا واقعاً ارزش دارد وسیلهای را با خود حمل کنیم یا نه؛ بسیاری از وسایل مطلوب هستند، اما وزن آنها به اندازهای است که حملشان توجیه ندارد.
در نهایت، این موضوع به هر فرد، ارزیابی شخصی او یا تصمیم راهنما (در صورت وجود و لزوم) بستگی دارد تا میان کاربرد یک وسیله و وزن آن تعادل برقرار کند.
رایج است که گردشگران تازهکار تجهیزات نامناسب و بسیاری اوقات تجهیزات غیرضروری با خود حمل کنند. حتی مواردی پیش آمده است که برخی جوانان، به دلیل کمبود تجربه، کیسه خواب خود را از دامنه کوه به پایین انداختهاند.
در ادامه تجهیزات رایج در گردشها را با جزئیات بررسی میکنیم و برای هر وسیله، ویژگیها، کاربرد و روش استفاده بهتر از آن را توضیح میدهیم و همچنین راهنمایی برای انتخاب آن در هنگام خرید ارائه خواهیم کرد. هدف این است که اطلاعاتی کاربردی در اختیار خواننده قرار گیرد تا از بسیاری از گردشهای ناراحتکنندهای که کمبود تجربه میتواند برای یک گردشگر تازهکار ایجاد کند، جلوگیری شود.
== کولهپشتی ==
هر گردشی که فراتر از یک پیادهروی کوتاه باشد، به استفاده از یک [[w:fa:کولهپشتی|کولهپشتی]] نیاز دارد؛ زیرا گردشگر باید آب، مواد غذایی، لباس گرم، وسایل شخصی و بسیاری از وسایل دیگر را با خود حمل کند. نوع گردش و میزان آن تعیین میکند که چه نوع کولهپشتی باید استفاده شود.
کولهپشتی نباید بیش از اندازه بزرگ باشد؛ زیرا کنترل آن دشوار میشود و حمل آن بر روی پشت به کاری سخت تبدیل شده و فرد را مجبور به توقفهای متعدد میکند. اندازه انتخابشده باید متوسط باشد. وجود [[w:fa:کمربند|کمربند]] بهتر است و بندهای شانه باید پهن و دارای بالشتک باشند.
کولهپشتیهای باریک و بلند با ظرفیت زیاد این مشکل را دارند که تعادل فرد را بر هم میزنند و راه رفتن را به عذابی برای پشت تبدیل میکنند.
تجهیزات و مواد غذایی باید با نظم مشخصی در کوله قرار داده شوند. وسایل سنگین باید در قسمت بالایی و نزدیک به پشت قرار گیرند، زیرا در این قسمت حجم بیشتری از توده عضلانی به حمل آنها کمک میکند. همچنین باید مراقب بود که اشیای سخت یا دارای لبه در قسمت تکیهگاه کولهپشتی با پشت قرار نگیرند.
وزن ایدهآل باری که بدون تأثیر منفی بر سلامت میتوان حمل کرد، به وضعیت بدنی و میزان تمرین فرد بستگی دارد و معمولاً بین ۱۲ تا ۱۵ کیلوگرم است.
منطقی است که دو کولهپشتی داشته باشیم: نخست، یک کولهپشتی با حجم حداکثر ۳۰ لیتر برای گردشهای کوتاه (کولهپشتی حمله)؛ و برای گردشهای طولانیتر، یک کولهپشتی با حداقل ۴۰ و حداکثر ۶۰ لیتر ظرفیت.
یک کولهپشتی مناسب نباید در حالت خالی بیش از یک کیلوگرم وزن داشته باشد.
کولهپشتی مخصوص گردش باید بهراحتی با پشت فرد منطبق شود، دستها و بازوها را آزاد بگذارد و مانع دید یا حرکت پاها نشود. امروزه کولهپشتیهای گردشگری از مواد مصنوعی ساخته میشوند که مقاوم، ضدآب، سبک و در بسیاری موارد ارزان هستند.
=== روکش کولهپشتی ===
برای محافظت از کولهپشتی، بهویژه در برابر آب، از روکش کولهپشتی ساختهشده از مواد مصنوعی ضدآب استفاده میشود. این روکش همچنین برای محافظت از کوله در برابر آلودگی موجود در محفظه بار برخی وسایل نقلیه و همچنین موارد پیشبینینشده مانند ورود خاک در هنگام طوفان گردوخاک کاربرد دارد.
'''نکته:''' بهطور معمول نباید اشیای سخت یا تیز را در قسمتهایی از کولهپشتی که با بدن تماس دارند آویزان کرد. همچنین نباید وسایل را بدون محکمکردن صحیح از کوله آویزان کرد؛ زیرا ممکن است هنگام راه رفتن روی پشت حرکت کنند و بسیار آزاردهنده شوند و اگر در کنار یک همراه ناگهان بچرخیم یا زمین بخوریم، حتی میتوانند به وسیلهای خطرناک تبدیل شوند.
علاوه بر این، چنین وسایلی ممکن است گم شوند یا بیفتند و در نتیجه باعث اتلاف وقت برای پیدا کردن و مرتبکردن دوباره آنها شوند.
=== انواع کولهپشتی ===
* '''کولهپشتی کیسهای:''' امروزه رایجترین نوع کولهپشتی است. این کولهها از پارچه مصنوعی و به شکل کیسه ساخته میشوند و امکانات متعددی مانند جیب بالایی، محفظه کیسه خواب و در برخی مدلها جیبهای اضافی دارند. همه آنها دارای بندهای قابل تنظیم برای شانهها و کمر و همچنین نوارهای تنظیم متعددی برای قرار دادن وسایل و تغییر شکل کولهپشتی به منظور توزیع بهتر بار روی بدن هستند. در گذشته از پارچههای طبیعی ساخته میشدند، اما این پارچهها بهراحتی رطوبت جذب میکردند و دوام کمتری داشتند.
* '''کولهپشتی با اسکلت خارجی یا نوع «هیمالیا»:''' چندین نسل است که استفاده از این نوع کولهپشتیها کنار گذاشته شده است؛ زیرا به دلیل اسکلت آلومینیومی ناراحتکننده و به همان دلیل خطرناک هستند. امروزه بیشتر در طبیعت توسط افراد آماتور دیده میشوند.
* '''کولهپشتی حمله:''' این کولهپشتی کوچک و حدود ۲۰ لیتر است و برای گردشهای کوتاهی استفاده میشود که به تجهیزات و مواد غذایی کمی نیاز دارند؛ مانند یک گردش چندساعته یا زمانی که فرد برای صعود به قله یک کوه، چند کیلومتر پایانی مسیر را از یک اردوگاه طی میکند.
* '''کولهپشتی اکسپدیشن:''' این کولهپشتیها بزرگترین نوع هستند و بیش از ۹۰ لیتر ظرفیت دارند. با توجه به کاربردشان، بزرگ و بسیار مقاوم هستند تا امکان قرار دادن تجهیزات و سایر وسایل مورد نیاز یک اکسپدیشن را فراهم کنند. به فصل مراجعه کنید.
=== چگونگی قرار دادن وسایل ===
کیسه خواب در قسمت پایینی قرار میگیرد؛ وسایل سنگین ترجیحاً در قسمت بالایی و نزدیک به پشت قرار داده میشوند و سایر فضاها بر اساس میزان دسترسی مورد نیاز به وسایل استفاده میشوند.
برای نمونه، لباس تعویضی را میتوان در قسمت پایین، روی کیسه خواب قرار داد و وسایل مهمتر را در دسترس گذاشت؛ برای مثال [[w:fa:جعبه کمکهای اولیه|جعبه کمکهای اولیه]] و چاقوی جیبی در جیبهای کناری و پوشش ضدباران و مدارک شناسایی در جیب بالایی قرار گیرند.
=== توصیههای خرید ===
بهتر است به یک فروشگاه تخصصی مراجعه کنید و ترجیحاً فردی باتجربه را نیز همراه داشته باشید، یا دستکم پیش از خرید از منابع بیطرف اطلاعات کافی به دست آورید.
باید توجه داشت که فروشندگان معمولاً تلاش میکنند ما را به خرید محصولی ترغیب کنند که برای خودشان سود یا کمیسیون بیشتری دارد، نه لزوماً محصولی که با توجه به وضعیت جسمانی، بودجه و هدف استفاده ما مناسبتر باشد.
== باتوم ویا کلنگ یخ ==
مدتی است که استفاده از یک چوب دستی ساده چوبی منسوخ شده است. امروزه مدلهای متنوعی از باتوم وجود دارد، اما هدف همه آنها یکسان است: جلوگیری از زمین خوردن و کمک به عبور از مسیرهای دشوار.
هرگز نباید از باتوم بهعنوان سلاح استفاده کرد! ساختار آن برای تحمل نیرو در راستای عمودی طراحی شده است؛ در حالی که در راستای افقی، مانند زمانی که بخواهیم با آن ضربه بزنیم، مقاومت آن کاهش مییابد.
'''کلنگ یخ''' ابزار تخصصیتری است که از سه بخش تشکیل میشود: دسته، نوک و بیلچه.
دستهها ممکن است خمیده یا مستقیم باشند که به فعالیت و نوع زمین مورد صعود بستگی دارد. نوک نیز شکلهای مختلفی دارد، اما هدف آن یکسان است: ایجاد نقطه اتکا با فروکردن در زمینهای شیبدار یا جلوگیری از سقوط احتمالی در سطح شیبدار.
بخش سوم، یعنی بیلچه، ممکن است وجود داشته باشد یا با چکش جایگزین شود؛ کاربردهای هرکدام نیز مشخص است.
== چاقوی چندکاره ==
یک چاقوی تاشو با ابزارهای متعدد، مانند انواع [[w:fa:چاقوی سوئیسی|چاقوی سوئیسی]]، بسیار مهم و کاربردی است و البته باید نحوه استفاده از آن را نیز دانست.
ابزارهای اصلی چاقوی چندکاره عبارتاند از:
# '''چاقوی بزرگ:''' ابزار اصلی.
# '''خطکش:''' معمولاً چند سانتیمتر طول دارد. به یاد داشته باشید که هر ۱ اینچ برابر با ۲٫۵۴ سانتیمتر است.
# '''قیچی:''' کوچک اما برای بریدن پارچه، کاغذ، لاستیک، پلاستیک، ناخن و مواد دیگر مفید است.
# '''دربازکن قوطی:''' برای باز کردن غذاهای بستهبندیشده در قوطی، مانند تن ماهی، ساردین، لوبیا و غیره ضروری است.
# '''دربازکن بطری:''' برای باز کردن بطریهای نوشیدنی کاربرد دارد.
# '''پیچگوشتی تخت کوچک:''' معمولاً روی دربازکن قوطی قرار دارد.
# '''پیچگوشتی تخت بزرگ:''' معمولاً روی دربازکن بطری قرار دارد.
# '''خمکن سیم:''' معمولاً روی دربازکن بطری قرار دارد.
# '''سوهان:''' برای سوهانزدن انواع مواد و همچنین ناخنها کاربرد دارد.
=== ابزارهای کمتر رایج ===
# '''چاقوی کوچک:''' برای کارهایی که چاقوی اصلی بیش از اندازه بزرگ است.
# '''اره:''' برای بریدن چوب، پلاستیک یا مواد مشابه با سختی مشابه کاربرد دارد.
# '''انبردست:''' استحکام زیادی ندارد، اما برای گرفتن اشیایی که با انگشتان نمیتوان بهخوبی آنها را گرفت، مانند سیم، مفید است.
# '''چوبپنبهبازکن:''' برای باز کردن بطریهایی که درپوش چوبپنبهای دارند.
# '''سوزن چرمدوزی:''' تیغه کوچک شبیه چاقو با سوراخی در آن.
# '''چراغ:''' شامل یک یا چند [[w:fa:دیود نورگسیل|LED]] کوچک است و برای روشنایی نزدیک کاربرد دارد.
# '''قطبنما:''' کوچک اما بسیار مفید است، بهخصوص در شرایطی که به آن نیاز داشته باشیم و قطبنمای بزرگتر یا حتی [[w:fa:سامانه موقعیتیاب جهانی|GPS]] در دسترس نباشد.
# '''پیچگوشتی چهارسو کوچک:''' در گردشها کمتر استفاده میشود، اما گاهی برای تعمیر چراغ یا رادیوی یک چرخ دوچرخه مفید است.
# '''موچین:''' برای بیرون آوردن خار یا انجام کارهای ظریف و دقیق بسیار کاربردی است.
# '''خلالدندان:''' مفید است، اما باید تمیز نگه داشته شود.
=== مراقبت از چاقوی چندکاره ===
توصیه میشود چاقوی چندکاره را تمیز نگه دارید. باید سالی یک بار آن را با روغن تمیز کرد و از ورود گردوغبار، خاک و سایر مواد به داخل آن جلوگیری کرد.
همچنین باید آن را تیز نگه داشت. برای این کار میتوان از تیزکن کوچک مناسب ابزار استفاده کرد یا بهتر است آن را به فرد متخصص سپرد.
== کیسه خواب ==
[[w:fa:کیسه خواب|کیسههای خواب]] در اندازهها، شکلها و مواد مختلفی تولید میشوند. مهمترین مسئله استفاده از کیسه خواب مناسب برای محل و شرایط مورد نظر است. کیسههای خواب بر اساس محدوده دمایی مشخص میشوند.
رایجترین نوع در منطقه مورد بحث، کیسه خواب با دمای ۵ درجه سانتیگراد است؛ اما برای هوای سرد، مدلهای با دمای منفی ۵ درجه سانتیگراد و حتی منفی ۱۵ درجه سانتیگراد توصیه میشوند.
خشک نگه داشتن داخل کیسه خواب اهمیت زیادی دارد. اگر لباسهای ما خیس هستند، باید لباس خیس را از تن خارج کنیم تا کیسه خواب بتواند گرما را حفظ کند. در غیر این صورت نهتنها گرم نخواهیم شد، بلکه ممکن است دچار [[w:fa:هیپوترمی|هیپوترمی]] شویم.
کیسههای خواب از نظر نوع عایق معمولاً به دو دسته اصلی تقسیم میشوند:
* کیسه خواب پرشده با پر غاز
* کیسه خواب دارای الیاف مصنوعی
از نظر اندازه و شکل، کیسه خواب باید دستکم ۲۰ سانتیمتر از قد فرد بلندتر باشد.
کیسههای خواب «مومیایی» یا «سارکوفاگی» دارای کلاه هستند و فضای باریکتر قسمت پاها باعث میشود فضای هوای غیرضروری که گرما را هدر میدهد کاهش یابد.
'''نکته:''' ترجیحاً کیسه خواب باید درون کولهپشتی قرار گیرد. اگر این امکان وجود ندارد، باید آن را با مادهای ضدآب پوشاند.
== زیرانداز ==
زیرانداز که با نامهای صفحه عایق، پتوی حرارتی یا زیرانداز عایق نیز شناخته میشود، روی زمین قرار میگیرد و کیسه خواب روی آن گذاشته میشود.
استفاده از زیرانداز برای جلوگیری از انتقال رطوبت و/یا سرما ضروری است و همچنین راحتی بیشتری ایجاد میکند.
== چادر ==
[[w:fa:چادر|چادرهای مسافرتی]] انواع مختلفی دارند و برای تعداد افراد و شرایط آبوهوایی متفاوت ساخته میشوند.
در انتخاب چادر باید بهطور عمده سه ویژگی را در نظر گرفت: '''سبک بودن، ضدآب بودن و مقاوم بودن'''. چادرهای نوع [[w:fa:چادر گنبدی|ایگلو]] این ویژگیها را دارند.
آمادهسازی زمینی که چادر روی آن نصب میشود بسیار مهم است. زمین باید صاف و عاری از سنگ، چوب و ناهمواریهای شدید باشد.
در هیچ شرایطی نصب چادر در حاشیه رودخانهها توصیه نمیشود؛ زیرا سطح آب میتواند بهسرعت بالا بیاید و خطرناک شود. علاوه بر این، این مناطق معمولاً مرطوب و سرد هستند.
اگر جنگل را برای برپا کردن چادر انتخاب میکنیم، باید وضعیت درختان اطراف را بررسی کنیم.
ورودی چادر باید در سمتی قرار گیرد که خلاف جهت وزش باد باشد.
برای جلوگیری از تشکیل آب ناشی از میعان، چادر و پوشش رویی آن باید بهدرستی کشیده و مهار شوند. اگر خود چادر و پوشش رویی آن با یکدیگر تماس داشته باشند، ممکن است آب از محل تماس به داخل نفوذ کند.
پس از نصب چادر، مهم است که اجازه ندهیم داخل آن خیس یا مرطوب شود و همچنین از ورود حشرات جلوگیری کنیم.
اگر از چادر دور میشویم، باید درها و پنجرههای آن را ببندیم تا باران ناگهانی داخل آن را خیس نکند.
چادر را نباید در حالت خیس یا مرطوب جمع کرد؛ زیرا ممکن است باعث ایجاد قارچ و پوسیدگی آن شود.
== جعبه کمکهای اولیه ==
محتویات [[w:fa:جعبه کمکهای اولیه|جعبه کمکهای اولیه]] برای کولهپشتی به شرایط هر فرد بستگی دارد. هر شخص ممکن است بیشتر مستعد برخی مشکلات باشد و باید درمان مورد نیاز آنها را همراه داشته باشد.
با این حال، برخی وسایل پایه باید در جعبه کمکهای اولیه وجود داشته باشند:
* گاز استریل
* باند
* دستکش لاتکس
* قیچی جراحی با نوک کند
* یک جفت پنس پزشکی دندانهدار و بدون دندانه برای خارج کردن اشیای فرو رفته در پوست؛ بنابراین بهتر است به پنس موجود در چاقوی چندکاره اکتفا نکنید.
* محلول پوویدون-ید برای استفاده مستقیم روی زخمها و پوست.
* ضدعفونیکننده دست، بهویژه در شرایطی که آب کافی در دسترس نباشد.
* چسب پزشکی میکروپور
* [[w:fa:ایبوپروفن|ایبوپروفن]] یا هیدروکلراید لیزین برای درد و التهاب.
نباید پمادهای مختلف را بدون دلیل همراه داشت؛ زیرا اگر حاوی آنتیبیوتیک باشند و روی زخم استفاده شوند، ممکن است باعث واکنش حساسیتی شوند.
پمادهای ضدالتهاب نیز در برخی شرایط میتوانند مشکلساز باشند؛ برای مثال در صورت وجود دررفتگی یا آسیب عروقی، مالش دادن محل آسیب میتواند وضعیت را بسیار بدتر کند.
== قطبنما و نقشه ==
[[w:fa:قطبنما|قطبنما]] و نقشه از وسایلی هستند که بهتر است هرگز از تجهیزات گردش حذف نشوند. استفاده صحیح از قطبنما و نقشه به دانش فنی نیاز دارد.
با این حال، امروزه [[w:fa:سامانه موقعیتیاب جهانی|GPS]] به دلیل دقت، سهولت استفاده و امکان نگهداری نقشهها در همان دستگاه، تا حد زیادی جایگزین قطبنمای قدیمی شده است.
با این وجود، اگر دستگاه GPS خراب شود، ممکن است بدون وسیله جایگزین در وضعیت دشواری قرار بگیریم. بنابراین همیشه بهتر است روشهای جهتیابی با ساعت یا سایهها را برای شرایط بقا بدانیم.
'''همچنین داشتن یک نقشه کاغذی هیچگاه ضرری ندارد!'''
== چراغقوه ==
برای روشنایی، استفاده از چراغهای «بدون نیاز به دست»، که با نام چراغ پیشانی یا هدلامپ (هدلایت) نیز شناخته میشوند، توصیه میشود.
همیشه باید باتری یدکی نیز همراه داشت.
== وسایل آشپزی ==
وسایل مورد نیاز برای آشپزی در گردش شامل موارد زیر است:
* اجاق یا سرشعله
* سوخت
* کبریت در یک محفظه ضدآب و دربسته، مانند محفظههایی که برای نگهداری فیلم عکاسی یا نوارهای آزمایش استفاده میشدند، تا از آن محافظت شود.
* فندک
* قابلمه
* بشقاب
* فنجان
* قاشق
* چاقو یا چاقوی چندکاره
این وسایل باید از مواد سبک و با حجم کم ساخته شده باشند.
یک [[w:fa:فلاسک|فلاسک]] میتواند برای فعالیتهایی که در محیطهای بسیار سرد انجام میشوند مفید باشد.
[[رده:کوهنوردی]]
2l250q3om5ms4trxddudao0xozxzvif
زبان برنامه نویسی سی/stdio
0
33083
135551
135269
2026-10-05T00:58:21Z
HadiLovelorn
23337
135551
wikitext
text/x-wiki
{{سرص|زبان برنامه نویسی سی/مقدمهای بر فایلهای سرآیند|زبان برنامه نویسی سی/stdlib}}
با این فایل سرآیند تا حدودی آشنایی دارید و در طول کتاب بارها به آن اشاره شده است . stdio.h یک فایل سرآیند ( Header ) استاندارد زبان سی می باشد که مخفف Standard Input/Output یا Standard Input & Output است به معنی ورودیها و خروجیهای استاندارد . ما از تابع printf و scanf به وفور در کتاب استفاده نمودهایم که در فایل سرآیند stdio تعریف شدهاند اما پیش از نوشتن توابع بهتر است با تعیینکنندههای فرمت در این توابع استاندارد آشنا شوید.
حتماً به یاد دارید که در کتاب وقتی می نوشتیم ;printf("This is a %s", str) و اگر str یک رشته می بود که داخل آن وارد می کردیم string در خروجی خطفرمان با جمله This is a string مواجه می شدیم. تعیین کنندههای فرمت ، متغیرهایی هستند که داخل دو دابل کوت نوشته می شوند تا بعداً توسط آرگومانهای فرستاده شده ( پاس داده شده ) جایگزین گردند.
{{چپچین}}
%[parameter][flags][width][.precision][length]type
{{پایان چپچین}}
<br><br>
ابتدا پارامتر تعیین کننده نوشته می شود ، سپس پرچمها و سپس عرض و پهنا و سپس میزان دقت و بعد طول و در نهایت نوع داده آرگومان
==انواع داده آرگومان==
انواع داده آرگومان عبارتند از :
{{چپچین}}
d, i
{{پایان چپچین}}
که اعداد دهدهی هستند با این تفاوت که در تابع scanf تعیین کننده نوع i اگر در ابتدای آرگومان نوشته شود 0x آن را هگزادسیمال ( شانزدهشانزدهی ) دریافت می کند و اگر در ابتدای آرگومان نوشته شود 0 آن را اوکتال ( هشتهشتی ) دریافت خواهد نمود
{{چپچین}}
u
{{پایان چپچین}}
که اعداد دهدهی بدون علامت را تعیین می کند unsigned decimal که همان unsigned int می باشد
{{چپچین}}
ld , li
{{پایان چپچین}}
که اعداد صحیح بلند را تعیین می کند long int
{{چپچین}}
lld , lli
{{پایان چپچین}}
که اعداد صحیح خیلی بلند را تعیین می کند long long int
{{چپچین}}
lu
{{پایان چپچین}}
که اعداد صحیح بلند بدون علامت را تعیین می کند unsigned long
{{چپچین}}
llu
{{پایان چپچین}}
که اعداد صحیح خیلی بلند بدون علامت را تعیین می کند unsigned long long int
{{چپچین}}
f, F
{{پایان چپچین}}
برای اعداد اعشاری با این تفاوت که f برای بینهایت inf یا infininty و برای تعریفنشدهها nan را باز می گرداند و F برای بینهایت INF یا INFINITY و برای تعریفنشدهها NAN را باز می گرداند
{{چپچین}}
lf
{{پایان چپچین}}
که اعداد اعشاری با دقت دو برابر را تعیین می کند double
{{چپچین}}
Lf
{{پایان چپچین}}
برای تعیین اعداد اعشاری با دقت بسیار زیاد به کار می رود long double
{{چپچین}}
e, E
{{پایان چپچین}}
برای اعداد اعشاری به صورت توان برای ۱۰ که به صورت d.ddde±dd مقدار را می فرستد یا دریافت می کند که شامل مقدار صحیح است و یک نقطه و مقادیر اعشاری و علامت E برای E و e برای e و سپس نما و توان که دست کم دو رقم هستند . دقت کنید که در ویندوز ارقام توان به صورت پیش فرض سه تا هستند . مثال : 1.5e03 یعنی ۱٫۵ ضربدر ۱۰ به توان ۳
{{چپچین}}
g, G
{{پایان چپچین}}
برای اعداد که اگر کامل ( صحیح ) باشند شامل نقطه و ممیز نخواهد شد و اگر اعشاری باشند ممکن است آن را به صورت معمولی بنویسد یا به صورت توان ۱۰ که همان e و E می باشند که البته می تواند دریافت نیز بکند ( مثلاً در تابع scanf ) و خود کامپایلر تشخیص می دهد که کدام بهتر است و با این تفاوت که پشت سر نما 0 نمی گذارد . مثال : 21.965 یا 2.5e4
{{چپچین}}
x, X
{{پایان چپچین}}
برای اعداد هگزادسیمال که صحیح بدون علامت هستند که x برای حروف کوچک است مثل x5f و X برای حروف بزرگ مثل X5F
{{چپچین}}
o
{{پایان چپچین}}
برای اعداد اوکتال که صحیح بدون علامت هستند
{{چپچین}}
s
{{پایان چپچین}}
برای رشتههایی که با NULL پایان می یابند ( اگر به یاد داشته باشید ، رشته ، مجموعهای از کاراکترهاست ) مثل رشتههایی که با آرایه می سازیم و ذخیره می نمائیم یعنی رشتهای مثل : monkeys are cute
{{چپچین}}
c
{{پایان چپچین}}
برای یک کاراکتر که به خروجی فرستاده می شود یا از ورودی دریافت می شود
{{چپچین}}
p
{{پایان چپچین}}
برای اشارهگرها که آدرسشان به رابط خطفرمان فرستاده شود یا از آنجا دریافت شود . طبق استاندارد می تواند و باید از نوع پوچ باشد void ولی این مورد یعنی برای p وابسته به نویسنده پیادهساز می باشد و هر کامپایلر به دلخواه خود عمل می کند ( مراجعه کنید به راهنمای کامپایلر خود )
{{چپچین}}
a, A
{{پایان چپچین}}
برای اعداد اعشاری با دقت دو برابر ( double ) که در مبنای شانزده ( هگزادسیمال ) نوشته می شود و 0x و بقیه ارقام و حروف ( کوچک ) برای a و 0X و بقیه ارقام و حروف ( بزرگ ) برای A ( دقت کنید که این استاندارد است ولی هر کامپایلر به دلخواه خود قابلیتهای آن را ممکن است افزایش داده باشد )
{{چپچین}}
n
{{پایان چپچین}}
مقداری را در خروجی خطفرمان چاپ نمی کند اما به آرگومان اشارهگر متناظر خود ، تعداد کاراکترهای داخل تابع خود را باز می گرداند
<br><br>
همچنین با استفاده از ماکروی wchar_t که در فایل سرآیند wchar.h تعریف شده است ما می توانیم کاراکترهای اضافهتر از ازکی را که در UTF-8 و UTF-16 و UTF-32 تعریف شدهاند در تابع printf یا scanf و بقیه توابع این فایل سرآیند به عنوان تعیین کننده نوع آرگومان تعیین کنیم تا کاراکترهای مذکور را در رابط خطفرمان چاپ نمائیم یا دریافت کنیم که این تعیین کنندهها شامل :
{{چپچین}}
lc or C
{{پایان چپچین}}
lc و یا C ( بزرگ ) برای یک کاراکتر UTF و
{{چپچین}}
ls or S
{{پایان چپچین}}
ls یا S ( بزرگ ) برای یک رشته انکدینگ UTF
می شود . اما کاراکترهای UTF-8 را می توان در سیستم عاملهای روز ( مادرن Modern ) که چند زبانه هستند در متن منبع نیز نوشت و آن را در خروجی خطفرمان چاپ نمود . مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main(void)
{
printf("ญ");
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
که پس از کامپایل و اجرا ، در خروجی کاراکتر ญ از حروف زبان تایلندی را مشاهده خواهید نمود . اما برای کار با حروف یونیکد Unicode مثل UTF-8 باید از توابع و ماکروهای فایل سرآیند wchar.h استفاده نمائید که در مبحث مربوطه نوشته خواهد شد
{{چپچین}}
zu
{{پایان چپچین}}
برای تعیین نوع فرمت داده از نوع size_t که هنوز به آن نرسیدهایم و در ادامه خواهم نوشت اما فقط برای استانداردهای جدید تعریف شده است و در استانداردهای قدیمی مثل C89 همان ul% را می نویسیم
'''پارامترِ تعیین کننده شماره آرگومان''' : جزء استاندارد سی نیست و فقط در پازیکس ( POSIX رابط کاربری قابل حمل برای سیستم عاملهای محیطهای پنجرهای ایکس ) تعریف شده است که یک عدد را می نویسیم و در مقابل آن یک علامت دلار یا همان پسو $ را می گذاریم . با این کار ، تعیین میکنیم که ابتدا چندمین آرگومان دریافت و یا فرستاده شود و سپس چندمین و الی آخر . مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main()
{
int a = 15, b = 17;
printf("%2$d %1$d", a, b);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
با اینکه ابتدا آرگومان a و سپس b فرستاده شدهاند ، اما چون شماره تعیین کننده اول ، 2 و شماره تعیین کننده دوم ، 1 می باشد ابتدا b و سپس a چاپ می شود
'''نکته :''' در صورتی که بخواهید علامت درصد % را در خروجی خط دستوری چاپ کنید باید دو بار آن را بنویسید یعنی بدین شکل %%
'''و پرچمها عبارتند از :'''
{{چپچین}}
-
{{پایان چپچین}}
این پرچم متن خروجی خطفرمان را در تعیینکننده فرمت خود چپچین می کند . به صورت پیشفرض تمام متون چپچین هستند اما اگر پیش از تعیین کننده نوع آرگومان عددی را بنویسید ( که کمی جلوتر آن را خواهیم نوشت ) به همان اندازه خروجی دارای فضای سفید ( space ) خواهد بود که آرگومان را جلو می برد اما اگر در تعیینکننده فرمت یک علامت منفی ( مایناس - ) بگذارید آن را به سمت چپ انتقال خواهد داد
{{چپچین}}
+
{{پایان چپچین}}
این پرچم ، تضمین می کند که علامت عدد در خروجی خطفرمان نوشته خواهد شد یعنی - برای اعداد منفی ( negative ) و + برای اعداد مثبت ( positive ) که به صورت پیشفرض فقط برای اعداد منفی نوشته می شود و برای اعداد مثبت علامتی گذاشته نمی شود
{{چپچین}}
فضای سپید یا همان اسپیس
{{پایان چپچین}}
این پرچم یعنی space که بازگردان آن می شود فضای سپید یا فضای خالی برای اعداد مثبت جای خالی می گذارد و برای اعداد منفی علامت منفی ( مایناس - ) که اگر همراه با علامت مثبت ( + ) نوشته شود فضای سپید نادیده گرفته می شود
{{چپچین}}
0
{{پایان چپچین}}
عدد صفر به انگلیسی 0 ( زیرو ) هنگامی که برای آرگومان پهنا و عرضی در نظر گرفته شود ( که در ادامه می نویسیم ) که یک عدد است به جای فضای خالی پشت عدد ، صفر می گذارد که البته بستگی به تعداد ارقام عدد نیز دارد ؛ یعنی اگر عدد 352 باشد و ما پهنای آن را ۸ تا تعیین کرده باشیم ۵ تا فضای خالی قرار می گیرد ؛ اگر از این پرچم استفاده کنیم در خروجی خطفرمان چاپ می شود : 00000352
{{چپچین}}
#
{{پایان چپچین}}
پرچم هاش یا شارپ چندین کار را می تواند انجام بدهد :
۱ − برای تعیینکنندههای فرمت g و G در صورتی که قسمت اعشار نداشته باشند 0 های مقابل آن را ( در قسمت اعشاری ) حذف نمی کند
۲ − برای فرمتکنندههای a و A و e و E و f و F و g و G یک علامت اعشار ( ممیز که در انگلیسی نقطه است ) را حتماً اضافه می کند تا مشخص شود عدد اعشاری است حتی در صورتی که قسمت اعشار 0 باشد
۳ − برای تعیینکنندههای فرمت اوکتال o و هگزادسیمال کوچک x و هگزادسیمال بزرگ X برای هر عددی جز 0 قبل از آن علائم 0 و 0x و 0X را به ترتیب می نویسد و پیش از مقدار چاپ شده در خروجی خطفرمان قرار می دهد
۴ − برای تعیینکنندههای فرمت ls یا S باعث می شود تا سایز متن به تعداد کاراکترهای خروجی باشد و نه به اندازه ( size ) کاراکترهای موجود که ممکن است چند بایتی و عریض باشند که در UFT-8 یا uTF-16 یا UTF-32 تعریف شدهاند
۵ − برای تعیینکنندههای فرمت p که برای چاپ آدرس اشارهگر است آن را به مقدار هگزادسیمال تبدیل می کند که قابل برگشت نیست ( یعنی عکس همین عمل ) مگر اینکه در محیطهای ترا اسپیس ( teraspace ) که شامل برخی سیستم عاملها نظیر لینوکس می شود با دستور مستقیم به کامپایلر آن را مهیا نمائیم
{{چپچین}}
'
{{پایان چپچین}}
آپوستروف با علامت ' ( که همان سینگل کوت می باشد ) باعث می شود تا هر سه رفم با یک ممیز ( علامت نقطه در انگلیسی . ) از یکدیگر جدا شوند که البته برای این کار باید فایل سرآیند locale.h را به برنامه خود ضمیمه نمائید مثل :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
#include <locale.h>
int main()
{
setlocale(LC_NUMERIC, "");
int a = 1564952413;
printf("%'d", a);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
که در اینجا برنامه چاپ می کند : 1.564.952.413
مطالب پرچمها کاملاً روشن هستند و نیازی به مثال ندارد اما به عنوان نمونه یک مثال برای پرچم مایناس ( علامت منفی ) می نویسیم :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main()
{
int a = 47;
printf("%-6d", a);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
در این مثال اگر علامت منفی را بر داریم عدد 47 با ۶ فاصله که نوشتهایم 6 چاپ می شود اما چون علامت منفی گذاشتهایم چپچین شده و در ابتدای رابط خطفرمان قرار می گیرد
<br><br>
'''عرض و پهنا'''
در عرض و پهنا ، پس از علامت درصد یک شماره می نویسیم که ورودی یا خروجی را به جلو می راند و به هیچ وجه باعث از بین رفتن مقدار نمی شود . این کار باعث می شود تا بتوانیم در رابط خطفرمان شکل و جدول خاصی را ایجاد کنیم . به علاوه اگر پس از علامت درصد علامت استریسک ( ستاره ) را بنویسیم بتوانیم به صورت پویا ، مقداری را به عنوان آرگومان بنویسیم تا به همان اندازه کاراکترهای ما به جلو رانده شوند . مثال عدد را در مثال پیشین نوشتیم ، اما برای مثال استریسک :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main()
{
int a = 8, b = 94;
printf("%*d", a, b);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
در مثال بالا مقدار a مقدار ۸ می باشد و b مقدار ۹۴ که مقدار 94 را در خروجی خطفرمان چاپ نمودهایم اما به مقدار a یعنی ۸ تا فاصله و فضای سپید و خالی پیش از آن قرار دادهایم که عدد به جلو رانده می شود
'''دقت کنید :'''
اگر در قسمت تعیینکننده فرمت یک نقطه بگذارید و پس از آن یک عدد بنویسید ، برای اعداد اعشاری دقت اعشار همان عدد است و مابقی گرد شده و نادیده گرفته می شوند . برای رشتهها نیز تعداد کاراکترها را معین می کند که اگر از عدد نوشته شده بیشتر باشد ، کاراکترهای بعدی نادیده گرفته می شوند . همچنین می توانید بعد از علامت نقطه ، یک استریسک بگذارید و در قسمت آرگومانها مقدار مورد نظر را به تابع بفرستید تا دقت را معین کنید . مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main()
{
char ch[] = "whatthehell";
printf("%.3s", ch);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main()
{
printf("%.*s", 3, "abcdef");
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
در مثال اول رشته whatthehell فقط سه کاراکتر اولش چاپ می شود و در مثال دوم فقط abc . برای اعداد اعشاری نیز یک مثال می نویسیم :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main()
{
float f = 2.564;
printf("%.2f", f);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
در مثال بالا مقدار ۲٫۵۶۴ عدد ۴ ـش نادیده گرفته می شود ( چون کوچکتر از ۵ است اگر گرد شود می شود 0 که فاقد مقداری در ارزش مکانی است و نادیده گرفته می شود )
مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main()
{
long double pi = 3.14159265358979;
printf("%.14Lf", pi);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
'''دقت کنید :''' در زبان سی و سیستم عاملهای متداول به صورت پیشفرض ، دقت اعشار نمایشی فقط ۶ رقم است ؛ اما اگر از double استفاده کنید دقت بالاتر می رود و می توانید عددی بزرگتر از ۶ بنویسید و در سیستم عامل قدرتمندی مثل گنو/لینوکس و کامپایلر قدرتمندی مثل GCC می توانید از long double استفاده نموده و بازهم دقت را بالاتر ببرید ( ولی در ویندوز long double به اندازه همان double دقت دارد )
در مثال بالا عدد پای ( یا همان پی Pi ) تا ۱۴ رقم اعشار نوشته شده و در خروجی خط دستوری ، چاپ شده است
'''تعیین کنندههای طول :'''
{{چپچین}}
hh
{{پایان چپچین}}
برای اعداد صحیح که به صورت کاراکتر تعریف شدهاند و دیگر نیازی به نقش ایفا کردن و کستکردن ندارد . مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main()
{
char a = 12;
printf("%hhd", a);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
در مثال بالا a یک کاراکتر است ، اما ما تعیین کننده نوع آرگومان را d و decimal تعریف کردهایم . اما با این حال ( به خاطر استفاده از hh ) برنامه بدون هیچ اشکالی مقدار 12 را در خروجی خطفرمان نمایش می دهد ( دقت کنید که حجم یک کاراکتر ۱ بایت است و تنها می تواند تا مقدار ۱۲۷ و یا بدون علامت تا ۲۵۵ را در خود ذخیره کند )
{{چپچین}}
h
{{پایان چپچین}}
برای اعداد صحیح نوع کوتاه در مبنای ۱۰ و یا اوکتال و یا هگزادسیمال که به صورت short ( کوتاه ) تعریف شدهاند ( دقت کنید که نوع داده کوتاه یک یا نهایتاً دو بایت است و مقادیر بزرگتر از ظیف خود باعث ایجاد خطا می شود ) تا به صورت decimal ( دهدهی متداول ) چاپ شوند
مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main()
{
unsigned short a = 300;
printf("%hd", a);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
در مثال بالا a یک کوتاه بدون علامت است که با تعیین کننده نوع صحیح و پیشوند h به خروجی خطفرمان فرستاده می شود
{{چپچین}}
l
{{پایان چپچین}}
برای نوع اعداد صحیح بلند ؛ البته شما می توانید اعداد اوکتال یا هگزادسیمال را نیز با طول بلند و تعیینکننده فرمت صحیح به مبنای ده برگردانده و در رابط خطفرمان از آن استفاده کنید . مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main()
{
long a = 0xff;
printf("%ld", a);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
در مثال بالا نوع داده a بلند است و در آن ff را به شکلی که نوشته شده ( و باید بشود ) ذخیره نمودهایم . در هنگام چاپ با مقدار ۲۵۵ رو به رو خواهیم شد ( دقت کنید که ff در مبنای ۱۰ می شود ۲۵۶ ولی چون ۰ نیز یک مقدار است می شود ۲۵۵ )
{{چپچین}}
ll
{{پایان چپچین}}
برای تعیین طول داده صحیح خیلی بلند
{{چپچین}}
L
{{پایان چپچین}}
برای تعیین طول داده اعشاری خیلی بلند که می شود Lf یا LF یا Lg یا LG
{{چپچین}}
z
{{پایان چپچین}}
برای تعیین طول داده از نوع size_t که در فایل سرآیند stddef تعریف شده است
{{چپچین}}
j
{{پایان چپچین}}
برای تعیین طول داده از نوع intmax_t که در فایل سرآیند inttypes تعریف شده است
{{چپچین}}
t
{{پایان چپچین}}
برای تعیین طول داده از نوع ptrdiff_t که در قایل سرآیند stddef تعریف شده است
{{چپچین}}
H
{{پایان چپچین}}
به عنوان پیشوند برای A و a و E و e و f و F و G و g که قسمت اعشاری را ۳۲ بیت در نظر می گیرد Decimal32_
{{چپچین}}
D
{{پایان چپچین}}
به عنوان پیشوند برای A و a و E و e و f و F و G و g که قسمت اعشاری را ۶۴ بیت در نظر می گیرد Decimal64_
{{چپچین}}
DD
{{پایان چپچین}}
به عنوان پیشوند برای A و a و E و e و f و F و G و g که قسمت اعشاری را ۱۲۸ بیت در نظر می گیرد Decimal128_
برخی از تعیین کنندههای طول آرگومان در استاندراد باید خارج از دو دابل کوت نوشته شوند و البته باید فایل سرآیند inttypes.h را ضمیمه برنامه خود نمائید
{{چپچین}}
PRId32
PRId64
PRIi32
PRIi64
PRIu32
PRIu64
PRIx32
PRIx64
{{پایان چپچین}}
اولی برای اعداد صحیح ۳۲ بیت و دومی برای صحیح ۶۴ بیت و بعدی برای اعداد صحیح ( منفی و مثبت ) ۳۲ بیت و بعدی مانند قبلی ولی ۶۴ بیت ، بعدی برای اعداد صحیح بدون علامت ۳۲ بیتی و بعدی همان برای ۶۴ بیتی و بعدی برای اعداد هگزادسیمال ۳۲ بیت و بعدی همان برای ۶۴ بیتی . مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
#include <inttypes.h>
int main()
{
int a = 45;
printf("%" PRId64 "\n", a);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
در مثال بالا متغیر از نوع صحیح a با مقدار ۴۵ تعریف شده است و تابع کتاخانهای printf از PRId64 برای تعیینکننده فرمت و تعیین کننده نوع آرگومان استفاده شده و آرگومان a به آن فرستاده شده است که پس از کامپایل و اجرا در خروجی عدد 45 را نمایش می دهد
== امنیت زنجیرهای ==
پیش از آغاز نوشتن تابعها و ماکروها لازم است مطلبی کلی را بدانید که در دانش رایانه و برنامهنویسی ( و حتی الکترونیک که اینجا به آن نمی پردازیم ) دانستن آن ضروری است . در دانش رایانه ، زنجیره یا ریسمان به کوچکترین مجموعه دستور العملهای یک برنامه می گویند که توسط پردازنده مرکزی ( واحد پردازشگر مرکزی / سیپییو CPU ) قابل اجرا است . اما در دانش برنامهنویسی در زبانهایی که تابعگرا هستند ،امنیتِ زنجیرهپردازه یا امنیت زنجیرهای بدین مفهوم است که تابع اگر در هنگام فراخوانی ، توسط چند سند برنامه ( متن برنامه Source Code File ) باعث رفتار تعریفنشده ، ویرانی دادهها یا شرایط رقابتی نشود از نظر زنجیرهای یا ریسمانی ، امن است و در غیر این صورت ، ناامن . بدین مفهوم که اگر تابع در چند زنجیره سند منبع ( سند برنامه ) فراخوانده شود باعث تداخل آنها با هم نمی شود تا : ۱ - رفتار تعریفنشدهای رخ ندهد ۲ - مقادیر و موجودی متغیرها ( که میتوانند ماکرو یا تابع باشند ) دستخوش تغییر یا نابودی نشود ۳ - طبق استاندارد و زبان ، در سندها و فایلهایی که مجاز به اشتراک و استفاده چندباره آن در سندها نیستیم از آنها استفاده نکنیم و یا آنها را مستقل تعریف کنیم ( نظیر استفاده از کلیدواژه static برای تابعها که پیشتر در مبحث کلاسهای ذخیره مطرح کردیم ) دقت کنید که اگر شرایط رقابتی ، پیش بیاید رفتارهای پیشبینی نشده و ناخوشایند برای برنامهنویس پیش می آیند که برنامه نوشته شده را دچار خطا و باگ Bug می کند
در این کتاب ، فقط توابع و ماکروهایی که از نظر امنیت زنجیرهای ، امن نیستند می نویسیم امن نیست ( از نظر امنیت زنجیرهای ) و در مورد مابقی ، آن را نمی نویسیم ( معلوم است که امن است )
== تابع printf ==
نمای کلی تابع کتابخانهای printf و تابعهای مشابه آن بدین شکل است :
{{چپچین}}
printf(const char * format-string, argument-list);
{{پایان چپچین}}
تابع printf سرنام print formatted و به معنی چاپ فرمت شده ( قالببندی شده ) می باشد که یک یا چند رشته را دریافت می نماید که داخل آنها تعیینکنندههای فرمت و تعیین کنندههای مختلف می توانند همان طور که تا بدینجا نوشته شد آن را آماده پذیرش آرگومان یا آرگومانها نموده که آرگومان(ها) را به آن می فرستیم ( که حتی می توانند مقدار باشند ) تا جایگزین تعیینکنندههای فرمت شود( شوند )
اگر تعداد آرگومانهای فرستاده شده از تعیینکنندههای فرمت بیشتر باشند ، آنهایی که اضافه هستند نادیده گرفته می شوند اما اگر تعیینکنندههای فرمت بیشتر از آرگومانهای فرستاده شده باشند ، نتیجه تعریف نشده است ( مطابق با استاندارد سی ) . تابع printf از نوع داده صحیح int تعریف شده است و اگر با موفقیت بتواند به اتمام برسد یک مقدار مثبت را که تعداد کاراکترهای دریافت شده می باشد را باز می گرداند ( دقت کنید که حتی اعداد و دنبالههای فرار نیز کاراکتر حساب می شوند ) ولی اگر ناموفق باشد یک مقدار منفی را باز می گرداند . مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main()
{
printf("%d", printf("This is a string\n"));
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
مثال بالا ابتدا printf داخلی را ارزیابی کرده که یک رشته است و آن را چاپ می کند و سپس بیرونی و اولی را که ۱۷ کاراکتر در رشته ما ( به همراه دنباله فرار خط شکسته ) وجود دارد و آن را در رابط خطفرمان نمایش می دهد
'''دقت کنید :'''
همان طور که گفته شد اگر تعداد تعیینکنندههای فرمت بیشتر از آرگومانها باشد ، نتیجه تعریفنشده است ( در استاندارد سی ) ولی کامپایلر قدرتمندی همچون GCC به شما هشدار خواهد داد ؛ اما برنامه کامپایل شده و اجرا می شود ولی دارای رخنهپذیری امنیتی خواهد بود که هکرها میتوانند از روش حمله رشته فرمت شده استفاده کرده و به دادههای برنامه شما و سیستم عامل دسترسی پیدا کنند . جهت اطلاعات بیشتر صفحه زیر را مطالعه کنید :
[https://en.wikipedia.org/wiki/Uncontrolled_format_string Format string attack]
همچنین نوشتن تعیینکننده فرمت n به صورت n% که در همین مبحث نوشته شد می تواند باعث حمله رشته فرمت شده بشود . که باید بسیار مراقب استفاده آن به صورت صحیح باشید . از طرفی این تعیینکننده فرمت باعث ایجاد کامل شدن تورینگ می شود . جهت اطلاعات بیشتر به صفحه زیر مراجعه کنید :
[https://en.wikipedia.org/wiki/Turing-complete Turing-complete ]
== تابع scanf ==
نمای کلی تابع کتابخانهای scanf و تابعهای مشابه آن به شکل زیر است :
{{چپچین}}
scanf(const char *format-string, argument-list);
{{پایان چپچین}}
تابع scanf سرنام scan formatted به معنی اسکن فرمت شده ( قالببندی شده ) قادر است تا از ورودی استاندارد ( معمولاً صفحهکلید Keyboard ) مقادیری را دریافت نموده و در متغیرها و آرگومانهای خود جای بدهد و آنها را مقداردهی نماید . شکل کلی رشته فرمتشده دریافت کنندههایی مثل scanf و تابعهای مشابه آن به شرح زیر است :
{{چپچین}}
%[parameter]*[width][length]type
{{پایان چپچین}}
پارامتر در scanf همانند printf می باشد . مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main()
{
int a, b;
scanf("%2$d%1$d", &a, &b);
printf("%d & %d",a , b);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
همان طور که می بینید با نوشتن شماره و علامت دلار ابتدا b دریافت می شود و سپس a ولی در خروجی ابتدا a چاپ می شود و سپس b . '''دقت کنید''' که تابع scanf برای دریافت و وارد کردن مقدار داخل متغیر از علامت آدرسدهی استفاده می کند و علت آن نحوه تعریف آن در فایل سرآیند stdio می باشد که با اشارهگرها نوشته می شود
برای اینکه پهنا و عرض یک آرگومان را جهت دریافت تعیین کنید باید بعد از علامت درصد ( % percent ) ، یک عدد را بنویسید که به همان تعداد کاراکتر ( چه حرفی و چه عددی ) دریافت خواهد شد و نه بیشتر . '''دقت کنید''' که علامت ستاره ( استریسک * ) در تابع scanf پهنا را تعیین نمی کند بلکه باعث می شود تا تابع scanf یک یا چند کاراکتر را نادیده گرفته و در آرگومانهای فرستاده شده ذخیره نکند
پس با نوشتن مقدار پس از علامت درصد تعیین می کنیم که تابع ، چند کاراکتر ( عددی یا حرفی ) را دریافت کند . مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main(void)
{
int i;
printf("Enter a number :\n");
scanf("%2d", &i);
printf("Your number is : %d\n", i);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
در مثال بالا شما می توانید به عنوان مثال یک عدد ۵ رقمی را وارد کنید ولی فقط ۲ رقم اول آن دریافت می شود
در تابع scanf و تابعهای مشابه آن می توان از scanset ها استفاده نمود . یک جفت کروشه باز و بسته می توانند تعیین کنند که تابع scanf و تابعهای مشابه آن فقط کاراکترهای خاصی را دریافت نمایند و یا کاراکترهایی را از قلم بیاندازند . مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main(void)
{
char str[128];
printf("Enter a string: ");
scanf("%[A-Z]s", str);
printf("You entered: %s\n", str);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
در مثال بالا فقط تا زمانی که تابع scanf به کاراکترهای A تا Z برسد آنها را اسکن می کند و در رشته str ذخیره می کند و اگر به کاراکتر دیگری برسد متوقف می شود . '''دقت کنید''' که اگر اولین کاراکتر ورودی شما یک حرف کوچک باشد ( به عنوان مثال ) همان جا عمل اسکن متوقف می شود . دقت کنید که تابع scanf توسط اشارهگرها تعریف شده است و توسط عملگر آدرسدهی مقدار و موجودی را دریافت نموده و در آرگومان متناظر ذخیره می کند بنابراین برای رشته که یک اشارهگر است از عملگر آدرسدهی استفاده نمی کنیم ( حتی اگر از کاراکتر آرایهای استفاده کنیم ؛ چون می دانید که آرایهها توسط اشارهگرها تعریف می شوند )
اگر از نوع دیگری به غیر از کاراکتر ، آرایه بسازید و بخواهید آن را توسط scanf مقداردهی کنید ؛ به صورت متداول که در فصل آرایهها نوشته شد یک به یک ، آرایهها را به عنوان آرگومان یا به صورت کروشهای با اعداد می نویسید یا به صورت غیر مستقیم توسط اشارهگرها به همراه پرانتز معین می کنید که باید تعیین کنندههای نوع آن نیز با نوع نوشته شده به صورت آرایه ، یکسان باشد '''اما نکته مهم''' این است که به غیر از کاراکتر آرایهای که نیازی به علامت و عملگر امپرسند & ندارد ، مابقی انواع داده در صورت نوشته شدن به صورت آرایه نیاز به این عملگر دارند و در صورت نوشته شدن به صورت اشارهگر خیر
همچنین باید بدانید که اگر داخل جفت کروشه باز و بسته ، پیش از کاراکتر یا کاراکترها از علامت کرات ^ استفاده کنید تا زمانی که تابع scanf به آن نرسیده باشد دادهها را دریافت کرده و در آرگومان متناظر خود ذخیره می کند . مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main(void)
{
char str[100];
printf("Enter a string: \n");
scanf("%[^p]s", str);
printf("You entered: %s\n", str);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
در مثال بالا می توانید متن مقابل را وارد کنید : C is more powerful than python ولی با جمله C is more powerful than مواجه خواهید شد چرا که scanf به کاراکتر p رسیده است
ضمناً '''دقت کنید''' که در اسکن کردن متونی که دارای فضای سپید ( مثل اسپیس Space ) هستند استفاده از scanset ها ضروری است . چرا که تابع scanf و تابعهای مشابه آن فضای سفید را به صورت پیشفرض دریافت نمی کنند . مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main(void)
{
char a[100];
scanf("%[^\n]s", a);
printf("Your text is : %s\n", a);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
در مثال بالا اگر از scanset ـی که نوشته شده [n\^] استفاده نکنید نمی توانید از اسپیس استفاده کنید و با اولین اسپیس رشته شما شکسته می شود و scanf دیگر اسکن نمی کند
'''نکته :''' علامت هایفن یا همان خط تیره ( که به اشتباه به آن دش dash نیز می گویند ) برای بیان یک طیف است اما اگر بخواهید خود آن را برای اسکن شدن یا نشدن تعیین کنید هر کامپایلر از روش خاص خود استفاده می کند و باید به راهنمای کامپایلر خود مراجعه کنید
'''دقت کنید''' که فضای سپید مثل اسپیس space یا جدول افقی Tab در تابع scanf و تابعهای مشابه آن باعث می شود تا تابع از ورودی بخواند اما آن را در آرگومانی ذخیره نکند . از این تکنیک می توانید در قسمتهایی از کد خود که خط شکسته دارند استفاده کنید ( چون خط شکسته باعث می شود تا scanf و تابعهای مشابه آن ، خط شکسته را به عنوان یک کاراکتر دریافت کرده و دیگر متن شما را دریافت نکنند )
'''یادآوری :''' علامت استریسک باعث می شود تا کاراکتر یا کاراکترهایی نادیده گرفته شوند و در آرگومانها ذخیره نشوند
مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main(void)
{
char a, b;
printf("enter a character\n");
scanf("%c", &a);
printf("enter another character\n");
scanf(" %c%*[^\n]",&b);
printf("Your characters were %c and %c\n", a, b);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
در مثال بالا کاراکتر a بدون هیچ مشکلی دریافت می شود اما چون Enter را می زنید و تابع printf نیز خط را می شکند کاراکتر b باید با ترفند دریافت شود که ابتدا یک اسپیس وارد می کنیم و سپس خط شکسته را نادیده گرفته و کاراکتر b را دریافت می نمائیم تا در خروجی خطفرمان نمایش داده شود
مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main(void)
{
char a[100], b[100];
printf("Enter a text :\n");
scanf("%[^\n]s", a);
printf("Your first text is : %s\n", a);
printf("Enter second text :\n");
scanf(" %[^\n]s", b);
printf("Yurt second text is : %s\n", b);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
مثال بالا نیز همانند مثال قبل است با این تفاوت که رشتهها را به جای کاراکترها ذخیره می کنیم . در رشته اول scanf تا زمانی که به خط شکسته نرسیده باشد اسکن می کند و در رشته دوم ابتدا یک اسپیس نوشتهایم تا خط شکسته قبلی ذخیره نگردد و خط شکسته را نادیده گرفتهایم
تابع scanf در صورت موفقیت آمیز بودن کارکرد خود ، یعنی دریافت و مقداردهی آرگومان یا آرگومانها به همان تعداد ، مقداری صحیح و مثبت ، باز می گرداند و در صورتی که مقداری را دریاقت نماید ولی نتواند آن را مقداردهی کند آن را محاسبه نخواهد کرد . ضمناً اگر هیچ کدام از مقادیر ، دریافت و مقداردهی نشوند مقدار 0 را باز میگرداند . و در صورتی که کارکرد آن موفقیتآمیز نباشد یک ماکروی EOF ( سرنام End of File ) که پائینتر یک مبحث برای آن موجود است و بیشتر توضیح دادهایم باز می گرداند
'''دقت کنید :''' که تابع scanf باید به تعداد و اندازه پارامترهای تعیین کننده ، مقدار عددی یا حرفی و رشتهای دریافت کند و در صورتی که آرگومانهای بیشتری بنویسید ، برنامه شما رفتار تعریفنشده بروز خواهد داد و یا احتمالاً برنامه شما دچار شکست و توقف می شود . ضمناً اگر تعیینکننده نوع با نوع دادهای که وارد میشود یکسان نباشد نیز برنامه شما رفتار تعریفنشده بروز خواهد داد . مخصوصاً در مورد رشتهها ؛ اگر تعداد تعیین شده ، کمتر از تعداد کاراکترهای وارد شده باشد بافر سرریز می شود که برای این کار ترفندهای مختلفی وجود دارد که سادهترین آن تعیین پهنا و عرض رشته است که کافی نیست ولی برای تعیین آن باید از تابعهای کتابخانهای دیگری استفاده کرد که در مبحث فعلی موجود نیستند و در فصول فایلهای سرآیند دیگر موجودند که نوشته خواهند شد . ضمن اینکه اگر به درستی از تابع scanf استفاده نکنید امکان حمله رشته فرمت شده وجود دارد ؛ نظیر اینکه تعداد تعیین کنندههای نوع ، بیشتر از تعداد آرگومانها باشند ( همانند printf که در آنجا آدرسش را گذاشتیم ؛ یعنی هکرها با وارد کردن کاراکترهایی خاص به حافظه برنامه یا سیستم عامل و سیستم دسترسی پیدا می کنند )
'''نکته :''' در بسیاری از خطاهای scanf یا تابعها و ماکروهای دیگر ، مقدار ماکروی errno ( سرنام error number به معنی شماره خطا ) مقداردهی می شود که با توجه به سیستم عامل و کامپایلر خود و بررسی شماره خطا می توانید خطا را پیدا نموده و بر طرف نمائید که در فصل فایل سرآیند errno نوشته خواهد شد
== تابع sprintf ==
تابع sprintf سرنام string print formatted به معنی چاپ رشته فرمتشده همانند تابع printf می باشد به غیر از اینکه متنی را در خروجی خطفرمان نمایش نمی دهد بلکه آن را در بافر یا میانگیر ذخیره می کند که می توان با تابع printf ( به عنوان مثال ) آن را چاپ نمود . نمای کلی تابع sprintf به شکل زیر می باشد :
{{چپچین}}
sprintf(char *buffer, const char *format, arguments)
{{پایان چپچین}}
تابع sprintf از نوع صحیح می باشد و مقداری که باز می گرداند تعداد کاراکترهایی است که در بافر ، نوشته است ( منهای آخرین مقدار که تهی NULL می باشد و برای نشان دادن پایان رشته است )
ابتدا نام رشتهای که قرار است به عنوان بافر ، دادهها را بگیرد می نویسیم ، سپس رشته خودمان را به همراه تعیینکنندههای فرمت ( در صورت لزوم ) می نویسیم و سپس آرگومانها را که خود می توانند حتی مقدار باشند می نویسیم که در نهایت در بافر ذخیره می شود . مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main()
{
char buff[50];
char str[] = "string";
sprintf(buff, "This is a %s", str);
printf("%s", buff);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
ابتدا یک رشته به نام buff مخفف buffer اعلان نمودیم . سپس یک رشته به نام str مخفف string و به معنی رشته با مقدار string تعریف نمودیم . سپس توسط تابع کتابخانهای sprintf رشته This is a را به همراه تعیینکننده فرمت رشته که آرگومان آن str است در buff ذخیره کردیم ( که می شود This is a string یعنی این یک رشته است ) و سپس توسط تابع کتابخانهای printf مقدار buff را در خروجی خطفرمان چاپ نمودیم . از تمام تعیینکنندههای فرمت در printf در sprintf نیز می توانید استفاده کنید
'''نکته :''' اگر رشتههایی که توسط بافر ، مورد اشاره قرار گرفتهاند و رشته قالببندی شده ( فرمت شده ) همپوشانی داشته باشند ( روی هم بیافتند ) رفتار تعریف نشدهای بروز خواهد داد
'''نکته :''' تابع sprintf بررسی نمی کند که حجم رشته ( تعداد کاراکترهای بافر ) چقدر است تا به همان اندازه در آن ذخیره کند ؛ بنابراین اگر بیشتر از تعداد کاراکترهای بافر در آن بنویسید ، بافر سر ریز می شود و چون بافر در پشته ( Stack ) حافظه ، ذخیره می شود معمولاً با خطای segmentation fault رو به رو خواهید شد که در پائین همین فصل آن را توضیح دادهایم
'''نکته :''' نوع تعیین کننده های فرمت و آرگومانهای فرستاده شده به آن باید با هم همسان باشند ؛ در غیر این صورت ، رفتار تعریفنشدهای بروز خواهد داد
== تابع sscanf ==
تابع sscanf سرنام string scan formatted به معنی اسکن رشته فرمتشده ، رشته موجود در متن منبع برنامه ( source code ) را دریافت می نماید و قسمتهای مختلف آن را اسکن می کند و در آرگومانها ذخیره می کند . نمای کلی تابع کتابخانهای sscanf به شکل زیر است :
{{چپچین}}
sscanf(const char *buffer, const char *format, arguments-list);
{{پایان چپچین}}
مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main()
{
char str[] = "This is a string with 2 numbers : 5 and 9";
char str2[10], str3[10], str4[10], str5[10], str6[10], str7[10];
char c1, c2;
int i1, i2, i3;
sscanf(str, "%s %s %c %s %s %d %s %c %d %s %d", str2, str3, &c1, str4, str5, &i1, str6, &c2, &i2, str7, &i3);
printf("%s %s %c %s %s %d %s %c %d %s %d", str2, str3, c1, str4, str5, i1, str6, c2, i2, str7, i3);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
در مثال بالا یک رشته به نام str تعریف نمودهایم که یک رشته است که می گوید این یک رشته است با ۲ عدد : ۵ و ۹ سپس ۶ رشته ۱۰ کاراکتری که مطمئن هستیم رشتهها بیشتر از ۱۰ کاراکتر ندارند ، اعلان نمودهایم . سپس ۲ کاراکتر ، اعلان نمودهایم و سپس نیز ۳ عدد داده صحیح را اعلان نمودهایم . تابع کتابخانهای sscanf رشته str را می گیرد و قسمتهای مختلف آن را اسکن می کند و به ترتیب در آرگومانهای تعیین شده ( که متغیرهایی هستند که بالاتر نوشتیم اعلان شدهاند ) ذخیره کردهایم . در نهایت با تابع printf دادههای ذخیره شده را در خروجی خطفرمان چاپ نمودهایم . دقت کنید که scanset ها در sscanf نیز برقرار و کارا هستند
همچنین تابع sscanf از نوع داده صحیح است و در صورت عملکرد موفقیتآمیز مقداری بزرگتر از 0 را باز می گرداند و در صورتی که نتواند هیچ کدام از دادهها را ذخیره کند مقدار 0 را باز می گرداند و در غیر این صورت مقدار EOF سرنام End Of File به معنی پایان فایل یا پایان سند که یعنی خطایی رخ داده است . مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main()
{
char str[] = "This is a string with 2 numbers : 5 and 9";
char str2[10], str3[10], str4[10], str5[10], str6[10], str7[10];
char c1, c2;
int i1, i2, i3;
int itemsread = 0;
itemsread = sscanf(str, "%s %s %c %s %s %d %s %c %d %s %d", str2, str3, &c1, str4, str5, &i1, str6, &c2, &i2, str7, &i3);
printf("%s %s %c %s %s %d %s %c %d %s %d\n", str2, str3, c1, str4, str5, i1, str6, c2, i2, str7, i3);
printf("Items read are : %d\n", itemsread);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
در این مثال تابع کتابخانهای sscanf مقدار ۱۱ را باز می گرداند . ۲ رشته سپس ۱ کاراکتر سپس ۲ رشته و سپس ۱ عدد و دوباره ۱ رشته و سپس ۱ کاراکتر سپس ۱ عدد و بعد ۱ رشته و ۱ عدد دیگر که مجموعاً می شود ۱۱ مورد و آیتم دریافت شده
'''دقت کنید :''' برای کاراکترهای سفید معین ( مثل فضای خالی Space ، جدول افقی ، خط شکسته و ... ) کاراکترهای سفید متناست در ورودی ، قرار بدهید . آنها ذخیره نمی شوند اما برای خواندن درست و استانداردِ متن میانگیر باید آنها را وارد و دریافت کنید
'''نکته :''' اگر رشتههایی که توسط بافر ، مورد اشاره قرار گرفتهاند و رشته قالببندی شده ( فرمت شده ) همپوشانی داشته باشند ( روی هم بیافتند ) رفتار تعریف نشدهای بروز خواهد داد
'''نکته :''' نوع تعیین کننده های فرمت و آرگومانهای فرستاده شده به آن باید با هم همسان باشند ؛ در غیر این صورت ، رفتار تعریفنشدهای بروز خواهد داد
== تابع vprintf ==
تابع vprintf سرنام variadic print formatted به معنی پرینت فرمت شده تعداد متغیر ، تابعی همانند printf را توسط کاربر می سازد . فقط این تابع نیاز به ماکروها و توابعی دارد که در فایل سرآیند stdarg تعریف شدهاند و ما در اینجا به صورت مختصر توضیح می دهیم تا در مبحث مربوطه مفصلاً آنها را تشریح کنیم . va_list یک ماکرو است که فهرستی ( لیستی ) از آرگومانهایی که قرار است ایجاد شوند را در یک متغیر ایجاد می کند . سپس تابع va_start با ۲ آرگومان که اولی همان آرگومانهای va_list است را دریافت می کند تا امکان دسترسی به آن را فراهم کند و دومی آخرین آرگومان ثابت و غیر متغیر تابع را دریافت می کند تا تابع متغیر آغاز به کار کند و va_end آرگومان ساخته شده را می گیرد تا آن را خاتمه دهد ( در تابعی با تعداد پارامترهای متغیر ) . به مثال زیر دقت کنید :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
#include <stdarg.h>
void PrintFormatted(char *string, ...)
{
va_list args;
va_start(args, string);
vprintf(string, args);
va_end(args);
return;
}
int main()
{
PrintFormatted("%d variable argument\n", 1);
PrintFormatted("%d variable %s\n", 2, "arguments");
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
در مثال ساده بالا ابتدا stdio را ضمیمه برنامه خود نمودهایم و سپس stdarg را تا تابعی با تعدادِ آرگومانهای پذیرنده متغیر تعریف کنیم . تابع پوچ PrintFormatted یک پارامتر رشته به نام string دارد و سه نقطه ( ellipsis ) که تعداد پارامترهای متغیر را نشان می دهد و تعیین می کند . سپس va_list متغیری برای کار با آرگومانهای دریافت شده با نام args را تعریف کرده است . سپس va_start آرگومانهای فرستاده شده و آرگومان تابع را پذیرفته است . سپس vprintf هر رشتهای را که به آن فرستاده شود در args ذخیره می کند و پرینت می نماید و در پایان va_end عمر args و تابع با تعداد پارامترهای متغیر را پایان می دهد . حالا به جای printf می توانیم از تابع vprintf استفاده کنیم که ابتدا یک رشته را به آن فرستادهایم که اولین قسمت آن یک متغیر عددی صحیح است که تعیین کننده فرمت آن را نوشته و در پایان به آن ۱ را فرستادهایم . دومی نیز به همین شکل است به استثنای اینکه آخرین آرگومان فرستاده شده به آن ( قبل از خط شکسته ) یک رشته است ( "arguments" ) '''دقت کنید :''' تعیین کنندههای فرمت در vprintf همانند printf و sprintf میباشند
== تابع vsprintf ==
تابع vsprintf سرنام variadic string print formatted تلفیقی از vprintf و sprintf می باشد . نمای کلی ایجاد تابع vsprintf به شکل زیر است :
{{چپچین}}
vsprintf(char * buffer , const char * format , arguments-list)
{{پایان چپچین}}
ابتدا باید تابعی با تعداد پارامترهای متغیر تعریف نمود که در آن vsprintf یک متغیر اشارهگر را می پذیرد تا متن در آن ذخیره شود ، سپس تعیینکنندههای فرمت و در نهایت فهرست آرگومانهای فرستاده شده را . بدین ترتیب اگر متنی را با تعیین کنندههای فرمت به همراه آرگومانهای متناسب به vsprintf بفرستیم در متغیر اشارهگر ذخیره می شود که می توانیم آن را با یک تابع کتابخانهای مثل printf چاپ کنیم . مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
#include <stdarg.h>
void vspfunc(char * str, char * fmt, ...)
{
va_list argptr;
va_start(argptr, fmt);
vsprintf(str, fmt, argptr);
va_end(argptr);
return;
}
int main(void)
{
char buff[50];
int c = 299792458;
double pi = 3.141592;
char string[] = "string";
vspfunc(buff, "%d %f %s", c, pi, string);
printf("%s", buff);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
در مثال بالا ابتدا stdio.h و stdarg.h را ضمیمه برنامه خود نمودهایم تا از ماکروها و تابعهای کتابخانهای آنها در برنامه خود استفاده کنیم . سپس یک تابع پوچ با نام vspfunc مخفف vsprintffunction تعریف نمودهایم که یک متغیر اشارهگر از نوع کاراکتر به نام str مخفف string و یکی هم به نام fmt مخفف format دارد به همراه سه نقطه که نشانگر داشتن تعداد پارامترهای متغیر است . داخل تابع ابتدا به کمک ماکروی va_list متغیری که قرار است آرگومانها را پذیرا شود تعریف نمودهایم ( argptr ) سپس برای کار با آرگومانهای فرستاده شده و آرگومانهای تابع از va_start استفاده کردهایم . سپس تابع vsprintf سه آرگومان را می پذیرد . اولی اشارهگری که در آن دادهها ذخیره شوند ؛ دومی تعیینکنندههای فرمت و سومی فهرست آرگومانهای فرستاده شده . سپس va_end عمر argptr را پایان می دهد . چون تابع ، پوچ است مقداری را باز نمی گرداند . داخل تابع اصلی برنامه main یک رشته به کمک آرایهای از کاراکتر با نام buff مخفف buffer با پنجاه عنصر اعلان نمودهایم . یک متغیر صحیح که سرعت انتشار نور در خلأ را در خود ذخیره کرده یک متغیر اعشاری با دقت دو برابر که عدد پای ( پی ) را در ذخود ذخیره کرده و یک رشته که string را در خود ذخیره کرده . سپس آنها را به کمک تابع کتابخانهای vsprintf در buff ذخیره نمودهایم و با تابع کتابخانهای printf در خروجی خطفرمان چاپ نمودهایم و تابع با موفقیت به پایان می رسد
== تابع putchar ==
تابع کتابخانهای putchar سرنام put character به معنی کاراکتر را قرار بده یک کاراکتر را به خروجی خطفرمان می فرستد . نمای کلی ایجاد تابع کتابخانهای putchar به شکل زیر است :
{{چپچین}}
putchar(unsigned char);
{{پایان چپچین}}
برای استفاده از این تابع یا می توانید یک کاراکتر را داخل تابع بنویسید تا چاپ شود یا یک داده کاراکتری تعریف شده را به آن بفرستید . مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main(void)
{
putchar('J');
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
که در خروجی خطفرمان کاراکتر J را چاپ می کند ؛ همچنین می توانید مقدار و موجودی J را داخل یک داده کاراکتری ذخیره کنید و سپس آن را به putchar بفرستید . مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main(void)
{
char c = 'J';
putchar(c);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
یک مثال دیگر برای کامل کردن کاربرد تابع putchar :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main(void)
{
char ch = 'A';
for(ch = 'A'; ch <= 'Z'; ch++)
{
putchar(ch);
putchar('\n');
}
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
ابتدا یک کاراکتر با مقدار و موجودی کاراکتر A با نام ch تعریف نمودهایم . سپس با حلقه for کاراکتر ch را از A تا زمانی که مقدار کمتر و مساوی Z باشد به همراه یک خط شکسته در خروجی خطفرمان قرار دادهایم که همان حروف الفبای انگلیسی می باشد
== تابع getchar ==
تابع کتابخانهای getchar مخفف get character به معنی « کاراکتر را بگیر » برای دریافت یک کاراکتر از ورودی استاندارد ( معمولاً صفحهکلید Keyboard در ورودی خطفرمان ) می باشد . نمای کلی ایجاد تابع getchar بدین شکل می باشد :
{{چپچین}}
getchar(void);
{{پایان چپچین}}
تابع getchar آرگومانی را نمی پذیرد و مقدار آن فقط در دادههای صحیح قابل ذخیره است ( که کامپایلر به صورت خودکار نقش کاراکتر را به آن می دهد )
خروجی getchar باید یک کاراکتر باشد و اگر EOF یعنی End Of File را بازگرداند یعنی یا فایل به پایان رسیده است یا خطایی در وارد کردن کاراکتر وجود داشته است . مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include<stdio.h>
int main()
{
int ch;
ch = getchar();
printf("The entered character is : %c", ch);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
ابتدا یک داده از نوع صحیح با نام ch اعلان نمودهایم ؛ سپس ch توسط getchar که مقداری از نوع کاراکتر دریافت می کند تعریف می شود و مقدار و موجودی آن ، همان مقدار و موجودی کاراکتری وارد شده است و سپس در خروجی خطفرمان چاپ می شود که کاراکتر وارد شده توسط شما کاراکتر ''x'' می باشد که ''x'' همان کاراکتر وارد شده توسط کاربر می باشد
== تابع puts ==
تابع کتابخانهای puts سرنام put string به معنی رشته را قرار بده ، یک رشته را در خروجی استاندارد که معمولاً محیط خطفرمان سیستم عامل است می نویسد . نمای کلی ایجاد تابع puts به شکل زیر می باشد :
{{چپچین}}
puts(const char * string);
{{پایان چپچین}}
می توانیم یک رشته را داخل آن بنویسیم یا نام یک متغیر از نوع رشته را که تعریف شده است به آن بفرستیم تا در خروجی خطفرمان نمایش دهد .
'''نکته :''' تابع puts به خودی خود ، در پایان رشته ، خط را می شکند و وارد خط بعدی می شوید
مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include<stdio.h>
int main()
{
puts("Hello World!");
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
در قطعه کد بالا رشته !Hello World را نمایش دادهایم
مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include<stdio.h>
int main()
{
char ch[] = "This is a string";
puts(ch);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
در مثال و قطعه کد بالا یک رشته به نام ch را تعریف کردهایم . سپس با تابع کتابخانهای puts مقدار و موجودی ch را نمایش دادهایم
همچنین اگر puts را داخل یک داده صحیح ذخیره کنید ، هم متن نمایش داده می شود و هم تعداد کاراکترهای داخل رشته puts ذخیره می شود . مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include<stdio.h>
int main()
{
int n = puts("This is a string");
printf("%d", n);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
'''نکته :''' تعیینکنندهای فرمت در puts عمل نمی کنند و در صورت استفاده ، کامپایلر از شما خطا می گیرد
== تابع gets ==
تابع کتابخانهای gets سرنام get string به معنی رشته را بگیر ، از ورودی استاندارد که معمولاً صفحهکلید است رشتهای را دریافت می کند و سپس آن را در بافر ذخیره می کند ( که یک اشارهگر است ) . نمای کلی ایجاد تابع کتابخانهای gets به صورت زیر است :
{{چپچین}}
gets(char * buffer);
{{پایان چپچین}}
دقت کنید که از تعیینکنندههای فرمت نمی توانید در gets استفاده کنید . تابع gets با یک خط جدید ( شکسته شدن خط ) پایان می یابد که آن را به صورت یک تهی NULL ذخیره می کند و اگر عملیات دریافت با موفقیت انجام شود ، رشته ذخیره شده در خود را باز می گرداند و اگر یک اشارهگر تهی NULL Pointer را باز گرداند یعنی خطایی رخ داده و در صورتی که رشتهای وارد نشده باشد EOF سرنام End Of File را باز می گرداند
'''نکته :''' استفاده از تابع gets ریسک پذیر است ؛ چرا که چک نمی کند که رشتهای که شما اعلان کردهاید چند عنصری است و اگر از مقدار تعیین شده بیشتر باشد ، بافر Buffer سرریز می شود و آنچه که باز می گرداند تعریفنشده است
مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include<stdio.h>
int main()
{
char ch[30];
printf("Enter a string : \n");
gets(ch);
printf("%s", ch);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
در قطعه کد بالا یک رشته ۳۰ کاراکتری با نام ch را اعلان نمودهایم . سپس در رابط خطفرمان چاپ کردهایم یک رشته را وارد کنید و خط را شکستهایم . سپس تابع gets رشته ch را از کاربر دریافت می کند و در نهایت تابع printf آنچه را که وارد کردهاید در خروجی خطفرمان چاپ می کند
'''
نکته مهم :''' تابع gets در استاندار C11 و از آن به بعد ، حذف شده است . اگر کامپایلر شما خطا گرفت یا اگر کامپایلر خود را تنظیم کردید تا از استاندارد جدید استفاده کند و از شما خطا گرفت ، علتش همین است . توصیه شده است که به جای gets از fgets استفاده کنید که در ادامه خواهیم نوشت
== ماکروهای stdin و stdout ==
در قسمت بعدی ماکروی FILE را خواهیم نوشت که به برنامهنویس اجازه میدهد تا جریان فایلی را ایجاد کند تا فایلی ساخته شود و آن را بخوانیم یا درون آن چیزی بنویسیم یا هر دوی اینها . اما ماکروهای stdin سرنام standard iput به معنی ورودی استاندارد و stdout سرنام standard output به معنی خروجی استاندارد برای ما این امکان را فراهم میآورند تا از ورودی و خروجی استاندارد ( در رایانه صفحهکلید و نمایشگر ) به جای جریان فایل در تابعهای کتابخانهای که فایل را میخوانند و در آن مینویسند از صفحهکلید و نمایشگر استفاده کنیم . مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main(void)
{
fprintf(stdout, "%s", "string");
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
در قطعه کد بالا از تابع کتابخانهای fprintf سر نام file print formatted به معنی چاپ فرمت شده فایل استفاده کردهایم اما به جای اینکه با فایلی سر و کار داشته باشیم و بخواهیم طبق معمول در فایلی چیزی را بنویسیم به جای نام فایل نوشتهایم : stdout
و سپس تعیینکننده فرمت تعیین کرده است که یک رشته نوشته شود ( در اینجا نمایش داده شود ) و به جای آن رشته string را به عنوان آرگومان به تابع فرستادهایم . به همین شکل می توان به جای یک تابع کتابخانهای که از فایل ، اطلاعات را می خواند ، بنویسیم : stdin و از صفحهکلید ، اطلاعات را دریافت کنیم
== ماکروی نوع داده FILE ==
به ورود و خروج دادهها از گذرگاه ( مثل برنامه ) جریان داده گفته می شود . همچنین به ورود و خروج دادهها به داخل فایل ، جریان فایل گفته می شود . ماکروی FILE با یک علامت استریسک و یک شناسه برای نام فایلی که می خواهیم بسازیم ، در برنامه ( زبان برنامهنویسی سی ) جریان فایلی را می سازد و آن را آماده استفاده می کند . نمای کلی ایجاد جریان فایل بدین شکل است :
{{چپچین}}
FILE * const char * name-of-file
{{پایان چپچین}}
که const char * name-of-file یک رشته است که نام فایلی را که قصد استفاده از آن را داریم را تعیین می کند . مثل : FILE * fp در اینجا fp سرنام file pointer نام انتخابی ما برای فایلی که قصد استفاده از آن را داریم می باشد
== تابعهای fopen و fclose ==
تابع fopen سرنام file open به معنی فایل را باز کن ، فایلی را که ماکروی نوع داده FILE آماده کرده باشد را باز میکند و در دادهی فایل باز شده ( توسط FILE ) ذخیره می کند . تابع کتابخانهای fopen دو پارامتر را از نوع رشته پذیرا می باشد : یکی نام فایل و دیگری نحوه باز کردن فایل file opening mode ( که هر دو طبعاً باید داخل دو دابل کوت " قرار بگیرند )
به عنوان نام فایل اگر فقط نامی را بنویسید ، برنامه فایل مورد نظر شما را در همان آدرس برنامه ایجاد می کند ، اما اگر آدرس معین دیگری را به آن بدهید در همان آدرس ایجاد می کند . تابع fopen در صورت عمل موفق ، یک اشارهگر به فایل ( و به طور کلّیتر شیئای که جریان فایل را در دست دارد ) باز می گرداند و در صورت عدم موفقیت یک اشارهگر تهی NULL باز می گرداند . تابع کتابخانهای fclose نیز سرنام file close فایل باز شده را می بندد تا از حافظه موقت ( RAM ) پاک شود و فضای اشغال شده را آزاد می کند که فقط باید بین جفت پرانتز باز و بسته آن ، نام فایلی را که ایجاد کردهاید بنویسید . تابع fclose در صورت موفقیتآمیز بودن عملیات مقدار 0 را باز می گرداند و در صورت خطا EOF را باز خواهد گرداند
نحوههای باز کردن فایل بدین شرح می باشند :
{{چپچین}}
r
{{پایان چپچین}}
مخفف read که برای خواندن فایل می باشد و به اولین کاراکتر فایل اشاره می کند
{{چپچین}}
w
{{پایان چپچین}}
مخفف write که برای نوشتن در فایل می باشد و فایل را باز نویسی می کند ( یعنی اگر داخل فایل متنی موجود باشد ، آن را جایگزین می کند ) و در صورت عدم وجود فایل ، فایل را ایجاد می کند
{{چپچین}}
a
{{پایان چپچین}}
مخفف append که در ادامه فایل ، متنی را می نویسد ( یعنی اگر متنی داخل آن موجود باشد ، در ادامه آن ، خواهد نوشت ) در صورت عدم وجود فایل آن را می سازد
{{چپچین}}
r+
{{پایان چپچین}}
مخفف + read که هم می خواند و هم می نویسد اما به اولین کاراکتر فایل اشاره می کند
{{چپچین}}
w+
{{پایان چپچین}}
مخفف + write که هم می خواند و هم می نویسد و در صورت نوشتن متن را جایگزین می کند . همچنین در صورت عدم وجود فایل ، آن را می سازد
{{چپچین}}
a+
{{پایان چپچین}}
مخفف + append که هم می خواند و هم در انتهای فایل می نویسد و به آخرین کاراکتر فایل اشاره می کند . در صورت عدم وجود فایل آن را می سازد
{{چپچین}}
rb
{{پایان چپچین}}
مخفف read binary که فایل را به صورت باینری ( دودویی ) و در واقع عددی می خواند . اگر فایل ، موجود نباشد یک اشارهگر NULL باز می گرداند
{{چپچین}}
wb
{{پایان چپچین}}
مخفف write binary که فایل را به صورت باینری ( دودویی ) و در واقع عددی می نویسد و جایگزین می کند . در صورت عدم وجود فایل آن را می سازد
{{چپچین}}
ab
{{پایان چپچین}}
مخفف append binary که فایل را به صورت باینری ( دودویی ) و در واقع عددی اضافه کرده و در انتهای می نویسد . در صورت عدم وجود فایل آن را می سازد
{{چپچین}}
rb+
{{پایان چپچین}}
مخفف + read binary که فایل را جهت خوانده و نوشته شدن در مبنای دو و به صورت عددی باز می کند . اگر فایلی وجود نداشته باشد یک اشارهگر NULL باز می گرداند
{{چپچین}}
wb+
{{پایان چپچین}}
مخفف + write binary که فایل را جهت خوانده و نوشته شدن در مبنای دو و به صورت عددی باز می کند و اگر محتوایی داشته باشد آن را جایگزین می کند . در صورت عدم وجود فایل ، آن را می سازد
{{چپچین}}
ab+
{{پایان چپچین}}
فایل را جهت خواندن و اضافه کردن در مبنای دو و در واقع عددی باز می کند . در صورت عدم وجود فایل آن را می سازد
مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main(void)
{
FILE * fp;
fp = fopen("/home/lovelorn/Documents/mytext.txt", "w");
fprintf(fp, "%s", "string");
fclose(fp);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
'''تشریح :''' ابتدا فایل سرآیند stdio را ضمیمه برنامه خود نمودهایم تا از ماکروها و تابعهای کتابخانهای استاندارد تعریف شده در آن استفاده کنیم . سپس داخل تابع اصلی برنامه main که پارامتری ندارد یک فایل را با نام fp آماده استفاده نمودهایم . موجودی fp توسط تابع کتابخانهای fopen که در فایل سرآیند stdio تعریف شده است یک فایل متنی به نام mytext می باشد که داخل آدرس home و نام کاربری خودم lovelorn می باشد ( این نام توسط شما در سیستم عامل لینوکس تعریف می شود ) که متعلق به سیستم عامل GNU/Linux می باشد شما در ویندوز می توانید بنویسید :
{{چپچین}}
"D:/myapp/mytext.txt"
{{پایان چپچین}}
که در حالت w یعنی نوشتن قرار دارد و فایلی به نام mytext را با فرمت txt در آدرس ذکر شده ایجاد می کند . سپس توسط تابع fprintf سرنام file print formatted به معنی چاپ فرمت شده فایل که هنوز به آن نرسیدهایم اما همان طور که اشاره شد جهت نوشتن در فایل می باشد ، نام فایل را ذکر کرده و سپس توسط تعیین کننده فرمت تعیین کردهایم که یک رشته را میخواهیم بنویسیم و سپس string به معنی رشته را به آن فرستادهایم که می توانستیم نام یک متغیر تعریف شده را نیز نویسیم که باید یک رشته می بود که داخل متنی موجود وجود داشت . سپس فایل fp را توسط تابع کتابخانهای fclse بستهایم تا فضای اشغال شده توسط فایل fp در حافظه موقت RAM آزاد شود . سپس تابع main با موفقیت به پایان می رسد
== تابع fprintf ==
تابع کتابخانهای fprintf سرنام file print formatted به معنی چاپ فرمتشده فایل متنی را از برنامه دریافت نموده و در جریان فایل می نویسد . شکل کلی ایجاد تابع fprintf به صورت زیر است :
{{چپچین}}
fprintf(FILE * stream, const char * format-string, argument list);
{{پایان چپچین}}
ابتدا نام جریان فایل را نوشته ؛ سپس تعیین کنندههای فرمت را به همراه متن دلخواه ( که ضروری نیست ولی می توانید بنویسید ) می نویسیم و سپس آرگومانهایی که به تابع فرستاده می شوند تا جایگزین تعیین کنندههای فرمت شوند را می نویسیم
مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main(void)
{
char str[] = "Hello World!\n";
FILE * fp;
fp = fopen("mytext.txt", "w");
fprintf(fp, "%s", str);
fclose(fp);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
در مثال بالا رشته str جمله !Hello World را به همراه یک شکستن خط در خود ذخیره نموده و تعریف شده است . سپس فایل fp را آماده ایجاد نمودهایم . فایل fp توسط تابع کتابخانهای fopen با نام mytext در آدرس برنامه نوشته خواهد شد ( در صورتی که وجود نداشته باشد ساخته خواهد و در صورت وجود ، متن آن بازنویسی خواهد شد و همان طور که در مطلب پیشین گفتیم می توانید آدرس را هم بنویسید . تابع کتابخانهای fprintf که مطلب فعلی می باشد تابع fp را هدف قرار داده و یک رشته را پذیرا می باشد که رسته همان str با موجودی و مقدار !Hello World و یک شکستن خط می باشد . در پایان با تابع کتاخانهای fclose که در مطلب پیشین نوشتیم ، فایل fp زا می بندیم و فضای اشغال شده توسط آن را آزاد می نمائیم و تابع main با موفقیت به اتمام رسیده است . حالا شما می توانید فایل mytext.txt را در جایی که برنامه خود را نوشته و کامپایل نمودهاید بیابید که داخل همان متن نوشته شده به همراه یک خط شکسته در آن موجود می باشد . ضمناً تابع fprintf در صورت عملکرد موفقیتآمیز تعداد بایتهای نوشته شده را باز میگرداند و در صورت عدم موفقیت یک عدد منفی را باز میگرداند
'''نکته :''' تعیین کنندههای فرمت در fprintf همانند printf می باشند
== تابع fscanf ==
تابع fscanf سرنام file scan formatted به معنی اسکن فرمتشده فایل جهت خواندن دادهها از جریان فایل می باشد که دادهها را داخل متغیرهای آرگومانهای فرستاده شده به خود ذخیره می نماید . شکل کلی ایجاد تابع fscanf به صورت زیر می باشد :
{{چپچین}}
fscanf(FILE * stream, const char * format-string, argument-list);
{{پایان چپچین}}
ابتدا نام جریان فایلی را که قرار است خوانده شود می نویسیم ، سپس تعیین کنندههای فرمت را و سپس در پایان آرگومانهایی که قرار است جایگزین تعیین کنندههای فرمت شوند را به تابع می فرستیم
مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main(void)
{
char str1[10], str2[10];
float euler;
FILE * fp;
fp = fopen ("mytext.txt", "r");
fscanf(fp, "%s %s %f", str1, str2, &euler);
printf("The text in file is : %s %s %f\n", str1, str2, euler );
fclose(fp);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
ما سند و فایلی را به نام mytext.txt در آدرس و جایی که برنامه قرار دارد ایجاد نمودهایم و داخل آن نوشتهایم : Hello World! 2.71 سپس در برنامه خود ۲ رشته با نامهای str1 و str2 اعلان نمودهایم ؛ همین طور یک عدد اعشاری با نام اویلر . سپس یک فایل را با نام fp آماده استفاده نمودهایم و سپس با تابع کتابخانهای fopen فایل mytext.txt را جهت خواندن باز نمودهایم . تابع کتابخانهای fscanf که مطلب فعلی ماست فایل fp را اسکن می کند و داخل آن به دنبال ۲ رشته و یک عدد اعشاری می گردد که داخل str1 و str2 و euler ذخیره می کند . '''دقت کنید''' که رشتهها جهت دریافت شدن نیازی به عملگر آدرسدهی ( یعنی همان علامت امپرسند & ) ندارند اما جهت دریافت عدد در مثال نیز از آن استفاده نمودهایم که ضروری می باشد . سپس آنچه که در فایل mytext.txt خوانده شده است در خروجی خطفرمان نمایش داده می شود که اولین رشته Hello و دومین رشته !World و عدد اعشاری ما عدد اویلر با دقت ۲ رقم اعشار یعنی ۲٫۷۱ می باشد . در پایان نیز فایل را بسته و تابع را با موفقیت به پایان می رسانیم . مقداری که تابع fscanf باز می گرداند مقدار و تعداد دادههایی است که خوانده است ؛ اگر کمتر از دادههای داخل فایل باشد با مشکلی رو به رو شده است تا جایی که این مقدار می تواند 0 باشد ؛ اما اگر به کلی فایل را نتواند بخواند مقدار EOF را باز خواهد گرداند . '''دقت کنید''' که تعیین کنندههای فرمت در fscanf همانند scanf می باشند
== تابع getc ==
تابع کتابخانهای getc سرنام get character به معنی کاراکتر را بگیر همانند getchar می ماند اما به جای گرفتن کاراکتر از ورودی استاندارد ( صفحهکلید keyboard ) کاراکتر را از فایل می گیرد . شکل کلی ایجاد تابع getc بدین صورت می باشد :
{{چپچین}}
getc(FILE * Stream)
{{پایان چپچین}}
تابع getc از یک فایل کاراکتری را دریافت کرده و به اولین کاراکتر بعدی می رود . مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main(void)
{
FILE * fp;
int ch;
fp = fopen("mytext.txt", "r");
ch = getc(fp);
while(ch != EOF)
{
putchar(ch);
ch = getc(fp);
}
putchar('\n');
fclose(fp);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
ابتدا فایل mytext را برای خواندن باز می کنیم ، داده صحیح ch با تابع کتابخانهای getc فایل را دریافت می کند و اولین کاراکتر آن را در ch ذخیره کرده و به سراغ کاراکتر بعدی می رود . سپس توسط حلقه while تا زمانی که به پایان فایل نرسیده کاراکتر(های) داخل فایل را نمایش داده و بعد دوباره کاراکتر بعدی را می گیرد . در پایان نیز خط را شکستهایم . که فایل تغییر نکرده و خروجی آن همان 2.71 !Hello World می باشد . تابع getc کاراکتری را که خوانده به صورت یک کاراکتر بدون علامت unsigned char که نقش یک صحیح int را ایفا می کند باز می گرداند و به کاراکتر بعدی در جریان فایل اشاره می کند . در صورت رسیدن به پایان فایل EOF را باز می گرداند و یا اگر مشکلی وجود داشته باشد یک خطا را باز می گرداند که می توان با تابعهای کتابخانهای feof و ferror آن را از هم تشخیص داد و خطای بازگردانده شده را دریافت نمود تا خطا را برطرف کرد . فایل را بسته و تابع اصلی برنامه را با موفقیت به پایان می رسانیم
== تابع putc ==
تابع putc همانند putchar میباشد و سرنام put character است جز اینکه کاراکتر دریافت شده را اخل یک فایل قرار می دهد و منتظر کاراکتر بعدی می ماند تا وارد شود و آن را داخل فایل قرار دهد . شکل کلی ایجاد تابع putc بدین صورت است :
{{چپچین}}
putc(int ch, FILE * stream);
{{پایان چپچین}}
تابع putc یک مقدار کاراکتری را که می تواند از نوع صحیح و یا کاراکتر باشد دریافت نموده و داخل جریان فایل می نویسد . مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main(void)
{
FILE * fp;
char ch;
char brkline = '\n';
fp = fopen("alphabet.txt", "w");
for(ch='A'; ch<='Z'; ch++)
{
putc(ch, fp);
putc(brkline, fp);
}
fclose(fp);
printf("The Operation Has Finished Successfully !\n");
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
در مثال بالا فایلی را با نوع داده FILE به نام fp آماده ایجاد شدن می نمائیم . یک کاراکتر با نام ch را اعلان نموده و کاراکتر brkline را با شکستن خط تعریف می کنیم . سپس با تابع کتابخانهای fopen فایل alphabet.txt به معنی الفبا را برای نوشته شدن می سازیم . با حلقه for از جایی که ch مقدار A دارد تا جایی که مقدار آن به Z برسد ch یک واحد یک واحد افزایش می یابد و به سراغ کاراکتر بعدی می رود . تا putc مقدار ch در فایل مد نظر چاپ می کند و سپس دوباره همین تابع مقدار خط شکسته را وارد می کند تا حروف الفبای انگلیسی در خطوط مجزا در فایلی با نام alphabet در دایرکتوری و فولدری که برنامه قرار دارد ایجاد شده و ذخیره گردند . سپس فایل را می بندیم و در پایان با تابع printf در خروجی خطفرمان چاپ نمودهایم عملیات با موفقیت به پایان رسید .
تابع putc در صورت موفقیتآمیز بودن عملیات خود کاراکتری را که نوشته است باز میگرداند و در صورت عدم موفقیت مقدار EOF را باز میگرداند
== ماکروی مقدار NULL ==
مقدار تهی با تلفظ نُل که آن را نول می نویسیم NULL در فایلهای سرآیند stdio و stdlib و stddef و time و locale و string و wchar تعریف شده است و مقدار اشارهگری است که آن اشارهگر به مکانی غیر قابل دسترسی اشاره می کند تا اگر به اشتباه از آن اشارهگر در برنامه استفاده شد باعث توقف سیستم نشود . حتماً از مبحث اشارهگرها به یاد دارید که اگر اشارهگری را اعلان نمودید و آن را به شکلی تعریف نکردید که به متغیر یا تابع دیگری اشاره کند ، بهتر است آن را با دادن مقدار NULL تعریف کنید . طبق استاندارد عبارت ثابت ;int * ptr = 0 یک اشارهگر NULL است نام آن ( ptr ) دل به خواه است اما اگر یک متغیر صحیح اشارهگر را مقدار 0 به آن بدهید همانند مقدار NULL خواهد بود و غیر قابل دسترسی است و در صورتی که بخواهید آدرس آن را به دست آورید یا در خروجی چاپ کنید و نمایش دهید آدرس آن غیر قابل دسترسی اعلام خواهد شد . مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main(void)
{
int * iptr = NULL;
printf("%p\n", iptr);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
در مثال بالا آدرس اشارهگر ptr غیر قابل دسترسی نمایش داده خواهد شد
طبق استاندارد مشخص نشده است که غیر قابل دسترسی بودن مقدار NULL در کامپایلر و پیادهساز باید چگونه باشد اما مقدار آن :
{{چپچین}}
((void *)0)
{{پایان چپچین}}
تعریف شده است . شما علاوه بر دادن مقدار تهی به اشارهگر در برنامههای بزرگ خود میتوانید در دستور شرطی if بررسی کنید که اشارهگر شما به جایی اشاره کرده است یا خیر که می نویسید if (ptr == NULL) بدین ترتیب مشخص می شود که اشارهگر ptr به جایی اشاره کرده و آدرسی دارد یا خیر . همچنین در ساخت دادههای درختی و لیست پیوندی باید آخرین مقدار آن را تهی تعیین کنید تا پایان دادهها را تعیین کنید
== تابع fputc ==
تابع fputc سرنام file put character همانند putc میباشد و یک کاراکتر را داخل فایل تعیین شده می نویسد و منتظر کاراکتر بعدی می ماند تا آن را وارد کند ( به محل بعدی اشاره می کند ) جز اینکه putc به نحوی در فایل سرآیند تعریف میشود که در هر بار فراخوانی ، فایل فرستاده شده به خود را دوباره می خواند و این مورد در نوشتن برنامه به صورت غیر حرفهای می تواند باعث ایجاد باگ ، مخصوصاً باگ امنیتی و رخنهپذیری شود در حالی که fputc اینگونه نیست و امن می باشد ؛ ضمن اینکه fputc را می توانید به عنوان آرگومان به یک تابع دیگر بفرستید و همچنین فضای حافظه موقت کمتری اشغال می کند ولی fputc کمی کندتر از putc می باشد . شکل کلی ایجاد تابع fputc بدین صورت می باشد :
{{چپچین}}
fputc(int ch, FILE * fp);
{{پایان چپچین}}
ch نام مقداری است که کاراکتر متناظر آن در ازکی ( ASCII ) توسط شما تعیین می شود تا در فایل نوشته شود . همچنین شما می توانید یک کاراکتر را تعریف کنید و به آن بفرستید تا آن را در فایل بنویسد . تابع fputc در صورت عملکرد موفقیتآمیز مقداری را که نوشته است باز می گرداند و در صورت بروز خطا مقدار EOF را می فرستد ؛ همچنین جهت اشکالزدایی مقادیر دیگری را می فرستد که با تابعهای کتابخانهای دیگر stdio همانند بسیاری از تابعهای کتابخانهای ، خطا را در آن بر طرف کنید . مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main ()
{
FILE *fp;
int ch;
int nl = 10;
fp = fopen("alphabet.txt", "w+");
for( ch = 65 ; ch <= 90; ch++ )
{
fputc(ch, fp);
fputc(nl, fp);
}
fclose(fp);
return(0);
}
</syntaxhighlight>
{{پایان چپچین}}
همین برنامه را به صورت زیر نیز می توانیم بنویسیم :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main ()
{
FILE *fp;
char ch;
char nl = '\n';
fp = fopen("alphabet.txt", "w+");
for( ch = 'A' ; ch <= 'Z'; ch++ )
{
fputc(ch, fp);
fputc(nl, fp);
}
fclose(fp);
return(0);
}
</syntaxhighlight>
{{پایان چپچین}}
تشریح این برنامهها تکرار مکررات در همین صفحه است و واضح است که برنامه چگونه عمل می کند ، فقط در اولین قطعه کد مقدار ۶۵ تا ۹۰ کاراکترهای A تا Z در ازکی می باشند و مقدار ۱۰ کاراکتر خط شکسته که در هر بار اجرای حلقه for یک کاراکتر از حروف الفبای انگلیسی و یک کاراکتر خط شکسته نوشته می شود و در دومین قطعه کد دیگر کاراکتر ها را نوشتهایم و نه مقدار آن را
== تابع fgetc ==
تابع fgetc سرنام file get character به معنی کاراکتر را از فایل بگیر همانند getc می باشد و یک کاراکتر را از فایل دریافت می نماید و منتظر کاراکتر بعدی می ماند تا دریافت شود ؛ جز اینکه getc به عنوان یک ماکرو در فایل سرآیند stdio تعریف شده است و با هر بار فراخوانی ، فایل فرستاده شده به خود را دوباره می خواند و اگر کد به درستی نوشته نشود باعث ایجاد باگ مخصوصاً باگ امنیتی و رخنهپذیری می شود ؛ در حالی که fgetc اینگونه نیست و امن می باشد . fgetc را می توانید به عنوان یک آرگومان به تابع دیگری بفرستید و فضای حافظه کمتری را اشغال می کند اما چون fgetc به صورت یک تابع در stdio تعریف شده است کمی کندتر از getc می باشد . شکل کلی ایجاد تابع fgetc بدین صورت می باشد :
{{چپچین}}
fgetc(FILE * stream);
{{پایان چپچین}}
یک فایل را به fgetc می فرستید تا از اولین کاراکتر آن شروع به خواندن کند و منتظر کاراکتر بعدی بماند و به آن اشاره کند تا در ادامه اگر باز هم فراخوانده شد آن را نیز دریافت نماید . تابع fgetc در صورت موفقیتآمیز بودنِ عملکرد خود ، کاراکتری را که خوانده است مقدار عددی صحیح آن را باز می گرداند و در صورت عدم موفقیت EOF را باز می گرداند که با تابعهای feof و ferror که تابعهای تعریف شده در stdio هستید می توان پی برد که فایل به پایان رسیده یا خطایی وجود دارد . مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main ()
{
FILE *fp;
int ch;
fp = fopen("alphabet.txt", "r");
ch = fgetc(fp);
while(ch != EOF)
{
putchar(ch);
ch = fgetc(fp);
}
fclose(fp);
return(0);
}
</syntaxhighlight>
{{پایان چپچین}}
'''توضیح برنامه :''' برنامه یک متغیر از نوع صحیح با نام ch دارد که مقدار آن تابع fgetc با دریافت فایل fp می باشد که اولین کاراکتر فایل alphabet.txt را می خواند ( فایلی که در برنامه قبلی ایجاد کردیم که حروف الفبا را نوشت ) و سپس تا زمانی که ch به آخر فایل نرسیده است ch که کاراکتر alphabet.txt است را بر روی خروجی خطفرمان نمایش داده و سپس دوباره fgetc کاراکتر بعدی را می خواند و در خود ذخیره می کند و در پایان فایل را بسته و تابع اصلی را با موفقیت به پایان رساندهایم
== تابع fputs ==
تابع کتابخانهای fputs سرنام file put string به معنی رشته را در فایل قرار بده یک رشته از کاراکترها را داخل جریان داده و معمولاً فایل فرستاده شده به آن ، می نویسد . شکل ایجاد تابع fputs بدین صورت می باشد :
{{چپچین}}
fputs(const char * str, FILE * stream);
{{پایان چپچین}}
ابتدا یک فایل را آماده ایجاد می کنیم سپس آن را باز کرده و نامی برای آن انتخاب می کنیم و بعد به کمک fputs متنی را داخل آن می نویسیم و سپس فایل را می بندیم تا فضای اشغال شده آزاد شود .ضمناً تابع fputs در صورت موفقیتآمیز بودن عملکرد خود یک مقدار غیر منفی را می فرستد و در صورت خطا EOF را و البته مقادیر دیگری که می توانید توسط ferror و دیگر تابعهای خطا یاب ، خطای آن را بیابید و بر طرف کنید که در ادامه می نویسیم . مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main ()
{
FILE *fp;
fp = fopen("mytext.txt", "w");
fputs("Hello World!\n2.71", fp);
fclose(fp);
return(0);
}
</syntaxhighlight>
{{پایان چپچین}}
'''توضیح :''' همان طور که نوشته شد ، فایلی را آماده کردهایم تا ایجاد شود ( fp ) سپس آن را جهت نوشتن ایجاد نمودهایم ( mytext.txt ) و با تابع کتابخانهای fputs در آن نوشتهایم :
!Hello World<br>
2.71
و البته اگر دقت کنید این بار در ایجاد نوشته و رشته ، خط را شکستهایم . حال اگر با یک پیرایشگر متن ، فایل ایجاد شده را باز کنید ، متن را داخل آن ، مشاهده خواهید نمود
== تابع fgets ==
تابع fgets سرنام file get string به معنی رشته کاراکترها را از فایل بگیر ، جهت دریافت یک خط از متن فایل داده شده می باشد . شکل کلی ایجاد تابع fgets بدین صورت می باشد :
{{چپچین}}
fgets(char * str, int limit number, FILE * Stream);
{{پایان چپچین}}
تابع نام یک رشته را دریافت می کند ، سپس تعداد محدودیت تعداد کاراکترهای دریافتی را می نویسیم و سپس ورودی جریان داده که معمولاً جریان فایل است . تابع تا زمانی که به خط شکسته یا تعداد محدود کننده نوشته شده نرسیده باشد ، فایل را می خواند و آن را ذخیره می کند . تابع fgets در صورت داشتن عملکرد موفقیتآمیز ، یک اشارهگر را به رشته خود باز می گرداند و در صورت رسیدن به پایان خط یا خطا در عملکرد یک مقدار نول NULL را می فرستد که با feof می توان فهمید که به پایان رسیده است یا خیر و در صورت خطا می توان با تابع ferror خطای آن را پیدا نمود . مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main ()
{
FILE *fp;
fp = fopen("mytext.txt", "r");
char str[20];
fgets(str, 20, fp);
puts(str);
fclose(fp);
return(0);
}
</syntaxhighlight>
{{پایان چپچین}}
توضیح : در صورت کامپایل قطعه کد بالا و اجرای آن تنها !Hello World را از فایل mytext.txt در خروجی خطفرمان خواهیم دید ، چرا که 2.71 در خط بعدی و بعد از شکسته شدن خط وجود دارد . فایل mytext.txt ابتدا آماده و سپس برای خوانده شدن باز شده . آرایه کاراکتری str با ۲۰ عنصر ، اعلان شده است . تابع fgets فایل mytext.txt را باز نموده و از آن ۲۰ کاراکتر خط اول را می خواند و در str ذخیره می کند و سپس توسط تابع puts این رشته در خروجی خطفرمان نمایش داده می شود و سپس فایل بسته شده و تابع اصلی ، با موفقیت به پایان می رسد
برای اینکه به صورت مطمئن از fgets متنی را از ورودی استاندارد دریافت کنید باید به شکل زیر عمل کنید ( چرا که با زدن دکمه ورود Enter یا همان Return داخل صفحهکلید ) کاراکتر خط شکسته را به متن اضافه می کند که در صورتی که بخواهید دستوری را بدهید یا نام فایلی را وارد کنید دچار مشکل خواهید شد . مثال :
{{چپچین}}
<syntaxhighlight lang=c>
fgets(filename, 200, stdin);
filename[strcspn(filename, "\r\n")] = 0;
</syntaxhighlight>
{{پایان چپچین}}
'''توضیح :''' تابع fgets داده یا فایلی را با نام filename دریافت میکند که تعداد آن نهایتاً ۲۰۰ تا است و از ورودی استاندارد ، یعنی صفحهکلید ، داده را وارد میکنیم . سپس تابع strcspn که در فایل سرآیند string تعریف شده است هر جا ورودی به خط جدید ( در ویندوز ) و البته خط شکسته ( در تمام سیستم عاملها ) را پیدا کند ، آن را خالی کرده و حذف می کند
== ماکروی نوع داده size_t ==
ماکروی نوع داده size_t سرنام size type به معنی « اندازه نوع » ، اندازه اشیائی همچون آرایهها ، بلوکهای حافظه ، ساختمانها و رشتهها را به بایت در خود ذخیره می کند . اندازه size_t هرچه که باشد منفی نیست . اندازه size_t در C99 شانزده بیت تعریف شد و در حال حاضر حداکثر مقدار ذخیره شده در کامپایلرها و سیستمهای ۳۲ بیتی قدیمی ۲ بایت و در سیستمهای ۶۴ بیت با کامپایلرها و سیستمهای قدیمیتر ۴ بایت و در سیستمهای جدید ۸ بایت است یعنی به اندازه یک int یا یک long long int بدون علامت . اندازه size_t توسط عملگر sizeof به دست میآید . استفاده از size_t به تخصیص حافظه پویا کمک می کند . ضمناً size_t علاوه بر فایل سرآیند stdio در فایلهای سرآیند stddef و stdlib و string و time و wchar تعریف شده است . '''نکته :''' وقتی می خواهید اندازه شیئای را به دست بیاورید بهتر است از size_t استفاده کنید ؛ همچنین برای تعریف اندازههای بزرگ ، جهت قابل حمل بودن برنامه خود بهتر است از size_t استفاده کنید
مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main()
{
int array[5] = { 1, 2, 3, 4, 5 };
size_t size = sizeof(array);
printf("The size of the array is: %zu\n", size);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
'''توضیح :''' در تابع اصلی برنامه ، یک آرایه صحیح به نام array تعریف نمودهایم که ۵ عنصر دارد و هر صحیح ( int ) در سیستمهای ۶۴ بیتی ۴ بایت است . سپس یک نوع داده size_t با شناسه و نام size تعریف نمودهایم که مقدار آن مقدار array است . سپس در تابع printf در خروجی خطفرمان ، چاپ کردهایم اندازه آرایه مورد نظر به اندازه size می باشد که این کار را با تعیینکننده فرمت z به همراه u که سرنام unsigned می باشد نوشته و آرگومان size را به آن فرستادهایم تا جایگزین شود . در پایان ، تابع اصلی برنامه با موفقیت به پایان می رسد و در صورت کامپایل و اجرای برنامه با اندازه آرایه ۲۰ است ، مواجه خواهیم شد ( ۵ عنصر که هرکدام ۴ بایت را اشغال می کند )
'''دقت کنید :''' در تعاریف استانداردهای قدیمیتر مثل C98/C99 ماکروی نوع داده size_t طوری تعریف شده است که تعیینکننده فرمت آن d یا ul یا ull است و نه zu . بنابراین در هنگام نوشتن کد دقت کنید که کامپایلر شما با چه استانداردی ، مطابقت دارد
== تابع fread ==
تابع fread سرنام file read به معنی « فایل را بخوان » فایل فرستاده شده به خود را به تعدادی که تعیین کردهایم و تعداد بایتهایی که باید یکجا خوانده شوند ، در یک متغیر اشارهگر که عموماً باید یک آرایه باشد ذخیره می کند . شکل کلی ایجاد تابع fread بدین صورت می باشد :
{{چپچین}}
fread(void * buffer, size_t size, size_t count, FILE * stream);
{{پایان چپچین}}
فایل stream به تعداد count و اندازه هر یک بلوک از بایتهای size در buffer ذخیره می شود . تابع fread در صورت موفقیتآمیز بودنِ عملکرد خود ، تعداد نوشتههای خود ( count ) را باز می گرداند ولی در صورتی که از تعداد count کمتر شود یعنی خطایی رخ داده و یا به پایان فایل رسیدهایم ( EOF ) . اگر size و یا count را 0 بنویسید تابع مقدار 0 را باز میگرداند اما اختلالی در جریان فایل و یا دادههایی که فرستادهایم ایجاد نمی شود و برنامه به ادامه خود می پردازد . مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main(void)
{
FILE * fp;
char buf[100];
fp = fopen ("alphabet.txt", "r");
fread(buf, 1, 100, fp);
printf("%s\n", buf);
fclose(fp);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
در مثال بالا ابتدا فایل fp را آماده ایجاد نمودهایم . بعد از آن ، رشته ۱۰۰ کاراکتری buf را اعلان نمودهایم . سپس فایل fp را تعیین کردهایم تا توسط تابع fopen برای خوانده شدن باز شود که همان فایل alphabet.txt می باشد . تابع fread صد بایت را دانه به دانه ( چون برای size نوشتهایم 1 ) از فایل fp می خواند و در buf ذخیره می کند . سپس تابع printf آن را در خروجی خطفرمان چاپ می کند که همان حروف الفبای انگلیسی است . سپس فایل را بسته و تابع با موفقیت به اتمام می رسد
در نظر داشته باشید که fread قابلیت خواندن فایلها را به صورت عددی نیز دارد و یکی از مهمترین تابعهای کتابخانهای زبان سی C برای خواندن فایلها به صورت عددی می باشد . مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main()
{
FILE * fp = fopen("/home/lovelorn/Pictures/post-3.jpeg", "rb");
unsigned char n;
for (int i = 0; i < 100; i++)
{
fread(&n, 1, 1, fp);
printf("%d\n", n);
}
fclose(fp);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
در مثال بالا فایل post-3.jpeg از قالب و فرمت JPEG را به صورت عددی باز نمودهایم ( شما میتوانید هر فایلی را که داخل سیستم خود دارید قرار داده و آدرس بدهید ) سپس متغیر کاراکتری بدون علامت n را اعلان نمودهایم تا یک بایت جا را در خود بگیرد . پس از آن با یک حلقه for صد بار تابع fread را فراخواندهایم تا از فایل مورد نظر یک بار یک بایت را بخواند و آن را در n ذخیره کند ؛ دقت کنید که بافر باید یک اشارهگر باشد و چون n اشارهگر نیست ، با عملگر آدرسدهی ، در آن مقادیر را ذخیره کرده و سپس توسط تابع printf در خروجی خطفرمان چاپ نمودهایم . دقت کنید که شما درصورتی که هر واحد را ۴ بایت تعریف کنید هر ۴ بایت یک عدد خوانده می شود و در سیستمهای ۳۲ بیتی قدیمی باید تعیین کننده فرمت lu را بنویسید و در صورتی که داده شما ۸ بایتی باشد که آن را بدون علامت تعیین کنید از فرمت llu و در غیر این صورت با خطای نااندازه بودن حافظه مواجه خواهید شد ( که البته همان طور که در پائین نوشتهایم شما باید دادهها را تبدیل کنید ) . در پایان ، فایل مورد نظر خود را بسته و تابع اصلی برنامه را با موفقیت به پایان می رسانیم . در صورتی که با موفقیت برنامه بالا را کامپایل و اجرا کنید با اعداد ۲۵۵ ، ۲۱۶ ، ۲۵۵ و ... ( وابسته به نسخه استاندارد JPEG ) مواجه خواهید شد ( دقت کنید که اکر تعیینکننده فرمت خود را X بنویسید همانند یک هگزادسیمال ادیتور مقادیر برای شما شانزده شانزدهی و به عبارت دیگر در مبنای ۱۶ نوشته خواهد شد )
'''دقت کنید :''' تابع fread به صورت ویژه برای خواندن فایلها به صورت عددی می باشد و اگر بخواهید یک فایل متنی را عددی بخوانید به مشکلاتی بر می خورید و بهتر است از fscanf و sscanf و یا gets استفاده کنید . همچنین تابع fread مقادیر عددی را که به آن می فرستیم و بزرگتر از ۱ بایت ( برای هر حجم size ) باشد در سیستمهای اندین کوچک ( لیتل اندین Little Endian ) از راست به چپ می خواند و اگر آن را چاپ کنید با عدد برعکس شده ۰ و ۱ آن رو به رو خواهید شد . جهت رفع این مشکل در سیستم عاملهای شبهیونیکس و البته ویندوز تابع ntohs سرنام network to host system به معنی عدد شبکه را به سامانه ( سیستم ) میزبان تبدیل کن ، موجود می باشد ( در شبکه ، اعداد ، اندین بزرگ یا همان بیگ اندین Big Endian هستند ) تا قبل از چاپ نمودن عدد آن را بر عکس کنید تا درست خوانده شود ولی تابع استانداردی برای این کار وجود ندارد
در سیستم عاملهای شبهیونیکس و با رابط پازیکس ( POSIX ) می توانید برنامه را همانند برنامه زیر بنویسید :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
#include <arpa/inet.h>
int main()
{
FILE * fp = fopen("/home/lovelorn/Pictures/post-3.jpeg", "rb");
unsigned short n;
unsigned short rev;
for (int i = 0; i < 100; i++)
{
fread(&n, 2, 1, fp);
rev = ntohs(n);
printf("%d\n", rev);
}
fclose(fp);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
'''دقت کنید :''' گنجایش ntohs فقط ۲ بایت است و چک کنید که در سیستم شما هم short فقط ۲ بایت جا اشغال می کند . اگر در سیستمهای ۳۲ بیتی قدیمی هستید int هم ۲ بایت است . همچنین این مشکل در سیستمهای اندین کوچک ( لیتل اندین Little Endian ) مثل معماریهای x86 یا بعضاً ARM ( که در گذشته دو اندینه بود و در حال حاضر اندین کوچک است ) وجود دارد و در سیستمهای اندین بزرگ ( بیگ اندین Big Endian ) وجود ندارد . از سویی برخی از سیستمها فایل سرآیند netinet/in.h را به جای arpa/inet.h برای استفاده از ntohs نیاز دارند و باید آن را ضمیمه برنامه خود کنید و همچنین در ویندوزهای قدیمی تا نسخه ۸.۱ فایل سرآیند winsock.h و در ویندوزهای جدید باید Winsock2.h را ضمیمه فایل برنامه خود کنید
'''توضیح :''' این برنامه همانند برنامه قبلی نوشته شده است با این تفاوت که نوع داده short را انتخاب نمودهایم که ۲ بایت است و یک متغیر دیگر rev مخفف reversed اعلان نموده و دادههای خود را با ntohs در آن ذخیره نمودهایم و سپس مقدار rev را در خروجی خطفرمان چاپ نمودهایم . اگر مقادیر فایل را ۲ بایت به ۲ بایت به مبنای ۱۰ تبدیل کنید خواهید دید که ارقام و مقادیر صحیح و درست هستند و دیگر برعکس نیستند
== تابع fwrite ==
تابع fwrite سرنام file write به معنی « فایل را بنویس » دادههای تحویل داده شده به تابع را داخل یک فایل می نویسد . شکل کلی ایجاد تابع fwrite بدین صورت می باشد :
{{چپچین}}
fwrite(const void * ptr, size_t size, size_t nmemb, FILE * fp);
{{پایان چپچین}}
یک داده اشارهگر به اندازه بلوکهای بایتی size و به تعداد nmemb در داخل فایل fp نوشته می شود . تابع fwrite در صورت موفقیتآمیز بودنِ عملکرد خود تعداد nmemb را باز خواهد گرداند و در غیر این صورت پیام خطایی را خواهد فرستاد که توسط تابع ferror می توانید ایراد را پیدا کرده و رفع کنید . مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main(void)
{
FILE * fp;
int num[100];
int number;
fp = fopen("myfile.bin", "wb");
for (number = 0; number < 100; ++number)
{
num[number] = number;
}
fwrite(num, 4, 100, fp);
fclose(fp);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
'''توضیح :''' فایل fp آماده ساختن شده است . یک آرایه از نوع متغیر صحیح با ۱۰۰ عنصر و با نام num اعلان شده است . همچنین یک متغیر صحیح با نام number اعلان شده است . تعیین کردهایم که فایلی که می خواهیم به صورت عددی بنویسیم myfile.bin نام دارد و باید ساخته شود و یا بازنویسی شود . با یک حلقه for متغیر number به عنوان اندیس num از مقدار ۰ شروع کرده و تا ۹۹ ادامه می یابد و البته قبل از اجرای حلقه number یک بار افزایش خواهد یافت چون عملگر افزایش پیش از number نوشته شده است . num[0] مقداری نمی گیرد ، بنابراین توسط کامپایلر مقدار 0 را خواهد گرفت . در چهار بایت بعدی num[1] برابر مقدار 1 است و سپس 2 و الی آخر . تابع fwrite متغیر آرایهای num را که ۱۰۰ عنصر ۴ بایتی دارد را هر ۴ بایت به ۴ بایت ، ۱۰۰ بار در فایل fp که همان myfile.bin است می نویسد . سپس فایل را بسته و تابع main را با موفقیت به پایان می رسانیم . برای مشاهده نتیجه ، یک پیرایشگر فایل یا همان پیرایشگر هگزادسیمال ( Hex Editor یا همان Hexadecimal Editor ) نیاز دارید که برای تمام سیستم عاملها موجود است
== تابع ungetc ==
شکل کلی فراخواندن تابع کتابخانهای ungetc که سرنام unget character می باشد به معنی کاراکتر را نگیر بدین صورت است :
{{چپچین}}
ungetc(int ch, FILE * fp);
{{پایان چپچین}}
تابع ungetc بر خلاف getc عمل می کند و تضمین شده است که حداقل یک کاراکتر را که وارد یا خوانده شده است به جریان داده یا جریان فایل بفرستد تا آماده خواندن شود ( دقت کنید که برخی به کارگیرندهها تعداد بیشتری را می فرستند که به ترتیب عکس ذخیره می شود ، یعنی آخرین کاراکتر فرستاده شده ، اولین کاراکتر برای جریان داده یا جریان فایل است که خوانده شود ) همچنین ungetc تنها ورودی getc را به جریان داده و یا فایل باز نمی گرداند و شامل دیگر گیرندهها نظیر scanf نیز می شود . مهم است بدانید که کامپایلر ، کاراکتر تعریف شده توسط ungetc از نوع صحیح int را به نوع داده unsigned char تبدیل می کند . شما می توانید به جای نوشتن متغیری جهت فرستاده شدن به جریان ، یک کاراکتر نوشتاری را نیز بفرستید . نتیجه هر دو این است که زمانی که یک تابع بخواهد از جریان ورودی داده یا فایل ، کاراکتری را بخواند ، کاراکتر فرستاده شده از ungetc را جهت نوشتن به خروجی می فرستد . تابع ungetc در صورت موفقیتآمیز بودن عملکرد خود ، کاراکتری را که به جریان داده و یا فایل فرستاده است ، باز می گرداند و در غیر این صورت مقدار EOF را . اگر ch مقدار EOF را بگیرد ، تنها EOF را باز می گرداند که البته طبق استاندارد نباید به ungetc مقدار EOF را فرستاد . کاراکتری که شما با ungetc بازگشت می زنید برای جریان ، لازم نیست همان کاراکتری باشد که بار آخر ، توسط جریان خوانده شده است و در واقع ضرورتی ندارد که کاراکترهایی را از جریان داده بخوانید که قبل از آن توسط ungetc بازگشت خورده و خوانده نشدهاند . اما این کار در نوشتن برنامه تقریباً بیهوده و عجیب است . معمولاً از ungetc برای نخواندن یک کاراکتر که از همان جریان داده یا فایل برای خواندن استفاده شده ، استفاده می شود . شما مجاز به چند بار استفاده مکرر از ungetc به صورت پشت سر هم بدون تابعهای خواندن از ورودی استاندارد ( صفحه کلید Keyboard ) یا فایل نیستید . اما برخی به کارگیرندهها این اجازه را می دهند . بازگرداندن کاراکترها توسط ungetc فایل را تغییر نمی دهد . اگر از یک تابع جهت تغییر مکان خواندن فایل مثل fseek یا fseeko یا rewind یا حتی fflush ( که در ادامه خواهند آمد ) استفاده شود ungetc نادیده گرفته می شود . نخواندن یک کاراکتر توسط ungetc در فایلی که به انتهای خود رسیده ، علامت انتهای فایل را پاک می کند چون یک کاراکتر را جهت ورود آماده می کند ولی بعد از آنکه کاراکتر را خواندید اگر دوباره بخواهید بخوانید با انتهای فایل EOF مواجه خواهید شد . مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include<stdio.h>
int main(void)
{
int ch = 0;
FILE * fr;
fr = fopen("alphabet.txt", "r");
while(ch != EOF)
{
ch = getc(fr);
putchar(ch);
ungetc(ch, fr);
printf("\n%c", ch);
break;
}
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
'''توضیح :''' یک متغیر که قرار است نقش یک کاراکتر را ایفا کنید با نام ch تعریف کردهایم . فایل fr را آماده ایجاد نمودهایم . سپس توسط تابع fopen فایل alphabet.txt را که در همین صفحه ایجاد کردیم ، چهت خواندن باز می کنیم . سپس حلقه while تا زمانی که به پایان فایل نرسیدهایم ch را توسط getc از فایل fr دریافت می کند و سپس آن را چاپ می کند . تابع ungetc آخرین کاراکتر خوانده شده را به جریان می فرستد . و بعد از آن با تابع printf یک بار خط را شکسته و آخرین مقدار باقیمانده در جریان را که همان A می باشد چاپ می کند . سپس حلقه را می شکنیم چرا که در صورتی که آن را نشکنیم ، مقداری که توسط ungetc به جریان ورودی می فرستد باقی می ماند و تا بی نهایت چاپ می شود A در صورتی که حالا فقط ۲ A در خطهای جداگانه داریم
'''نکته :''' اگر یک یا چند بار دیگر تلاش کنید تا ch را چاپ کنید باز هم با مقدار A رو به رو خواهید شد ؛ چرا که در ذخیرهگاه جریان داده یا فایل ، A ذخیره شده است و ungetc آن را به ذخیرهگاه ( buffer ) که در ادامه نوشته خواهد شد فرستاده است
== تابع fflush ==
شکل کلی فراخواندن تابع fflush سرنام file flush به معنی فایل را خالی کن بدین صورت می باشد :
{{چپچین}}
fflush(FILE * stream)
{{پایان چپچین}}
در کرنل سیستم عامل قسمتی وجود دارد که ذخیرهگاه جریان ورودی/خروجی دادهها و فایلها می باشد که به آن بافر Buffer گفته می شود . با بسته شدن فایل یا خروجی موفقیتآمیز برنامه خود به خود بافر ، تخلیه می شود اما گاهی ممکن است برنامه دچار اشکال شود و متوقف گردیده و بدین صورت فایل نوشته نشود . در این صورت ، اگر شما از تابع کتابخانهای fflush استفاده کرده باشید ، فایل بر روی دیسک و یا خروجی استاندارد نوشته خواهد شد . در استاندارد C تابع fflush برای ورودی ، تعریف نشده است ( و فقط برای خروجی فایل است ) ولی برخی از پیادهسازها از آن پشتیبانی می کنند . اما قبل از اینکه برای ورودی از آن استفاده کنید ، راهنمای کامپایلر خود را مطالعه کنید ؛ چرا که ممکن است با یک رفتار تعریفنشده مواجه شوید . مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main()
{
int c;
FILE * fr;
fr = fopen("alphabet.txt", "r");
c = getc(fr);
ungetc(c, fr);
c = getc(fr);
printf("Character read after ungetc: %c\n", c);
fflush(fr);
c = getc(fr);
printf("Character read after fflush: %c\n", c);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
در مثال بالا یک کاراکتر از فایل الفبا یک بار خوانده می شود . سپس توسط ungetc به ذخیرهگاه ( بافر ) فرستاده می شود . دوباره کاراکتر را دریافت کرده و آن را در خروجی خطفرمان چاپ می کنیم . حالا از تابع fflush برای خالی کردن ذخیرهگاه استفاده می کنیم و بار دیگر از فایل می خوانیم و آن را در خروجی خطفرمان چاپ می کنیم که عملاً هیچ چیز نیست . چون ذخیرهگاه خالی شده است ( یعنی ungetc بی اثر شده است )
مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int * program_crash = 0;
int main(void)
{
FILE * fp;
fp = fopen("testfile.txt", "w");
printf("Enter a number : \n");
int num = 0;
scanf("%d", &num);
fprintf(fp, "The number is : %d\n", num);
fflush(fp);
*program_crash = 5;
fclose(fp);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
در مثال بالا یک اشارهگر خالی تعریف نمودهایم . سپس فایلی را با نام testfile.txt به معنی فایل امتحانی با پسوند txt سرنام text به معنی متن ساده آماده نوشتن کردهایم . سپس در خروجی خطفرمان ، چاپ نمودهایم تا کاربر یک عدد را وارد کند . عدد را دریافت نموده و سپس توسط تابع fprintf در فایل مورد نظر نوشتهایم : The number is و سپس عدد وارد شده توسط کاربر را که همان num می باشد در فایل خواهیم نوشت به معنی عدد وارد شده شما اینقدر می باشد . پس از آن ذخیرهگاه را تخلیه نمودهایم تا هر آنچه در ذخیرهگاه فایل موجود است نوشته شود . سپس به اشارهگر program_crash مقدار غیر استاندارد 5 را دادهایم که مجاز به این کار نیستیم ( مراجعه شود به مبحث اشارهگرها در فصل دادهها ) و برنامه متوقف می شود . اما فایل ما با موفقیت نوشته شده است و شما می توانید آن را در یک پیرایشگر متن مشاهده کنید . تابع fflush در صورت موفقیتآمیز عمل کردن مقدار 0 را باز می گرداند و مقدار EOF نشانگر وجود یک اختلال است که موفقیتآمیز عمل نکرده است . با نوع داده ماکروی errno می توانید مقادیر اضافهتری دریافت کنید که نشان می دهد خطای ایجاد شده از کجاست تا آن را بر طرف کنید
'''نکته :''' پیام خطای Segmentation Fault که به نام Core Dump نیز معروف است زمانی رخ می دهد که بر روی حافظه ضروری کرنل بخواهیم چیزی بنویسیم و یا دادهای را وارد حافظه کنیم که اندازه آن بزرگتر از مقدار حافظه می باشد
== تابع remove ==
این تابع کتابخانهای ، همان طور که از اسمش پیداست فایلی را که به آن بفرستیم ، حذف می کند . شکل کلی ایجاد تابع remove بدین صورت می باشد :
{{چپچین}}
remove(const char* filename);
{{پایان چپچین}}
داخل جفت پرانتزهای باز و بسته تابع ، یک رشته می نویسیم که نام فایلی است که می خواهیم حذف شود . مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main(void)
{
remove("testfile.txt");
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
حتماً به یاد دارید که یک فایل در دایرکتوری کامپایلر ( فولدر کامپایلر ) به نام testfile.txt ایجاد نمودیم . حال اگر برنامه بالا را بنویسید و آن را کامپایل کرده و اجرا کنید ، فایل مذکور حذف می شود . تابع remove در صورت موفقیتآمیز بودن عملکرد خود مقدار 0 را باز می گرداند و یک مقدار غیر 0 در صورت وجود اختلال . با استفاده از نوع داده ماکروی errno می توانید مقادیر اختلال و مشکل را دریافت نموده و اختلال را رفع کنید
== تابع rename ==
تابع کتابخانهای rename نیز همان طور که از نامش پیداست ، برای یک فایل یا دایرکتوری ( فولدر ) ، نام جدیدی را که به آن دستور دادهایم قرار می دهد و نام آن را عوض می کند . شکل کلی ایجاد تابع rename بدین صورت می باشد :
{{چپچین}}
rename(const char * oldfilename, const char * newfilename);
{{پایان چپچین}}
ابتدا نام فایلی را که موجود است می نویسیم و سپس نام فایل جدیدی را که قرار است پس از تعویض داشته باشد می نویسیم . این تابع ، در صورت عملکرد موفقیتآمیز خود مقدار 0 را باز می گرداند و در صورت اختلال مقدار دیگری را که البته با نوع داده ماکروی errno با مقدار بازگردانده شده ما می توانیم اختلال را بر طرف کنیم . دقت کنید که برخی پیادهسازها و سیستم عاملها به شما اجازه می دهند تا در صورتی که آدرسی دیگر ، نسبت به فایل موجود بنویسید ، آن را نام نویسی جدید نمایند و آن را انتقال دهند به دایرکتوری و آدرس داده شده در حالی که مابقی خطا می گیرند ؛ همین طور برخی اجازه می دهند تا اگر نامی که می خواهید بدهید در دایرکتوری موجود است آن را جایگزین فایل مشابه کنید و مابقی این اجازه را نمی دهند و خطا می گیرند . مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main()
{
rename("oldfile.txt", "newfile.txt");
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
یک فایل متنی با نام oldfile ایجاد کرده و در صورت تمایل ، داخل آن ، متنی بنویسید و سپس برنامه بالا را نوشته و کامپایل کرده و اجرا کنید . نام آن به newfile.txt تغیییر پیدا خواهد نمود
== تابع fseek ==
تابع fseek سرنام file seek به معنی جستجو در فایل ، جهت اشاره به قسمت معینی از فایل است که بخواهیم در آن چیزی بنویسیم یا آن را بخوانیم . شکل کلی ایجاد تابع fseek بدین صورت می باشد :
{{چپچین}}
fseek(FILE * filepointer, long int offset, int position);
{{پایان چپچین}}
تابع fseek ابتدا اشارهگر فایل را پذیرا می باشد ؛ سپس باید تعداد جایگاهی که می خواهیم جا به جایی در فایل صورت بگیرد (offset) را می نویسیم و در پایان مقادیر از پیش تعیین شده ( position ) استاندارد فایل را می نویسیم که در هر دفعه فقط می تواند یکی از مقادیر زیر باشد :
{{چپچین}}
SEEK_SET
{{پایان چپچین}}
برای رفتن به ابتدای فایل
{{چپچین}}
SEEK_CUR
{{پایان چپچین}}
سرنام Seek Current که می شود همان جایی که فایل در حال استفاده بوده است ، به همان جا اشاره کند و فایل را آماده استفاده نماید
{{چپچین}}
SEEK_END
{{پایان چپچین}}
که به پایان فایل می رود
'''نکته :''' در صورتی که به ابتدای فایل بروید و بعد مقداری را بدهید که به عقب بازگردید ( یعنی عدد منفی بنویسید ) اجرای تابع ناموفق خواهد بود ؛ ضمناً اگر به انتهای فایل بروید و بخواهید مقداری بدهید که به جلوتر برود و دادههایی را بنویسید طبق استاندارد به انتهای فایل ، مقادیر تهی ( 00 در شانزده شانزدهی Hexadecimal ) و مقادیر متناظر در مبناهای دیگر به آخر فایل اضافه می شود
'''دقت کنید :''' بهتر است در صورتی که نمی خواهید عدد خیلی بزرگی که در نوع داده بلند long جا می شود را بنویسید حتماً از تعیین کننده نوع L جهت تعیین بزرگی عدد استفاده کنید و توصیه می شود حتی برای اعداد بزرگ نیز استفاده کنید تا دچار خطایی نشوید
تابع fseek در صورت موفقیتآمیز عمل کردن ، مقدار 0 را باز می گرداند و در صورت بازماندن از عملکرد درست ، مقدار غیر صفر را باز می گرداند
مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main(void)
{
FILE * fp = fopen("test.txt", "r");
fseek(fp, 5L, SEEK_SET);
char str[15];
fgets(str, 15, fp);
printf("%s\n", str);
fclose(fp);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
یک فایل متنی را با متن ! This is a test file ایجاد کنید ( در صورت تمایل از متن دیگری استفاده کنید ) و حتماً فایل را در دایرکتوری و یا فولدری که برنامه کامپایل می شود ذخیره کنید ؛ در غیر این صورت در باز کردن فایل ، آدرس آن را بنویسید . سپس قطعه کد بالا را در یک فایل با پسوند c ذخیره کرده و پس از کامپایل اجرا کنید . فایل test.txt جهت خوانده شدنِ متنی ، باز شده است . سپس تابع fseek به ابتدای فایل رفته و ۵ کاراکتر ( و در فایلهای دودویی ، بایت ) به جلو می رود . آرایه کاراکتری str که همان رشته می باشد با ۱۵ عنصر اعلان شده است . سپس توسط تابع fgets از رشته مورد نظر ۱۵ کاراکتر را از فایل fp که همان فایل test.txt می باشد خواندهایم و آن در در خروجی خطفرمان چاپ کردهایم . در پایان ، فایل خودمان را بستهایم . اگر این قطعه کد را کامپایل و اجرا کنید با متن ! is a file مواجه خواهید شد ( چرا که This چهار کاراکتر دارد و جلوی آن نیز یک فاصله خالی وجود دارد که می شود ۵ تا و ما ۵ کاراکتر در فایل ، جلو رفتهایم و کاراکترهای قبلتر خوانده نشدهاند )
== تابع ftell ==
تابع ftell سرنام file tell به ما جایی که در حال حاضر ، فایل تعیین شده ، قرار دارد ( برای نوشتن یا خواندن ) اعلام می کند . شکل کلی ایجاد تابع ftell بدین صورت می باشد :
{{چپچین}}
ftell(FILE * filepointer);
{{پایان چپچین}}
تابع ftell در صورت موفقیت آمیز بودن عملکرد خود ، شماره بایتی که فایل در حال استفاده است را باز می گرداند و در صورت عملکرد ناموفق مقدار منفی یک را یعنی 1- . مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main ()
{
printf("Enter file name :\n");
char name[200];
scanf("%s", name);
FILE * fp;
fp = fopen(name, "rb");
fseek(fp, 0L, SEEK_END);
long size = ftell(fp);
printf("%ld\n", size);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
در مثال بالا از کاربر خواستهایم تا نام فایل را وارد کند . آرایه کاراکتری name با ۲۰۰ عنصر اعلان شده تا نام فایل ، در آن ذخیره شود . با تابع scanf نام را از کاربر می گیریم . سپس ماکروی نوع داده FILE یک اشارهگر فایل را با نام fp آماده ایجاد شدن کرده است . با تابع fopen اشارهگر فایل fp فایلی را با نام name برای خوانده شدن دودویی ( باینری ) باز می کند . با تابع fseek به انتهای فایل می رویم و پیش روی نیز نمی کنیم ( 0L ) سپس چون نوع داده تاع ftell از نوع بلند long است یک داده بلند با نام size ایجاد نمودهایم تا وقتی به انتهای فایل رفتیم و جایگاه اشاره به فایل را بررسی نمودیم ، به این شکل ، اندازه ( size ) فایل را به دست بیاوریم . در پایان با printf همان اندازه را در خروجی خطفرمان ، چاپ نمودهایم . یکی از متداولترین استفادههای ftell میزان عملیات بر روی فایل است ؛ عملیاتی مثل کپی کردن . وقتی کپی می کنید مدام با حلقه هم می خوانید و هم هر چه نوشتید بررسی می کنید تا ببینید چند در صد فایل ، نوشته شده است ( نسبت به اصل فایل که می خواهید آن را کپی کنید و اندازه آن را به دست آوردهاید )
== تابع rewind ==
تابع کتابخانهای rewind به معنی بازگرد به ابتدا ، جهت بازگرداندن اشارهگر جریان فایل به ابتدای آن است . شکل کلی فراخوانی تابع rewind بدین صورت است :
{{چپچین}}
rewind( FILE * filepointer );
{{پایان چپچین}}
مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main()
{
FILE * fp;
fp = fopen("mytext.txt", "r");
int text;
while((text=fgetc(fp)) != EOF)
{
printf("%c", text);
}
rewind(fp);
text=fgetc(fp);
printf("Read character is : %c\n", text);
fclose(fp);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
در مثال بالا ، فایل متنی mytext که قبلاً آن را ایجاد نمودیم ( با پسوند txt ) را جهت خواندن ، باز می کنیم . سپس یک صحیح با شناسه text اعلان نمودهایم تا با تابع fgetc تا زمانی که به انتهای فایل نرسیدهایم آن را بخوانیم و با تابع printf آن را در خروجی خطفرمان ، چاپ کنیم . سپس به ابتدای فایل برگشته ( توسط همین تابع ، یعنی rewind ) و یک کاراکتر را که اولین آن خواهد بود میخوانیم و آن را با printf در خروجی خطفرمان ، چاپ میکنیم که همان H است . سپس فایل را بسته و تابع اصلی برنامه ( main ) را با موفقیت به پایان می رسانیم
'''دقت کنید :''' تابع rewind هیچ مقداری را باز نمی گرداند ( چه در صورت موفقیت و چه در صورت وجود خطا ) و همچنین تمام دادههای پیدا کردن خطا در عملکرد آن و خواندن یا نوشتن فایل را پاک می کند . بنابراین توصیه می شود که برای بازگشتن به ابتدای فایل نیز همچنان از fseek استفاده کنید
== تابع ferror ==
تابع کتابخانهای ferror سرنام find error به معنی خطا را بیاب ، اگر در جریان داده فایل ، هنگام خواندن یا نوشتن ، خطایی رخ دهد مقداری را بازگردانده و نشانگر خطا را با مقداردهی ماکروی errno تعیین می کند تا برنامهنویس بتواند خطا را برطرف کند . تابع ferror در صورت موفقیتآمیز بودن عملکرد خود ( یعنی خطایی در جریان داده فایل موجود نباشد ) ، مقدار 0 را باز میگرداند و در غیر این صورت ( یعنی وجود خطا ) مقداری غیر 0 را باز خواهد گرداند . شکل کلی فراخوانی تابع ferror بدین صورت است :
{{چپچین}}
ferror(FILE * stream);
{{پایان چپچین}}
مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main()
{
FILE * fp;
fp = fopen("myexample.txt", "w");
if (fp == NULL)
{
printf("File doesn't exist\n");
return 1;
}
fputs("This is an example\n", fp);
fclose(fp);
fputs("This text won't be written on file\n", fp);
if (ferror(fp))
printf("Error during writing to file\n");
fp = fopen("myexample.txt", "a");
fputs("This will append to the end of file\n", fp);
if (ferror(fp))
printf("Error during writing to file\n");
else
printf("The writing operation was successful\n");
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
در مثال بالا در هنگام کامپایل ، احتمالاً کامپایلر به شما هشدار خواهد داد که اشارهگر فایل ، پس از بسته شدن فایل ، مورد استفاده قرار گرفته است . اما این مثال ساده ، فقط جهت درک کارآمدی تابع ferror می باشد . '''توضیح :''' ابتدا با اشارهگرِ نوع داده FILE ، فایل fp را آماده ایجاد شدن نمودهایم . سپس fp فایلی متنی را با نام myexample.txt جهت ایجاد و نوشتن ، بازکرده است . چک کردهایم که اگر فایل به هر دلیلی موجود نیست ( NULL ) پیغام خطای فایل موجود نیست را در خروجی خطفرمان ، چاپ کند و برنامه با عدم موفقیت ، به اتمام برسد . سپس داخل فایل خود نوشتهایم This is an example یعنی این یک مثال است و خط را شکستهایم . سپس فایل را بستهایم و نوشتهایم This text won't be written on file یعنی این متن در فایل نوشته نخواهد شد ( چرا که فایل را بستهایم و دیگر نمیتوانیم در آن ، بنویسیم یا حتی آن را بخوانیم ) . سپس با دستور if چک کردهایم که اگر ferror مقداری دارد ( که یعنی خطایی رخ داده ) در خروجی خطفرمان ، چاپ کنید : خطایی در حین نوشتن در فایل وجود دارد . ( چون فایل ، بسته شده است ) که همین اتفاق ، رخ خواهد داد . سپس دوباره فایل را جهت اضافه نمودن ( a که همان طور که در بالاتر نوشتیم سرنام append است ) باز کردهایم و نوشتهایم : This will append to the end of file یعنی این متن در ادامه فایل ، اضافه خواهد شد . سپس دوباره با تابع ferror چک کردهایم که آیا خطایی وجود دارد یا خیر که در صورت وجود خطا چاپ کند : Error during writing to file یعنی در هنگام نوشتن در فایل ، خطایی رخ داده است و خط را بشکند اما خطایی وجود نخواهد داشت ( مگر اینکه فایل را پاک کنید یا قفل کنید یا سیستم عامل شما مخصوصاً در صورت آلوده بودن ، فایل را قفل کند ) و در غیر این صورت چاپ کند : The writing operation was successful یعنی عملیات نوشتن با موفقیت ، انجام شد . سپس برنامه با موفقیت به پایان می رسد
'''دقت کنید :''' در صورتی که چک نکنید اشارهگرِ فایل ، تهی است ( NULL ) و ferror با خطای NULL مواجه شود ، رفتاری تعریفنشده بروز خواهد داد و البته برخی کامپایلرها به جدای از استاندارد ، ماکروها و توابعی را در نظر گرفتهاند تا این خطا را شناسایی کرده و بر طرف کنید ولی بهتر است همیشه در ابتدا چک کنید که فایل موجود است و اشارهگرِ فایل ، تهی نیست
'''دقت کنید :''' تابع ferror خطای جریان داده آخرین فایل باز شده را بررسی کرده و نشانگر خطا را مقداردهی میکند و در صورتی که فایل را ببندید یا از تابع rewind یا تابع clearerr که به معنی خطا را پاک کن می باشد ، استفاده کنید نشانگر خطا خالی می شود ( تابع clearerr را در ادامه همین مبحث ، می نویسیم )
== ماکروی مقدار EOF ==
ماکروی مقدار EOF سرنام End Of File به معنی پایان سند یا همان فایل ، مقداری است که اگر بازگردانده شود ؛ یعنی تابع ( مثل getc یا fread ) جهت خواندن سند ، به انتهای آن رسیده است و یا بعضاً در همان تابعها خطایی در خواندن فایل ایجاد شده است . مقدار بازگردانده شده توسط EOF طبق استاندارد باید یک صحیح منفی باشد اما مقدار دقیق آن ، تعیین نشده است اما بسیاری از پیادهسازها ( کامپایلرها ) مقدار منفی یک 1- را باز میگردانند . برنامهنویسان میتوانند از ماکروی EOF جهت خواندن کامل و صحیح اسناد یا همان فایلها استفاده کنند که تا به همین جای مبحث چند بار از آن استفاده نمودهایم و شما نیز آنها را دیدهاید . ماکروی EOF هم در stdio تعریف شده است و هم در stdlib که موضوع بعدی کثاب است و فرقی با هم ندارند ( تعریف EOF )
مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include<stdio.h>
int main(void)
{
FILE * fr = fopen("test.txt", "r");
int ch;
ch = getc(fr);
while(ch != EOF)
{
putchar(ch);
ch = getc(fr);
}
printf("\n");
fclose(fr);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
در مثال بالا که همانند مثال دیگری در همین مبحثِ stdio میباشد یک کاراکتر از فایل test.txt را که پیشتر ایجاد نمودیم می خوانیم و سپس توسط حلقه while تا زمانی که مقدار متغیر ch انتهای سند نیست ، مرتب یک کاراکتر که دریافت شده را در خروجی خطفرمان چاپ می کنیم و سپس کاراکتر بعدی را می خوانیم تا جایی که به انتهای سند می رسیم که شرط حلقه برقرار نیست و حلقه می شکند که در خروجی خطفرمان چاپ می شود : ! This is a test file که محتوای سند test.txt می باشد ( که پیشتر آن را در همین مبحث ایجاد نمودیم ) . سپس خط را شکسته ، پرونده را میبندیم و تابع main را با موفقیت به پایان می رسانیم
'''دقت کنید :''' استفاده از تابعهای rewind و fsetpos و fseek یا clearerr ماکروی مقدار EOF را پاک می کنند
== تابع feof ==
تابع feof سرنام find end of file ماکروی مقدار EOF را در تابعهایی که آن را باز می گردانند بررسی می کند تا پیدا کند که آیا واقعاً به پایان فایل رسیدهایم یا نه . اگر به پایان فایل رسیده باشیم ، مقداری غیر 0 را باز می گرداند و در غیر این صورت مقدار 0 را . دقت کنید که یک خطای مرسوم وجود دارد که برای کنترل یک حلقه از ()feof! استفاده می شود تا بررسی شود که تا زمانی که به پایان فایل نرسیدهایم ، توسط تابعهای مربوطه ، فایل خوانده شود اما چون feof بررسی می کند که بعد از انتهای فایل ، می شود خواند یا نه ، این خطر وجود دارد که یک داده اضافه و زباله ، خوانده شود و یا خطایی ایجاد شود که شما را گمراه کند . شکل کلی فراخوانی تابع feof بدین صورت می باشد :
{{چپچین}}
feof(FILE * stream);
{{پایان چپچین}}
که اشارهگر فایل را به آن می فرستیم ( فایلی که توسط برنامه ، باز شده و در حال خوانده شدن است )
مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include<stdio.h>
int main(void)
{
FILE * fr = fopen("test.txt", "r");
int ch;
ch = getc(fr);
while(1)
{
if(feof(fr))
break;
putchar(ch);
ch = getc(fr);
}
fclose(fr);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
'''توضیح :''' فایل fr را با تابع fopen که فایل test.txt می باشد جهت خوانده شدن به صورت متنی ، باز نمودهایم . سپس یک کاراکتر از آن را خواندهایم . بعد از آن با حلقه بی نهایت while ( که مقدار 1 را در آن گذاشتهایم تا همیشه صحیح و برقرار باشد ) ابتدا بررسی نمودهایم که اگر feof مقدار دارد ( چون fr را می خواند ) که یعنی به پایان فایل رسیدهایم ( مقدار غیر 0 ) بشکند که اگر شرط برقرار نباشد ادامه خواهد یافت و کاراکترِ خوانده شده را در خروجی خطفرمان نمایش خواهد داد و سپس به سراغ کاراکتر بعدی می رود که این حلقه یک جا به پایان فایل می رسد و feof مقدار 0 را باز می گرداند . در ادامه فایل fr را بسته و تابع اصلی برنامه را با موفقیت به پایان رساندهایم
== تابع clearerr ==
تابع clearerr سرنام clear error به معنی نشانگر خطا را خالی کن یا پاک کن ، مقدار خطای errno برای نوع خطای خواندن یا نوشتن در فایل و EOF برای انتهای فایل را برای اشارهگرِ فایلی که به آن فرستاده شده ، خالی و پاک می کند . زمانی که در خواندن یا نوشتن فایل ، خطایی رخ می دهد یا به انتهای فایل می رسیم نشانگر خطا و انتهای فایل ( به ترتیب برای هرکدام یعنی errno و EOF ) ایجاد و مقداردهی می شوند ( به اصطلاح سِت می شوند ) ، برای اینکه بعد از رفع خطا و یا بعد از رسیدن به انتهای فایل ، در ادامه فایلِ مورد استفاده ، دادههایی را بنویسیم و دوباره خطایابی کنیم یا بررسی کنیم که به انتهای فایل رسیدهایم یا نه باید نشانگر خطای فایل یا انتهای فایل را پاک کرده و دوباره به کار خود ادامه دهیم که این کار را می توانیم توسط تابع clearerr انجام دهیم . نشانگر خطا و یا انتهای فایل پس از مقدار یافتن در برنامه ، باقی می مانند و گفتیم که اگر فایل را ببندیم یا از fseek استفاده کنیم ، نشانگر خطا پاک می شود ؛ ولی این روش حرفهای برای پاک کردن و خالی کردن نیست ؛ چون بهتر است خطا یا انتهای فایل را ابتدا پیدا نموده ، رفع خطا کنیم و در ادامه فایل ، چیزی بنویسیم و سپس آنها را خالی کرده و به ادامه کار خود در مورد فایل بپردازیم که برای این کار بهتر است از تابع clearerr استفاده کنیم . تابع clearerr هیچ مقداری را باز نمی گرداند . شکل کلی فراخوانی تابع clearerr بدین صورت می باشد :
{{چپچین}}
clearerr(FILE * Stream);
{{پایان چپچین}}
مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include<stdio.h>
int main(void)
{
FILE * fr = fopen("test.txt", "r");
if(fr == NULL)
{
printf("File not found\n");
return 1;
}
int ch;
ch = getc(fr);
while(ch != EOF)
{
putchar(ch);
ch = getc(fr);
}
printf("We Reached EOF\n");
clearerr(fr);
if(feof(fr) != 0)
printf("EOF still set\n");
else
printf("EOF is cleared\n");
fclose(fr);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
'''توضیح :''' فایل test.txt را که پیشتر ایجاد نمودیم جهت خوانده شدن به صورت متنی ، باز می کنیم . چک می کنیم تا در صورت عدم وجود ، در خروجی خطفرمان ، چاپ شود : فایل موجود نیست و تابع main با خطا پایان یابد . متغیر ch را از نوع صحیح ایجاد نموده و یک کاراکتر از فایل خود را خوانده و در آن ذخیره می کنیم . سپس تا زمانی که به پایان فایل نرسیدهایم فایل test را به صورت کاراکتری ، یک به یک ، خوانده و در خروجی خطفرمان ، چاپ می کنیم . سپس چاپ کردهایم به پایان فایل رسیدهایم ( همان EOF ) سپس تابع clearerr را فراخواندهایم تا ماکروی علامت EOF پاک شود . سپس چک کردهایم تا اگر EOF وجود دارد و feof مقدار 0 ندارد چاپ شود EOF still set یعنی علامت پایان فایل همچنان سِت شده است و در غیر این صورت چاپ کند EOF is cleared یعنی علامت پایان فایل پاک شده است که همین طور است ؛ چون با clearerr ماکروی علامت EOF پاک شده است و feof مقدار 0 را می گیرد ( یعنی به پایان فایل نرسیدهایم که البته رسیدهایم و این تمرین مناسبی نیست ، مگر آنکه در ادامه سند یا همان فایل بخواهید متن یا مقادیر دیگری بنویسید ) سپس فایل را بسته و تابع main را با موفقیت به پایان رساندهایم
== ماکروی stderr ==
ماکروی stderr سرنام standard error یکی دیگر از ماکروهای استاندارد ورودی و خروجی همانند stdin و stdout است که برای چاپ پیام خطا در خروجی خطفرمان به کار می رود و می توان از تابعهایی که در خروجی فایل متنی می نویسند استفاده کرد تا به جای نوشتن خطا در فایل ، آن را در خروجی خطفرمان چاپ کند . همانند تابع perror سرنام print error که در همین مبجث آن را می نویسیم و مخصوص چاپ پیام خطاست و هیچ آرگومانی نمی پذیرد ، stderr نیز برای چاپ پیام خطاست . ما می توانیم هر متن خطایی را که خواستیم با stdout آن را چاپ کنیم اما تفاوت stdout و stderr در این است که stdout در بافر buffer سیستم عامل ، ذخیره می گردد اما stderr در بافر نوشته نمی شود و تنها در ترمینال سیستم عاملهای مبتنی بر یونیکس یا شبهیونیکس و خطفرمان command prompt ویندوز وجود دارد و به محض بسته شدن آن ، تمام محتوای آن ، پاک می شود . مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include<stdio.h>
int main(void)
{
fprintf(stderr, "This is an error\n");
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
توضیح این مثال بسیار ساده است و ما با تابع کتابخانهای fprintf که در فایل متنی می نویسد ، در خروجی خطفرمان ، چاپ کردهایم : این یک خطاست و خط را شکستهایم اما '''دقت کنید''' که تابع ، دیگر آرگومانی نمی تواند بپذیرد و به جای اشارهگر فایل خود می نویسیم stderr
== ماکروی نوع داده fpos_t و تابعهای fgetpos و fsetpos ==
در سیستم عامل قدرتمندی همچون گنو/لینوکس fseek که پیشتر آن را نشریح کردیم می تواند تعداد کاراکترها را نیز در فایل متنی بخواند و به همان جا اشاره کند . اما سیستم عاملهای دیگری نظیر ویندوز در گذشته این قابلیت را نداشتند . ضمناً برخی از فایلها حجمشان از تعداد بایتهای قابل ذخیره در یک صحیح بلند long int بیشتر است . برای همین در استانداردهای C 98/99 و نوینتر از آن ، نوع داده fpost_t به عنوان یک ماکروی نوع داده شیئ کامل تعریف شد که یک آرایه نیست و می تواند به یک رکورد اشاره کند ؛ '''نکته :''' در دانش برنامهنویسی ، یک آرایه ، مجموعهای از عناصرِ فقط یک نوع داده است اما یک رکورد می تواند مجموعهای از عناصرِ انواع مخلف باشد که هر کدام ، یک نام دارند و از طریق آن نام ، می توان به محتوای آن دسترسی پیدا کرد .
ماکروی نوع داده شیئ کامل fpost_t یک داده را اعلان می کند که به انتهای فایل اشاره می کند . پس از آن تابع fgetpos هر جا که در فایل بنویسیم یا از آن بخوانیم و داده اعلان شده را در آن ، قرار دهیم به داده اعلان شده مقدار می دهد و هر جا که تابع fsetpos را به همراه داده مقداردهی شده به کار ببریم ، اشارهگر فایل را به همان جا می برد . شکل کلی استفاده از این ماکرو و تابعها بدین صورت می باشد :
{{چپچین}}
fpos_t pos;
{{پایان چپچین}}
نام pos یک نام اختیاری برای fpos_t است که سرنام file position type و به معنی نوع جای فایل ، می باشد
{{چپچین}}
fgetpos(FILE *stream, fpos_t *pos);
{{پایان چپچین}}
تابع کتابخانهای fgetpos سرنام file get position به معنی جای فایل را به دست بیاور ، یک اشارهگر به فایل را به همراه داده اعلان شده توسط fpos_t می گیرد و آن را مقداردهی می کند . این تابع در صورت موفقیت آمیز بودن عملکرد خود ، مقدار 0 را باز می گرداند و در غیر این صورت مقداری دیگر را باز می گرداند و ضمناً متغیر خطایاب errno را مقداردهی می کند که مقدار آن در هر پیادهساز ، تعریف خود را دارد
{{چپچین}}
fsetpos(FILE *stream, fpos_t *pos);
{{پایان چپچین}}
تابع کتابخانهای fsetpos سرنام file set position به معنی جای فایل را قرار بده ( ست کن ) ، یک اشارهگر به فایل را به همراه داده مقداردهی شده توسط fgetpos می گیرد و نمایانگر یا همان اشارهگر فایل را به همان جا می فرستد . دقت کنید که پیش از استفاده از fgetpos باید با fgetpos جای فایل را تعیین کنید ، در غیر این صورت نمی توانید به درستی از آن استفاده کنید و در برنامه شما خطایی رخ می دهد چرا که جای فایل ، تعیین نشده است . این تابع ، در صورت موفقیتآمیز بودن عملکرد خود مقدار 0 را باز می گرداند و EOF را پاک می کند و ضمناً تمام کاراکترهایی که توسط ungetc به عقب رانده شدهاند را نادیده می گیرد و در غیر این صورت مقداری غیر از 0 را باز می گرداند و متغیر خطایاب errno را مقداردهی می کند
مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main(void)
{
FILE * fp;
fp = fopen("example.txt", "w+");
if(fp == NULL)
{
printf("Error during open file\n");
return 1;
}
fputs("1st sentence\n2nd sentence\n3rd Sentence", fp);
fpos_t pos;
rewind(fp);
char str[25];
fgets(str, sizeof(str), fp);
printf("1 : %s", str);
fgetpos(fp, &pos);
fgets(str, sizeof(str), fp);
printf("2 : %s", str);
fsetpos(fp, &pos);
fgets(str, sizeof(str), fp);
printf("After getting same position : %s", str);
fgetpos(fp, &pos);
fgets(str, sizeof(str), fp);
printf("3 : %s", str);
fclose(fp);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
:توضیح : در مثال بالا فایلی به نام example.txt را جهت نوشتن و خواندن متنی ، ایجاد نمودهایم . سپس در آن نوشتهایم : جمله اول ، جمله دوم و جمله سوم ؛ که در هر کدام خط را شکستهایم . سپس fpos_t یک داده را به نام pos اعلان کرده است که به انتهای فایل ، اشاره می کند . پس به ابتدای فایل باز می گردیم ( با تابع rewind ) . با نوشتن شماره ۱ ، جمله اول را در خروجی خطفرمان ، چاپ کردهایم .
:پس اشارهگر فایل به ابتدای خط دوم می رود و با fgetpos آن را مقداردهی کردهایم تا ابتدای خط دوم مقدار pos شود . خط دوم را خواندهایم و در خروجی خطفرمان ، چاپ کردهایم : ۲ : جمله دوم . سپس با fsetpos مقداری را که fgetpos تعیین کرده بود برای pos تعیین می کنیم که همان ابتدای خط دوم است و دوباره خط دوم را خوانده و در خروجی خطفرمان چاپ کردهایم : بعد از رسیدن به همان جا : خط دوم .
:ما به ابتدای خط سوم می رسیم اما هنوز pos مقدار دهی مجدد نشده است دوباره با fgetpos مقدار pos را به روزرسانی کردهایم که ابتدای خط سوم است و از فایل خود ، خط سوم را خوانده و در خروجی خطفرمان چاپ می کنیم : ۳ : جمله سوم .
:البته این کار ضروری نیست ، چون به خودی خود ، pos به ابتدای خط سوم اشاره می کند اما اگر بخواهیم حتما به جای خاصی از فایل برویم باید با fgetpos مقدار pos را به روزرسانی کنیم . در پایان فایل را بسته و تابع اصلی برنامه را با موفقیت به پایان می رسانیم
== نکته : میانگیری یا بافرینگ ==
بافرینگ ( Buffering ) یا با برگردان فرهنگستان به میانگیری به روشی می گویند که دادهها یا اجسام و موادّ در جایی به صورت موقت ، انباشه می شوند تا بعد از پردازش و یا پیرایش به جای دیگری فرستاده شوند که باعث دست نخوردگی و پایداری ( استیبل شدن Stable ) و یا تسریع در روند آن می شود . اما ما فعلاً فقط به میانگیری یا بافرینگ دادهها در علوم رایانه می پردازیم . میانگیری در علوم رایانه ۳ کاربرد دارد :
۱ - تسریع در روند پردازش دادهها و ورودی/خروجی : در همین کتاب و در همین مبحث بارها مثالهایی را از خواندن و نوشتن و کپی ( Copy کاپی ) کردن فایل نوشتهایم . در برخی از آنها یک بایت به یک بایت ( که عموماً به آن کاراکتر می گوئیم - در تابعهایی مثل fgetc و fputc - اما هر کاراکتری در استاندارد انسی ANSI که کاراکترست ASCII ازکی است را شامل می شود و به صورت دودویی هر مقداری را می توان خواند و نوشت ) خواندهایم و نوشتهایم . تقریباً تمام سیستم عاملها در هسته خود ( Core ) شامل کرنل Kernel و اجزاء کمکی آن ( Core Components ) میانگیر یا بافر ( Buffer ) دارند و عمل ورودی/خروجی ( I/O ) را تسریع می کنند اما اگر برنامه نویس یک بایت به یک بخواهد بخواند و بنویسید ، در زبان C به سیستم عامل تحمیل و دستور داده می شود تا به همان شکل عمل کند ( فراموش نکنید که زبان سی ، زبان اصلی اکثر کرنلهاست و تمام سیستم عاملها کتابخانههایی را برای اجرای برنامهها به زبان سی و/یا سیپلاسپلاس دارند - چه در زمانی که برای سیستم عامل کامپایل می کنید و چه یک برنامه نویس برای نوشتن کرنل خود از یک کامپایلر و کتابخانههای آن استفاده کند این تحمیل و دستور وجود دارد ) اما اگر به جای آن ، یک آرایه بسازیم که مثلاً هزار عنصر داشته باشد و یا ده هزار عنصر ، و بعد به اندازه آن از فایل ، بخوانیم و به همان اندازه بنویسیم در واقع میانگیری کردهایم و سرعت کپی کردن خود و یا هر نوع خواندن و نوشتن را بالا بردهایم
۲ - پیمانهای کردن دادهها و تنظیم سرعت : این روش در علوم بسیاری ، از جمله الکترونیک و مخابرات و همچنین همین علوم رایانه ، کاربرد پایدار کردن ( استیبل کردن Stabilization ) و تنظیم سرعت را دارد . نمی خواهیم از بحث خارج شویم ولی این مثال به درک نحوه میانگیر کردن کمک بزرگی می کند . در یاختههای مهرهداران و یا حتی دیگر جانداران پریاختهای ، در یاختههای مخصوصی در انباشتگاههای خودشان ( Buffer یا میانگیر ) اسید و باز ، انباشت می کنند تا در صورتی که خون و یا بدن جانور از حدی اسیدیتر شد و pH پهاش آن پائین آمد ، بازِ انباشت شده در خود را آزاد کنند و یا خلاف جهت آن ؛ اگر از حدی بازیتر شد و pH آن بالاتر رفت ، اسید خود را آزاد کنند که در این صورت اسید و باز با هم ترکیب میشوند ( و نمک و آب می سازند که نمک ، توسط تصفیه کننده خون ، مثل کلیهها در برخی از پستانداران ، دفع می گردد ) و در نتیجه پهاش pH خون و بدن ثابت باقی می ماند . در علوم رایانه و الکترونیک ، میانگیر کردن به همین شکل به پایداری عملکرد سیستم ، کمک می کند . به عنوان مثال ، پخش کردن ویدئو و یا صدا را در نظر بگیرید . کاربران قدیمی رایانه به خوبی به یاد خواهند داشت و یا حتی هم اکنون نیز ممکن است با چنین پدیدهای مواجه شوید که سرعت ارتبط شما با شبکه ( کانکشن Connection ) پائین باشد ( در گذشته اتصال به اینترنت اکثراً از طریق مودمهای تماسی Dial-Up امکانپذیر بود که سرعت بسیار بسیار پائینی داشت ) و شما بخواهید یک فایل ویدوئی را تماشا کرده و بشنوید و یا فایل صدایی ( صوتی ) را گوش بدهید . در چنین مواقعی اگر به اندازه سرعت شما قابهای ویدئو ( فریمها Frames - واحد سازنده هر ویدئو یا انیمیشن که پشت سر هم و با سرعت معین به تصویر متحرک تبدیل می شوند و به صورت متحرک دیده می شوند ) و یا نمونه-بیتها ( بیت سمپلها Bit Samples واحد سازنده هر فایل صدایی - یا همان صوتی ) را نشان دهد و/یا پخش کند شما نمیتوانید عملاً آن فایل را تماشا کرده و گوش دهید . برای همین برنامهنویسان ، فایل را میانگیر می کنند و هر مثلاً یک یا دو یا سه ثانیه از ویدئو یا صدا را انباشت میکنند و بعد از رسیدن به آن مقدار ، ویدئو و صدا را برای شما پخش می کنند یا اینکه فرض کنید سیستم شما چندان به روز و قدرتمند نیست و شما می خواهید یک فیلم سینمایی با کیفیت ۱۰۸۰ پیکسلی ( که ارتفاع قابهای آن - فریمهای آن - ۱۰۸۰ پیکسل و یا نزدیک به آن است ) تماشا کنید . اگر قرار باشد پخش کننده رسانه Media Player بخواهد کل فایل را رمزگشایی و سپس در حافظه موقت ( Memory که همان رم RAM است ) بارگذاری کند ( Loading ) سیستم شما یا قفل خواهد کرد و مجبور به راه اندازی مجدد سیستم خواهید شد یا اینکه اگر سیستم عامل شما قدرتمند باشد پس از چند ثانیه ، سیستم عامل ، برنامه را پایان می دهد ( Termination ) بنابراین پخش کنندههای رسانه یک یا دو دقیقه از فیلم و ویدئو را رمزگشایی ( دکود Decode ) می کنند و بر روی حافظه موقت بارگذاری می کنند و آن را پخش می کنند و حتی اگر بخواهید فیلم را ۵ دقیقه یا مثلاً نیم ساعت جلو ببرید ، یک یا دو دقیقه قبلی را از حافظه موقت پاک می کنند و سپس دوباره آن قسمت از فیلم و ویدئو را که شما دستور داده بودید پخش کند بارگذاری می کنند . به همین شکل ممکن است سرعت دستگاههای الکترونیکی رایانه ( که میانگیر کردن در خود الکترونیک نیز به کار می رود اما ما در اینجا به آن نمی پردازیم ) و یا در شبکههای مختلف رایانه مثل شبکه اینترنت و پروتکلهای آن ، تداخل پیش بیاید و سرعتهای دادهها نسبت به هم و یا میزبان/میهمان و یا حجم دادهها در آنها نسبت به سرعت میهمان بیشتر باشد ( و یا حتی بعضاً حجم درخواستهای میهمانها از سرعت میزبان بیشتر باشد ) در چنین مواقعی ، پیمانهای عمل کردن برنامهها و یا میانافزارها و سختافزارها ، کمک می کند تا کم کم ، ورودی دریافت شده و به خروجی فرستاده شود و چه سرعت ورودی کم یا زیاد باشد و یا سرعت خروجی کم یا زیاد باشد ، سامانه دچار مشکل و قفل شدن نمی شود
۳ - دادههای موقتی : یکی دیگر از کاربردهای میانگیر کردن ، ساخت یک داده موقتی است ( که این داده از هر نوعی و در هر اندازهای ممکن است باشد ) که دو کاربرد دارد : ۱ - بخواهیم همان زمان با ساخت داده موقت ، بر روی آن پردازش و پیرایش انجام دهیم . به عنوان مثال ، در گذشتهها پیرایشگرهای تصاویر رستر ( Raster Graphics گرافیکهای مبتنی بر پیکسل Pixel ) وقتی فایلی را باز می کردند پیرایشها را بر روی خود همان فایل انجام میدادند و اگر حتی پیرایشهای خود را ملغا ( Undo ) می کردید و آن را ذخیره ( Save ) می کردید باز هم فایل شما دستخوش تغییر قرار می گرفت ( چون تصویر ، پیرایش شده بود و فقط توسط رمزنگار برنامه مجدداً مانند اولش نوشته می شد اما اگر از یک فایل ادیتور یا همان هگزادسیمال ادیتور Hexadecimal Editor استفاده می کردید ، مشاهده می کردید که فایل تغییر پیدا کرده است ) به این روش ویرانگر یا Destructive گفته می شود . اما امروزه برنامههای پیرایشگر رستر به روش ناویرانگر Non Destructive عمل می کنند و هر فایلی که باز می کنید یک فایل کپی موقت ( Temporary ) از روی آن می سازند و بعد از رمزگشایی و بارگذاری بر روی حافظه تغییرات را بر روی آن اعمال می کنند و بدین صورت فایل شما دست نخورده باقی می ماند و هر وقت که خواستید می توانید آن را در فایلی جدید ذخیره ( Save ) و یا جایگزین همان فایل خودتان کنید . همین تکنیک در مورد پیرایش فایلهای ویدئویی نیز به کار می رود ۲ - گاهی نیاز پیدا خواهید کرد تا فایل موقتی بسازید و چند بار بر روی آن پردازش انجام دهید که غیر متوالی هستند . در این صورت فایل را میانگیر می کنید و هر موقع نیاز داشتید آن را پردازش کرده و به سراغ فایلهای دیگر می روید و یا کارهای دیگری انجام می دهید و سپس دوباره به پردازش فایل میانگیر شده خود ( Buffer ) باز می گردید
در مجموع ، میانگیر کردن و ساخت یک میانگیر ( بافر Buffer ) در نوشتن برنامههای شبکه و پروتکلهای آن ، پخش کنندههای رسانه ( میانافزاری و نرمافزاری ) و هسته سیستم عامل ، مخصوصاً کرنل آن در کنار بسیاری دیگر از بخشهای مهندسی نرمافزار و برنامهنویسی ، ضروری و حیاتی است
== تابع setbuf و ماکروی مقدار BUFSIZ ==
گاهی در برنامهنویسی پیشرفته ، امکان دستی ، تعیین کردن میانگیر یا بافر ناممکن و یا بسیار سخت است ( مخصوصاً در برنامهنویسی سطح پائین ) که ما هنوز به این مرحله نرسیدهایم . اما تابع قدیمی setbuf سرنام set buffer به معنی میانگیر را تعیین کن ، با ماکروی اندازه حداقل به اندازه BUFSIZ سرنام Buffer Size به معنی اندازه میانگیر ( بافر ) که امروزه منسوخ شده است و به جای آن در استاندارد سی C تابع setvbuf تعریف شده است ، می تواند میانگیر را برای شما ایجاد کند تا هم فایل را به صورت موقت در حافظه RAM نگهداری کنید و به پردازش آن بپردازید و هم عملیاتهای خواندن/نوشتن را پیمانهای می کند . دقت کنید : ۱ - تابع setbuf باید برای فایلی تعیین شود که باز شده است ۲ - تابع setbuf باید قبل از هر عملی بر روی فایل برای خواندن و نوشتن ، اعمال شود ۳ - اگر مقدار میانگیر را که باید تعیین کنید ، در یک حوزه محلی ، تعیین کنید پس از اتمام بلوکِ آن میانگیر ، همانند یک متغیر معمولی ، میانگیر و بافر ، خالی می شود و دیگر موجود نخواهد بود . اگر می خواهید میانگیر را توسط تابعهای زبان سی C و کامپایلر بسازید ، بهتر است آن مقدار آن را ( مثل مقدار BUFSIZ ) با حوزه سراسری تعیین کنید . در غیر این صورت برنامه شما رفتار تعریفنشدهای بروز خواهد داد ۴ - مقدار میانگیر (بافر ) ، طبق استاندارد باید حداقل به اندازه ماکروی مقدار BUFSIZ که در فایل سرآیند stdio تعریف شده است باشد ( استاندارد ، مقدار آن را تعیین نکرده است ولی در کامپایلری مثل GCC مقدار آن 8192 بایت است ) اگر کامپایلر شما از مقدار کوچکتر پشتیبانی نکند و شما مقداری کوچکتر تعیین کنید با خطا در برنامه مواجه خواهید شد
در صورتی که می خواهید فایل بزرگی را میانگیر کنید بهتر است مقداری بزرگتر از BUFSIZ استفاده کنید و باز هم بهتر است مقدار آن ، مقدار از توان ۲ باشد ؛ مثل : 16384 یا 32768 و ... ) . شکل کلی استفاده از تابع setbuf بدین صورت می باشد :
{{چپچین}}
setbuf(FILE *stream, char *buffer);
{{پایان چپچین}}
باید اشارهگر فایلی را که می خواهید میانگیر کنید را به آن بفرستید و یک آرایه کاراکتری با اندازه حداقل BUFSIZ تا به همان اندازه ، فایل شما را میانگیر کند . مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
#include <time.h>
int main()
{
clock_t start, end;
double time_passed;
char buf[BUFSIZ];
start = clock();
FILE * fp, * fp2;
fp = fopen("post-1.jpeg", "rb");
fseek(fp, 0, SEEK_END);
long int size = ftell(fp);
fseek(fp, 0, SEEK_SET);
unsigned char fr[size];
setbuf(fp, buf);
fread(fr, size, 1, fp);
fclose(fp);
fp2 = fopen("copy.jpeg", "wb");
setbuf(fp2, buf);
fwrite(fr, size, 1, fp2);
fclose(fp2);
end = clock();
time_passed = ((double) (end - start)) / CLOCKS_PER_SEC;
printf("Program execution time: %lf seconds\n", time_passed);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
در این برنامه از فایل سرآیند time که هنوز به مبحث آن نرسیدهایم استفاده نمودهایم . به معنی زمان می باشد و دارای تابعها و ماکروهایی برای تعیین زمان و سنجش آن می باشد . ابتدا توسط ماکروی clock_t دو متغیر به نام آغاز و پایان اعلان نمودهایم و هر دو را یک بار در آغاز برنامه و یک بار در پایان برنامه با تابع clock که زمان را تعیین می کند مقداردهی نمودهایم . '''دقت کنید :''' ما در این برنامه از دو روش فایلی را با نام post-1.jpeg میانگیر کردهایم . یک بار توسط پیمانه size که به اندازه فایل خودمان ( که شما میتوانید هر فایلی را که در دایرکتوریِ برنامه کامپایل شده خودتان قرار دارد بنویسید ) آن را خواندهایم و به همان اندازه نوشتهایم . یک بار هم توسط تابع setbuf آن را میانگیر و بافر کردهایم . در پایان برنامه مقدار زمان پایان برنامه را منهای مقدار زمان آغاز برنامه نموده و با دقت دو برابر اعشار در خروجی خطفرمان چاپ نمودهایم . دقت کنید که در این برنامه کارکرد setbuf به حداقل خود رسیده است چون به اندازه فایل ، خواندهایم و آن را در حافظه موقت ( RAM ) نوشتهایم سپس فایل را بر روی حافظه دائمی ( مثل H.D.D یا S.S.D ) نوشتهایم . اما اگر اندازه فایل بزرگتر از مقدار قابل سنجش می بود ( مثل نوشتن برنامه سامانه فایلبندی File System ) عملکرد setbuf با مقدار بززگ ، کاملاً چشمگیر می شد
== تابع setvbuf و ماکروهای IOFBF_ و IOLBF_ و IONBF_ ==
تابع setvbuf همانند تابع setbuf می باشد با این تفاوت که نوع میانگیر کردن و اندازه میانگیر ، در دست برنامهنویس است . شکل کلی فراخوانی تابع setvbuf بدین صورت می باشد :
{{چپچین}}
setvbuf(FILE * stream, char * buffer, int mode, size_t size);
{{پایان چپچین}}
ابتدا نام جریان فایل را می نویسیم ، سپس آرایه کاراکتری خود را و سپس نوع میانگیر کردن را که یکی از سه ماکروی نوشته شده است و در نهایت اندازه میانگیر کردن را . سه ماکروی نوشته شده که نوع میانگیر را تعیین می کنند بدین قرار هستند :
IOFBF_ سرنام Input/Output Full Buffer به معنی میانگیر کردن کامل ورودی/خروجی
IOLBF_ سرنام Input/Output Line Buffer به معنی میانگیر کردن خط در ورودی/خروجی
و
IONBF_ سر نام Input/Output Not Buffer به معنی عدم میانگیر کردن ورودی/خروجی
'''دقت کنید :''' در صورتی که بخواهید میانگیر کردن را از کار بیاندازید و از IONBF_ استفاده کنید باید حتماً به جای آرایه کاراکتری از ماکروی مقدار تهی NULL نول استفاده کنید و اندازه را 0 تعیین کنید ؛ در غیر این صورت در هر گونه میانگیر کردن باید اندازهای بزرگتر از 0 داشته باشد . تابع setvbuf در صورت موفقیتآمیز بودن عملکرد خود مقدار 0 را باز می گرداند و در غیر این صورت مقداری غیر 0 را . مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main(void)
{
char buf[30];
if(setvbuf(stderr, buf, _IOFBF, sizeof buf))
{
printf("failed to change the buffer of stdout");
return 1;
}
fprintf(stderr, "He");
fflush(stderr);
if(setvbuf(stdout, NULL, _IONBF, 0))
{
printf("failed to change the buffer of stdout");
return 1;
}
printf("llo w");
if(setvbuf(stdout, buf, _IOLBF, sizeof buf))
{
printf("failed to change the buffer of stdout");
return 1;
}
printf("orld!");
putchar('\n');
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
این قطعه کد را مشابه قطعه کد مثال setvbuf در ویکی کتاب انگلیسی نوشتهام ؛ چرا که بسیار زیبا و کارآمد نوشته شده است . یک آرایه کاراکتری با ۳۰ عنصر ، اعلان نمودهایم که نقش میانگیر ما را ایفا می کند . سپس در داخل شرط ، میانگیر کامل خود را بر روی stderr اعمال نمودهایم تا میانگیر و بافر شود . اگر به یاد داشته باشید گفتیم که stderr در داخل بافر سیستم عامل یا کرنل ، نوشته نمی شود . ولی با این کار می توانیم stderr را نیز میانگیر کنیم . در صورت خطا ، پیغامی ، چاپ خواهد شد و تابع اصلی برنامه با خطا به کار خود خاتمه خواهد داد اما در غیر این صورت He در بافر سیستمعامل یا کرنل ( بسته به اینکه برای سیستم عامل ، برنامه می نویسیم و یا سطح پائین و برای سیستم ) می نویسد و سپس آن را خالی می کنیم . سپس بدون میانگیر کردن در خروجی خط دستوری چاپ می کنیم : llo w و در ادامه با میانگیر کردن خط در محیط خطفرمان مثل ترمینال در سیستمعاملهای یونیکس و شبه یونیکس و command prompt در ویندوز و همچنین خطفرمان در برنامههای سطح پائین ( مثل بارگذار بوت یا کرنل یا هسته سیستمعامل ) چاپ می کنیم : !orld و در ادامه خط را می شکنیم تا میانگیر شود . دقت کنید اگر خط ، شکسته نشود ، میانگیر ما در حافظه موقت ، تخلیه نمی شود و به جای حروف نوشته شده به احتمال زیاد ، حروف دیگری نمایش داده می شوند ( می توانید امتحان کنید و putchar(\n) را کامنت کنید یا حذف کنید و کامپایل و لینک کرده و سپس اجرا کنید و دوباره آن را اضافه کنید و کامپایل و لینک و اجرا کنید تا نتیجه را ببینید )
== تابع perror ==
تابع perror سرنام print error به معنی خطا را چاپ کن ، خطایی را که در عملیات ورودی/خروجی پیش آمده است را به خروجی استاندارد که معمولاً محیط خطفرمان است می فرستد و نمایش می دهد . شکل کلی استفاده از perror بدین صورت می باشد :
{{چپچین}}
perror(const char * string);
{{پایان چپچین}}
شما مجاز هستید تا درون تابع ، پیامی را به صورت یک رشته یا حتی یک کاراکتر بنویسید تا نمایش داده شود و در این صورت ابتدا پیام شما نمایش داده شده و سپس با یک دو نقطه ( : ) و یک فاصله خالی ( اسپیس Space ) perror پیام خطای سیستم را که در آخرین ورودی/خروجی پیش آمده در stderr می نویسد . ولی اگر داخل تابع یک کاراکتر با مقدار ماکروی تهی ( نول NULL ) قرار بدهید و یا رشته را خالی بگذارید ، تنها پیام خطای سیستم ، نمایش داده می شود . '''دقت کنید :''' هر جا که امکان وجود خطا در ورودی/خروجی پیش آمد perror را بنویسید و گرنه errno با مقدار و پیام خطای دیگری که پیش بیاید جایگزین می شود . مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main(void)
{
FILE * file = fopen("imaginary_file.bin", "rb");
if(file == NULL)
{
perror("Error on opening file");
return 1;
}
else
fclose(file);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
'''توضیح :''' در تابع اصلی برنامه ( main ) تلاش کردهایم تا فایلی را که وجود ندارد ( دقت کنید تا در جایی که برنامه را اجرا می کنید فایلی با این نام وجود نداشته باشد تا کارایی مثال بالا را متوجه شوید ) با نام فایل خیالی ( imaginary_file ) با پسوند bin که نشان می دهد فایل از نوع اجرایی و دودویی است ( binary ) با حالت خواندن دودویی rb باز کنیم و اگر فایل موجود نبود پیام خطا چاپ شود : خطا در باز کردن فایل و سپس سیستم ، پیام خطای خود را چاپ می کند که چیزی شبیه به No Such File or Directory یا دقیقاً همین پیام است . در غیر این صورت فایل با موفقیت باز شده و سپس بسته می شود ولی اگر این فایل را در دایرکتوری ( که در ویندوز با اصطلاح فولدر Folder شناخته می شود ) برنامه کامپایل شده بالا ایجاد نکنید ، پیام خطا را مشاهده خواهید نمود
== تابع tmpnam و ماکروهای TMP_MAX و L_tmpnam ==
تابع tmpnam سرنام temporary name به معنی نام موقت برای ایجاد نامی تصادفی و موقت و معمولاً برای سندها ( فایلها ) است که هنوز تصمیمی برای انتخاب نامی برای آن نداریم و البته این نام ، توسط پیادهساز ، نامی ساخته می شود که در سند برنامه و یا دایرکتوری سندهای موقت ، موجود نباشد . اما TMP_MAX سرنام Temporary Maximum به معنی حداکثر (نام ) موقت ، یک ماکرو است که نشان می دهد پیادهساز ( کامپایلر ) تا چند ، نام موقت را می تواند بسازد و ماکروی L_tmpnam سرنام Length of temporary name به معنی طول نام موقت است که حداکثر تعداد کاراکترهایی که پیادهساز می تواند برای نام موقت ، بسازد چند کاراکتر است . جهت متوجه شدن این مسئله به راحتی میتوانید از printf استفاده کنید . یعنی :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main(void)
{
printf("longest name generated is %d and maximum number of random names are : %d\n", L_tmpnam, TMP_MAX);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
در پیادهسازهای محتلف و سیستم عاملهای مختلف و البته با توجه به اندازه حافظه موجود در سیستم شما این اعداد می توانند متفاوت باشند . به طور مثال در سیستم عامل گنو/لینوکس و کامپایلر GCC در یک افراز ( پارتیشن Partition ) ۵۱۲ گیگابایتی این مقادیر ۲۰ و ۲۳۸۳۲۸ است ؛ یعنی طولانیترین نامی که GCC می سازد ۲۰ کاراکتر دارد و نهایتاً می تواند ۲۳۸ هزار و ۳۲۸ نام تصادفی ، تولید کند
شکل کلی استفاده از تابع tmpnam بدین صورت می باشد :
{{چپچین}}
tmpnam(char * str);
{{پایان چپچین}}
در ابتدا دقت کنید که شما برای مقدار دهی tmpnam یا باید از ماکروی مقدار تهی NULL استفاده کنید که تابع ، یک اشارهگر به میانگیر ( بافر Buffer ) ایستای سیستم را باز می گرداند و نام می تواند در یک رشته ذخیره شود یا اینکه یک رشته می سازید که تعداد عنصرهای آرایه باید '''حداقل''' به تعداد L_tmpnam باشد و tmpnam را فرا می خوانید تا آن را مقدار دهی کند . ضمناً اگر بخواهید از این نامها برای ایجاد سند ( فایل ) استفاده کنید کامپایلر ، سندها را در دایرکتوری موقت سیستم عامل می سازد . این دایرکتوری در گنو/لینوکس و دیگر شبهیونیکسها همچون سیستم عاملهای مکینتاش ( Mac OS X , OS X , macOS ) در نشانی tmp/ یعنی در فولدر یا دایرکتوری tmp در ریشه ( root ) قرار دارد و در سیستم عاملهای جدید مایکروسافت ویندوز در :
C:\Users\LocalUser\AppData\Local\Temp\
'''دقت کنید :''' یکم اینکه در گذشته ، ویندوز ، همانند سیستم عاملهای شبهیونیکس برای نشانیدهی از اسلش / استفاده میکرد ولی از ویندوز XP به بعد از بک اسلش ( Back Slash ) \ استفاده می کند . دوم اینکه این آدرس در ویندوزهای قدیمی ، متفاوت است و سوم اینکه از ویندوز ۷ به بعد هر افراز ( پارتیشن ) ـی که بر روی آن ویندوز حاضر و فعلی نصب باشد C نام میگیرد ( ممکن است شما دو ویندوز نصب کنید و یکی بر روی افراز D باشد ولی وقتی آن را آغاز کنید - Start Up - نام آن به C تغییر پیدا میکند )
ضمناً این دایرکتوری برای برنامهنویسی حرفهای ، بسیار کاربرد دارد . فرض کنید میخواهید یک پخش کننده چند رسانهای ( Multimedia Player ) یا هر برنامه دیگری بنویسید و هر سندی ( فایلی File ) که باز شد را در فهرست آخرین سندها نگه دارید و به درخواست کاربر ، هر موقع که خواست آن را پاک کنید . برای این کار ، یک فایل در دایرکتوری موقت Temporary می سازید و آن را با سندهایی که باز می شوند ، پیرایش کرده و به روز رسانی می کنید و هر موقع کاربر به برنامه دستور داد که تخلیه شود آن را پاک می کنید و از نو آغاز می کنید . یا مثلاً یک پیرایشگر متن ( Text Editor ) یا واژه پرداز ( Word Processor ) می نویسید و برای آن می خواهید هر ۵ یا ۱۰ دقیقه ( به طور نمونه ) یک بار یک نسخه پشتیبانی ( Backup ) از سند ( File ) یا پرونده ( Document در واژه پرداز ) ایجاد شود ؛ بنابراین آن را در دایرکتوری موقت ، می نویسید . بدین ترتیب اگر برنامه قفل کند یا متوقف شود ، پس از گشودن مجدد برنامه ، حداقل بخش بزرگی از سند یا پرونده ذخیره شده است
'''دقت کنید :''' تابع tmpnam با هر بار فراخوانی ، نام جدیدی را می سازد ؛ پس اگر هنوز نام ساخته شده را ذخیره نکرده باشید و دوباره آن را فرا بخوانید نام قبلی از بین می رود
تابع tmpnam در صورت موفقیت آمیز عمل کردن خود ، یک اشارهگر به نام ساخته شده خود باز می گرداند که اگر آرگومان آن NULL باشد یک اشارهگر به بافر ایستای سیستم ، بازمیگرداند و اگر یک رشته باشد یک رشته را باز میگرداند و اگر در هر صورتی ، کامپایلر ، موفق به ساخت نام موقت نشود یک اشارهگر تهی NULL باز میگرداند . مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main(void)
{
char * buf1 = tmpnam(NULL);
char buf2[L_tmpnam];
tmpnam(buf2);
char buf3[30];
tmpnam(buf3);
FILE * fp1 = fopen(buf1, "w");
fputs("first file", fp1);
FILE * fp2 = fopen(buf2, "w");
fputs("second file", fp2);
FILE * fp3 = fopen(buf3, "w");
fputs("third file", fp3);
fclose(fp1);
fclose(fp2);
fclose(fp3);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
'''توضیح :''' یک رشته با نام buf1 تعریف کردهایم که مقدار آن را تابع tmpnam با آرگومان NULL مقداردهی می نماید . یک رشته دیگر با نام buf2 اعلان کردهایم که تعداد عنصرهای آن به اندازه L_tmpnam که اندیس آن می باشد است و سپس آن را با tmpnam مقداردهی کردهایم . سپس یک رشته با نام buf3 با ۳۰ عنصر ، اعلان کردهایم . دقت کنید چون GCC حداقل طول قابل پذیرشش ۲۰ است باید مقداری بزرگتر از آن را بنویسیم ( که در همین مبحث ، کمی بالاتر نوشتیم ؛ شما نیز مقداری بزرگتر از L_tmpnam در کامپایلر خود بنویسید ) سپس ۳ فایل ایجاد نمودهایم که نامهای آنها همان نامهای ایجاد شده توسط تابع tmpnam است ( به ترتیب ) و آنها را به صورت متنی برای نوشتن ، باز کردهایم و در هر کدام از آنها به ترتیب نوشتهایم : سند اول ، سند دوم و سند سوم و سپس فایلها را بستهایم و تابع اصلی برنامه را با موفقیت به پایان رساندهایم ( اگر به دایرکتوری - فولدر - موقت سیستم عامل خود مراجعه کنید ، آنها را خواهید یافت - Visual Studio در ویندوز تماماً آنها را تصادفی میسازد و GCC در گنو/لینوکس با پیشنام file )
'''نکته :''' تابع tmpnam از نظر امنیت زنجیره ، امن است البته اگر آرگومان آن NULL نباشد ؛ برای همین سیستمعاملهای شبهیونیکس و حتی ویندوز هر کدام تابعهایی غیر استاندارد دارند که فرآیند ساخت نامها کاملاً ایمن باشد . برای اطلاع از تابعهای موجود در کامپایلر و سیستم عامل خود به راهنمای آن مراجعه کنید
== ماکروی FOPEN_MAX ==
این ماکرو در فایل سرآیند stdio فقط یک مقدار ثابت دارد که سرنام File Open Maximum به معنی بیشینه ( حداکثر ) تعداد فایل می باشد و نشان می دهد که مطابق با سیستم عامل شما و کامپایلر شما ، در هر سند متن برنامه ، شما چند فایل را پشت سر هم می توانید بدون بسته شدن ، باز کنید . این مقدار باید حداقل طبق استاندارد ۸ باشد ولی به طور مثال در سیستم عامل گنو/لینوکس و کامپایلر GCC این مقدار ۱۶ است . برای اینکه این مقدار را که در فایل stdio کامپایلر شما تعریف شده است بیابید ، قطعه کد زیر را بنویسید و کامپایل و پیوند ( لینک ) کنید و سپس آن را اجرا کنید :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main(void)
{
printf("%d\n", FOPEN_MAX);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
'''توضیح :''' همانند مثالهای پیشین در این مبحث ، پس از تشریحهای فراوان دیگر در مباحث پیشین ، وقت را هدر نداده و قطعه کد را تشریح نمی کنیم . تابع کتابخانهای printf یک مقدار دسیمال ( دهدهی ) را که آرگومانش به آن فرستاده شود در خروجی خطفرمان ، نمایش می دهد و آرگومان آن ، ماکروی FOPEN_MAX می باشد که پس از اجرا می بینید که بیشینه فایلهایی را که در هر برنامه مجاز هستید تا پشت سر هم و بدون بستن فایلهای قبلی باز کنید چه تعداد می باشد
== ماکروی FILENAME_MAX ==
این ماکروی استاندارد که سرنام Maximum File Name می باشد به معنی بیشینه طول نام فایل ، بیشترین مقدار صحیحی که سیستم عامل اجازه می دهد برای هر نام فایل استفاده شود را نشان می دهد . دقت کنید که این مقدار صحیح ثابت است و در فایل سرآیند stdio تعریف می شود تا برنامهنویس بداند که بیشینه مقدار ، چه قدر است که این مقدار فقط تعداد کاراکترهای تعیین شده در ازکی ASCII می باشد ( منهای یکی ؛ چون آخرین مقدار ، تهی است ) و اگر از کاراکترهای یونیکد استفاده شود تعداد کاراکترهای قابل استفاده کاهش می یابد ( مثلاً در UTF-8 که زبانهای مختلف و شکلکها -ایموجیها - پشتیبانی می شوند هر کاراکتر غیر انگلیسی و ازکی ، چهار بایت اشغال می کند ) . این مقدار در حال حاضر در تقریباً تمامیِ سیستم عاملها و سامانههای فایلبندی ۲۵۶ بایت است که چون آخرین بایت آن ، تهی است می شود ۲۵۵ کاراکتر . برای مشاهده این مقدار در سیستم خود از قطعه کد زیر استفاده کنید :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main(void)
{
printf("%d\n", FILENAME_MAX);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
'''نکته :''' هرگز فراموش نکنید که برای برنامه خود در نوشتن آن برای تعیین نامهای فایلها از آرایهای با اندیس این ماکرو استفاده نکنید یعنی char fn[FILENAME_MAX] کاملاً '''خطاست''' . کامپایلر نه از شما خطا می گیرد و نه هشدار می دهد اما چون یک رشته می سازید که مقدار آن در سیستمهای مختلف مقادیر مختلف و بعضاً بزرگی دارد که باید پشت سرهم باشند ( رجوع کنید به مبحث آرایه ) برنامه شما به راحتی مرتکب خطا خواهد شد . بهتر است در صورتی که قصد دارید از این ماکرو برای تعیین نام فایلها استفاده کنید از ترفند تخصیص حافظه پویا که در مباحث بعدی مطرح می شود استفاده نمائید
== تابع tmpfile ==
تابع کتابخانهای tmpfile سرنام temporary file به معنی سند موقت ، یک فایل موقت می سازد که با بستن فایلِ آن یا تمام شدن اجرای برنامه ، حذف می شود . در سیستم عاملهای شبهیونیکس ، معمولاً در دایرکتوری tmp/ ساخته می شود که همین امر باعث می شود سیستم عامل از شما مجوزی برای اجرای برنامه نخواهد . ولی در سیستم عاملی مثل ویندوز Windows در نسخههای نوین آن پوشه (فولدر موقت temporary folder ) داخل فولدرهای اصلی ویندوز موجود است ؛ بنابراین یا باید به عنوان Admin مدیر ، وارد ویندوز شده باشید و یا گذرواژه ( پسورد Password ) آن را بدانید تا بتوانید برنامه را اجرا کنید . فایل موقت به صورتِ پیشفرض به حالت خواندن/نوشتنِ خام یا همان دودویی ( باینری Binary ) باز می شود اما شما می توانید به راحتی در آن ، متن را نیز بنویسید . شکل کلی فراخوانی تابع tmpfile بدین صورت می باشد :
{{چپچین}}
FILE * tmpfile(void);
{{پایان چپچین}}
سند ، توسط یک ماکروی اشارهگر نوع فایل آماده می شود و سپس با نوشتن ;()tmpfile ایجاد می گردد ( دقت کنید که این تابع ، آرگومانی نمی پذیرد و باید آن را خالی بگذارید و حتی اجازه نوشتن void را داخل آن ندارید ) . این تابع در صورت موفقیتآمیز بودن عمل خود ، اشارهگری را به فایل ساخته شده باز می گرداند و در صورت هر گونه عدم موفقیت ، یک اشارهگر تهی ( نول NULL ) را باز می گرداند . مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main(void)
{
FILE *fp, *tmpf;
fp = fopen("copy.txt", "w+");
tmpf = tmpfile();
if (tmpf == NULL)
{
perror("System failed to make temporary file");
return 1;
}
char tmpstr[100];
fgets(tmpstr, 100, stdin);
fputs(tmpstr, tmpf);
char str[100];
for(int i = 0; i <= 100; i++)
{
str[i] = tmpstr[i];
}
fputs(str, fp);
fclose(fp);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
'''توضیح :''' دو اشارهگر فایل را به نامهای fp و tmpf ساختهایم و آمادهایم تا فایلهای آنها را بسازیم . اولی به صورت متنی در فایلی با نام copy.txt ساخته می شود . دومی فایل موقت است که اگر موفق به ساخت آن نشویم پیام خطا را چاپ می کند که سامانه ، موفق به ایجاد فایل موقت ، نشد . سپس یک رشته را از ورودی استاندارد ( صفحهکلید Keyboard ) به طول نهایتاً ۱۰۰ کاراکتر دریافت می کند و داخل خود می نویسد ( آنچه را که کاربر بنویسد و در نهایت دکمه ورود Enter را بزند ) سپس رشته دیگری به همان اندازه ساخته می شود و متن فایل موقت را در خود کپی ( کاپی Copy ) می کند و آن را در copy.txt می نویسد و فایل copy.txt بسته می شود و با پایان برنامه فایل موقت نیز پاک می شود . دقت کنید این ، سادهترین شکل گرفتن فایل پشتیبانی Backup از فایل اصلیِ کاربر است . برنامه gEdit به همین شکل ، کاراکتر به کاراکتر ، متن را داخل سند ، ذخیره می کند و بسیار کند است اما روش مطمئنی است که دادهای از دست نرود ( به همین شکل نیز پشتیبانی آن ، کند است ) . در صورتی که بخواهید با سرعت بالایی سند خود را ذخیره کنید باید از روشها و ترفندهای دیگری استفاده کنید که در مباحث بعدی به آنها می رسیم . اما فعلاً برای کپی کردن یک رشته در رشته دیگر چارهای جز این نداشتیم
== تابع freopen ==
تابع کتابخانهای freopen سرنام file re-open به معنی دوباره فایل را باز کن ؛ در صورتی که فایلی باز شده باشد ( توسط fopen ) و اشارهگر فایل باز شده را به آن بفرستیم ، جریان فایل قبلی را می بندد ( دیگر نیازی به fclose نخواهد داشت ) و دوباره آن را باز می کند و در صورتی که فایلی باز نشده باشد و یا اشارهگر فایلِ آن را به freopen نفرستیم باید از جریان ورودی/خروجی استاندارد stdin و stdout و stderr استفاده کنیم تا از فایلی متنی ، بخوانیم یا داخل آن ، متنی را بنویسیم . طبق استاندارد ، استفاده از حالت دودویی ، تعریف نشده است و پیادهسازها در شبهیونیکسها آن را نادیده گرفته و ویندوز نیز تنها به نادیده گرفتن شکسته شدن خط در پایان هر خط متن ، بسنده می کند ( البته برخی سیستم عاملها از آن پشتیبانی می نمایند )
شکل کلی استفاده از تابع freopen بدین صورت می باشد :
{{چپچین}}
freopen(const char * filename, const char * mode, FILE * stream);
{{پایان چپچین}}
می شود گفت همانند fopen است و mode های آن ( یعنی حالتهای باز کردن فایل آن ) همانند fopen در همین مبحث فایل سرآیند stdio می باشد ( با این تفاوت که همان طور که گفته شد حالت دودویی و خام باز نمیکند و البته می تواند از ورودی خروجی استاندارد جهت نوشتن و یا خواندن استفاده کند )
مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main(void)
{
FILE *fp, *fp2;
fp = fopen("example.txt", "r");
if (fp == NULL)
{
perror("File couldn't be opened");
return 1;
}
fp2 = freopen("example.txt", "a", fp);
fputs("4th sentence", fp2);
fclose(fp2);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
'''توضیح :''' در مثال بالا ۲ اشارهگر فایل را آماده ایجاد نموده و اولی را با باز کردن فایل متنی example.txt که کمی پیشتر آن را ایجاد نمودیم با حالت خواندن متنی به پایان رساندهایم . اشارهگر فایل دوم با freopen با حالت اضافه کردن باز شده است و سپس توسط تابع fputs جمله 4th sentence در خط چهارم اضافه شده است و سپس fp2 را بستهایم و نیازی به بستن fp نیست چون freopen آن را بسته است . تابع اصلی برنامه با موفقیت به پایان رسیده است . اگر فایل متنی example.txt را باز کنید حالا به جای ۳ خط ، ۴ خط دارد
مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main()
{
FILE * fp = freopen("copy.txt", "w", stdout);
if (fp == NULL)
{
perror("File couldn't be open");
return 1;
}
printf("This text will replace content of copy.txt");
fclose(fp);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
'''توضیح :''' فایل copy.txt را که در قسمت قبل ، ایجاد کردیم را جهت نوشته شدن مجدد با حالت نوشتن و جریان خروجی استاندارد جهت خارج کردن - نوشتن - متن به فایل باز کردهایم . از اینجا به بعد هر آنچه که در خروجیخط دستوری ، دستور بدهیم تا نمایش داده شود در فایل copy.txt نوشته خواهد شد تا زمانی که اشارهگر فایل خود را ببندیم که ما نیز همین کار را کردهایم . حال اگر فایل متنی copy.txt را باز کنید در آن نوشته شده است : This text will replace content of copy.txt یعنی « این متن ، جایگزین محتوای فایل copy.txt خواهد شد » و اگر فایل را باز کنید همین متن را خواهید دید . تابع اصلی برنامه را با موفقیت به پایان رساندهایم
مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include<stdio.h>
int main()
{
FILE * fp = freopen("example.txt", "r", stdin);
if (fp == NULL)
{
perror("File couldn't be found");
return 1;
}
char text[150];
while(fgets(text, sizeof(text), stdin) != NULL)
{
printf("%s", text);
}
fclose(fp);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
'''توضیح :''' فایل example.txt را جهت خوانده شدن و با جریان ورودی - خواندن - استاندارد stdin باز نمودهایم تا از فایل وارد کنیم . رشته text را با ۱۵۰ عنصر ، اعلان نمودهایم . با حلقه while تابع fgets را اجرا نمودهایم تا متن بخواند و تا زمانی که مقدار دریافتی آن تهی ( نول NULL ) نباشد در خروجی خطفرمان ، متن را نمایش دهد که همان ۴ خطی است که در مثال پیشتر از پیش آن را بازنویسی کردیم و خط چهارم را نیز به آن اضافه نمودیم . سپس فایل fp را بسته و تابع را با موفقیت به پایان رساندهایم
== تابع snprintf ==
تابع کتابخانهای snprintf سرنام string number of arguments print formatted به معنی چاپ قالببندی شده ( فرمتشده ) رشته به اندازه تعداد آرگومانها ؛ همانند تابع printf است جز اینکه متن چاپ شده ، داخل یک میانگیر ( بافر Buffer ) ذخیره می گردد تا یک تابع که عمل خروجیِ چاپ را در خروجی خطفرمان ، انجام می دهد چاپ کند
شکل کلی استفاده از تابع snprintf بدین صورت می باشد :
{{چپچین}}
snprintf(char * buffer, size_t number of characters, const char * formatted-string, arguments-list);
{{پایان چپچین}}
ابتدا باید یک رشته میانگیر ( بافر ) اعلان کنیم تا بتوانیم آن را در تابع snprintf به کار ببریم که کاراکترها در آن ذخیره شوند ؛ سپس تعداد کاراکترهایی که قرار است ذخیره شوند را می نویسیم که اگر کوچکتر از تعداد کاراکترهای نوشته شده باشد ، مابقی ، نادیده گرفته خواهند شد ؛ سپس رشته خود را به همراه قالببندیکنندهها و ... می نویسیم و در پایان اگر تعیینکننده آرگومانی را در رشته قالببندیشده نوشته باشیم ، شناسه ( نام ) دادههای متناظر آن را می نویسیم تا ذخیره شوند
تابع snprintf هر مقدار و موجودیای را که دریافت کند یک ماکروی مقدار NULL در پایان آن قرار می دهد که یعنی رشته ، به پایان رسید . این تابع در صورت موفقیتآمیز بودن عملکرد خود تعداد کاراکترهایی که در میانگیر ذخیره کرده است را باز می گرداند و در صورت هر گونه اختلال و خطا یک مقدار منفی را باز می گرداند . ضمناً در بازگرداندن تعداد کاراکترها NULL را در نظر نگرفته و آن را نمی شمارد
مثال :
{{چپچین}}
<syntaxhighlight lang=c>
#include <stdio.h>
int main(void)
{
char buff[150];
long long int lightyear = 9460730000000;
long double planck = 6.62607015;
snprintf(buff, sizeof(buff), "The passed distance by light in a year is about %lld kilometer and Planck constant is : %Lf * 10^-34\n", lightyear, planck);
printf("%s", buff);
return 0;
}
</syntaxhighlight>
{{پایان چپچین}}
'''توضیح :''' یک رشته با نام buff اعلان نمودهایم که میانگیر ( بافر ) ما می باشد . سپس یک داده صحیح خیلی بلند ایجاد نمودهایم که به صورت تقریبی میزان طول سال نوری ( مقدار مسافتی که نور در عرض یک سال می پیماید ) را به کیلومتر در آن ذخیره کردهایم و متغیر ، تعریف شده است . سپس عدد ثابت پلانک ( که بر حسب ژول در ثانیه می باشد و در محاسبه میزان انرژی نور که توسط ماکس پلانک کشف شد مورد استفاده قرار می گیرد ) را در یک داده اعشاری با دقت خیلی زیاد نوشتهایم و متغیر را تعریف نمودهایم . سپس تابع snprintf متن و آرگومانهای فرستاده شده به خود را در buff ذخیره می کند و تعداد نوشته شده برای آن هم تعداد عنصرهای آرایه buff می باشد و نوشتهایم میزان مسافتی که نور ، در یک سال می پیماید lld% است که به آن lightyear را فرستادهایم و عدد ثابت پلانک برابر با Lf% می باشد که به آن planck را فرستادهایم که البته عدد بسیار کوچکی است و مقدار تقریبی نوشته شده در ده به توان منفی ۳۴ نوشته می شود . سپس با تابع printf موجودیِ ذخیره شده در buff را که نوشتیم ، در خروجی خطفرمان ، چاپ نموده و تابع را با موفقیت به پایان می رسانیم
== تابعهای وابسته و اختصاصی ==
در این فصل ، تمام ماکروها و تابعهای استاندارد زبان سی نوشته شدند جز اینکه برخی از تابعها وابسته هستند و باید از فایلهای سرآیند دیگر نیز استفاده کرد تا بتوان در کنار stdio تابعهای مورد نظر را به کار بست که در فصلهای مرتبط نوشته خواهند گردید . همچنین بسیاری از سیستمعاملها علاوه بر رابط برنامهنویسی پازیکس POSIX ( برای برنامهنویسی در سیستمهای شبهیونیکسی ) از تابعها و ماکروهای اختصاصی برخورداند ( همچون Windows یا Linux ) که ما آنها را نمینویسیم و فقط سی استاندارد را مینویسیم . اگر بخواهید از تابعهای اختصاصی سیستمعاملها استفاده کنید کار شما راحتتر میشود و کمتر نیاز پیدا خواهید کرد تا کد بزنید ولی در هر صورت آنها استاندارد نیستند و ما در اینجا تنها سی استاندارد را مینویسیم اما اگر راهنمای کامپایلر خود را در سیستم عامل مد نظر خود ، بخوانید مابقی تابعها و ماکروها نیز نوشته شدهاند
[[رده:زبان برنامه نویسی سی]]
ti0lwfbqvi2xtzyudpiv34u7e5dbbg1
الگو:کتابهای ماه/برگزیده
10
38916
135582
126560
2026-10-05T08:34:18Z
Fwldom
26269
جایگزینی صفحه با '{{کتابهای ماه/برگزیده/۱}}'
135582
wikitext
text/x-wiki
{{کتابهای ماه/برگزیده/۱}}
2zlpbedkpvg995bzm6opk4fsor6vsi5
135585
135582
2026-10-05T08:42:23Z
Fwldom
26269
135585
wikitext
text/x-wiki
{{#ifeq:{{#expr:{{CURRENTDAYOFYEAR}} mod 6}}|0
|{{کتابهای ماه/برگزیده/۱}}
|{{کتابهای ماه/برگزیده/۲}}
}}
0wwpgow9mvuucyo6qhf42x0q25a3j2s
135586
135585
2026-10-05T08:44:35Z
Fwldom
26269
اصلاح ارقام
135586
wikitext
text/x-wiki
{{#ifeq:{{#expr:{{CURRENTDAYOFYEAR}} mod 6}}|0
|{{کتابهای ماه/برگزیده/۱}}
|{{کتابهای ماه/برگزیده/۲}}
|{{کتابهای ماه/برگزیده/۳}}
|{{کتابهای ماه/برگزیده/۴}}
|{{کتابهای ماه/برگزیده/۵}}
}}
2i2s1wqubs13tz6h9xwjojwsxr0ovke
زبان برنامهنویسی گو
0
39985
135583
135368
2026-10-05T08:39:00Z
Fwldom
26269
135583
wikitext
text/x-wiki
{{وضعیت|50%}}
{{در دست ویرایش ۲|ماه=می|روز=۱۲|سال=۲۰۲۷}}
== دربارهٔ کتاب ==
[[پرونده:Go Logo Blue.svg|بندانگشتی|چپ|نگاره زبان برنامهنویسی گو]]
این کتاب به آموزش جامع و گامبهگام زبان برنامهنویسی '''گو''' (به انگلیسی: ''Go'') میپردازد. زبان برنامهنویسی گو که توسط شرکت گوگل توسعه یافته است، به دلیل سادگی، سرعت بالا و پشتیبانی قوی از همزمانی (Concurrency) بهسرعت به یکی از زبانهای محبوب در حوزهٔ توسعهٔ نرمافزار، بهویژه در زمینهٔ سامانههای مقیاسپذیر و برنامههای تحت وب، تبدیل شده است.
این کتاب با زبانی روان و آموزشی تهیه شده و تلاش شده است تا علاوه بر بیان مفاهیم نظری، نمونهکدهای کاربردی و مثالهای عملی نیز ارائه گردد. هدف از نگارش این اثر آن است که خوانندگان با مفاهیم پایه تا مباحث پیشرفتهٔ این زبان آشنا شوند و توانایی استفادهٔ عملی از آن را در پروژههای مختلف به دست آورند.
مطالعهٔ این کتاب به علاقهمندان برنامهنویسی، دانشجویان، و همچنین برنامهنویسان حرفهای توصیه میشود که قصد دارند زبان گو را بهعنوان ابزاری قدرتمند برای توسعهٔ نرمافزار بیاموزند و در عمل بهکار گیرند.
== فهرست ==
{{Stages}}
<!--
* [[پرونده:00%.svg]]
* [[پرونده:25%.svg]]
* [[پرونده:50%.svg]]
* [[پرونده:75%.svg]]
* [[پرونده:100 percent.svg]]
-->
=== فصل نخست [[پرونده:100 percent.svg]] ===
* [[زبان برنامهنویسی گو/مقدمه|مقدمه]] [[پرونده:100 percent.svg]]
* [[زبان برنامهنویسی گو/اولین برنامه|اولین برنامه و اجرای آن]] [[پرونده:100 percent.svg]]
* [[زبان برنامهنویسی گو/ساختارکد|ساختار کد زبان برنامه نویسی گو]] [[پرونده:100 percent.svg]]
* [[زبان برنامهنویسی گو/عناصر لغوی|عناصر لغوی ]] [[پرونده:100 percent.svg]]
=== فصل ۲: مبانی[[پرونده:100 percent.svg]]===
* [[زبان برنامهنویسی گو/متغیرها|متغیرها]] [[پرونده:100 percent.svg]]
* [[زبان برنامهنویسی گو/ثابتها|ثابتها]] [[پرونده:100 percent.svg]]
* [[زبان برنامهنویسی گو/تایپها (نوعها)|تایپها (نوعها)]] [[پرونده:100 percent.svg]]
=== فصل ۳: شرطها و حلقهها [[پرونده:100 percent.svg]] ===
* [[زبان برنامهنویسی گو/بلوکهای کد|بلوکهای کد]] [[پرونده:100 percent.svg]]
* [[زبان برنامهنویسی گو/عملگرها و عبارات|عملگرها و عبارات]] [[پرونده:100 percent.svg]]
* [[زبان برنامهنویسی گو/شرطها|شرطها در گو]] [[پرونده:100 percent.svg]]
* [[زبان برنامه نویسی گو/حلقهها|حلقهها]] [[پرونده:100 percent.svg]]
=== فصل ۴: ساختارهای دادهای پایه آرایهها [[پرونده:50 percent.svg]] ===
*[[زبان برنامهنویسی گو/اسلایسها|اسلایسها (Slices)]] [[پرونده:100 percent.svg]]
*[[زبان برنامهنویسی گو/نقشهها (Maps)|نقشهها (Maps)]] [[پرونده:100 percent.svg]]
*[[زبان برنامهنویسی گو/ساختارها (Structs)|ساختارها (Structs)]] [[پرونده:00 percent.svg]]
*[[زبان برنامهنویسی گو/اشارهگرها (Pointers)|اشارهگرها (Pointers)]] [[پرونده:00 percent.svg]]
=== فصل ۵: توابع [[پرونده:100 percent.svg]] ===
* [[زبان برنامهنویسی گو/تعریف و استفاده از توابع|تعریف و استفاده از توابع]] [[پرونده:100 percent.svg]]
* [[زبان برنامهنویسی گو/آرگومانها و مقادیر بازگشتی|آرگومانها و مقادیر بازگشتی]] [[پرونده:100 percent.svg]]
* [[زبان برنامهنویسی گو/توابع ناشناس و توابع به عنوان مقادیر|توابع ناشناس و توابع به عنوان مقادیر]] [[پرونده:100 percent.svg]]
* [[زبان برنامهنویسی گو/متدها و دریافتکنندهها|متدها و دریافتکنندهها (Receivers)]] [[پرونده:100 percent.svg]]
=== فصل ۶: بستهها و ماژولها [[پرونده:25 percent.svg]] ===
* [[زبان برنامهنویسی گو/ساختار و نحوه استفاده از بستهها|ساختار و نحوه استفاده از بستهها (Packages)]] [[پرونده:100 percent.svg]]
* [[زبان برنامهنویسی گو/مدیریت وابستگیها با استفاده از ماژولها|مدیریت وابستگیها با استفاده از ماژولها (Modules)]] [[پرونده:00 percent.svg]]
* [[زبان برنامهنویسی گو/استفاده از بستههای استاندارد گو|استفاده از بستههای استاندارد Go]] [[پرونده:00 percent.svg]]
* [[زبان برنامهنویسی گو/ایجاد و استفاده از بستههای شخصیسازی شده|ایجاد و استفاده از بستههای شخصیسازی شده]] [[پرونده:00 percent.svg]]
=== فصل ۷: برنامهنویسی همزمان (Concurrency) ===
* [[زبان برنامهنویسی گو/مفاهیم همزمانی|مفاهیم همزمانی در Go]] [[پرونده:00 percent.svg]]
* [[زبان برنامهنویسی گو/گوروتینها|گوروتینها (Goroutines)]] [[پرونده:00 percent.svg]]
* [[زبان برنامهنویسی گو/کانالها|کانالها (Channels)]] [[پرونده:00 percent.svg]]
* [[زبان برنامهنویسی گو/الگوهای همزمانی|الگوهای پیشرفته همزمانی]] [[پرونده:00 percent.svg]]
=== فصل ۸: مدیریت خطا و تست [[پرونده:50 percent.svg]] ===
* [[زبان برنامهنویسی گو/مدیریت خطاها|مدیریت خطاها در Go]] [[پرونده:100 percent.svg]]
* [[زبان برنامهنویسی گو/اصول نوشتن کدها|اصول نوشتن کدهای ایمن]] [[پرونده:100 percent.svg]]
* [[زبان برنامهنویسی گو/تست واحد|تست واحد (Unit Testing)]] [[پرونده:00 percent.svg]]
* [[زبان برنامهنویسی گو/تست یکپارچگی|تست یکپارچگی (Integration Testing)]] [[پرونده:00 percent.svg]]
* [[زبان برنامهنویسی گو/ابزارهای تست|ابزارهای تست در Go]] [[پرونده:00 percent.svg]]
=== فصل ۹: برنامهنویسی پیشرفته در Go ===
* [[زبان برنامهنویسی گو/اینترفیسها و پلیمورفیسم|اینترفیسها و پلیمورفیسم]] [[پرونده:25 percent.svg]]
* [[زبان برنامهنویسی گو/بازتاب|بازتاب (Reflection)]] [[پرونده:25 percent.svg]]
* [[زبان برنامهنویسی گو/کار با فایلها و سیستمعامل|کار با فایلها و سیستمعامل]] [[پرونده:25 percent.svg]]
* [[زبان برنامهنویسی گو/برنامهنویسی شبکه|برنامهنویسی شبکه (Networking)]] [[پرونده:25 percent.svg]]
* [[زبان برنامهنویسی گو/کار با دیتابیسها|کار با دیتابیسها]] [[پرونده:25 percent.svg]]
=== فصل ۱۰: بهینهسازی و ابزارهای کاربردی ===
* بهینهسازی عملکرد و حافظه
* پروفایلینگ و دیباگینگ
* استفاده از ابزارهای توسعه Go
* مدیریت پروژههای بزرگ
=== فصل ۱۱: پروژههای کاربردی ===
* ساخت یک وبسرویس ساده
* ساخت یک ابزار خط فرمان (CLI)
* توسعه یک برنامه توزیعشده با Go
=== فصل ۱۲: منابع بیشتر و مسیرهای یادگیری [[پرونده:25 percent.svg]] ===
* [[زبان برنامهنویسی گو/منابع آموزشی آنلاین|منابع آموزشی آنلاین]] [[پرونده:100 percent.svg]]
* جامعههای برنامهنویسی Go [[پرونده:00 percent.svg]]
* پروژههای متنباز برای مشارکت [[پرونده:00 percent.svg]]
* پیوستها [[پرونده:00 percent.svg]]
* مرجع دستورات Go [[پرونده:00 percent.svg]]
* سوالات متداول [[پرونده:00 percent.svg]]
* [[زبان برنامهنویسی گو/حل تمرینها|حل تمرینها]] [[پرونده:50 percent.svg]]
[[رده:زبان برنامهنویسی گو]]
o21hzyztoj6ceogz865tjak3b5m8e44
بحث کاربر:Vivairan2
3
41992
135557
135473
2026-10-05T07:28:42Z
Fwldom
26269
/* اعطای دسترسی گشتزن */ بخش جدید
135557
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)
== درخواست مدیرشدن ==
درود بر شما، شما دوباره درخواست مدیرشدن ارسال کردید که با توجه به صلاح دید ویکیمدیا مدیر جدید انتخاب شده است. تا 2 دی 1405 بعد از آن میتوانید درخواست مدیریت خود را در صفحه نظرخواهی بگذارید.
* چندین مورد هرزهنگاری مستند شده (کپی برداری مطالب از سایر ویکیها بدون تغییر)
* همچنین سوگیری در صفحات تاریخ ایران.
این ها همه میتوانند دلایلی برای بستن دسترسی موقت شما باشند، خواهشمندم به ویرایش ادامه بدهید و موارد بالا را رعایت بفرمائید در غیر اینصورت با توجه به قوانین دسترسی ویرایش شما را بصورت موقت خواهم بست.
سپاس بیکران
نکته: اگر نیاز به دسترسی خاصی برای کمک به ویکیکتاب دارید میتوانید در صفحه بحث اینجانب درخواست خود را ارسال بفرمائید. [[کاربر:Fwldom|Fwldom]] ([[بحث کاربر:Fwldom|بحث]]) ۲۹ سپتامبر ۲۰۲۶، ساعت ۰۶:۱۲ (UTC)
== خرابکاری، سوگیری - هشدار به کاربر ==
درود بر شما، تغییرات نامنساب و گاها خرابکاری یا سوگیری که با توجه به قوانین ویکی کتاب محسوب میشوند شامل موارد زیر است و با توجه به این موارد هشدار به شما میدهم.
* کپی از سایر ویکیها بدون تغییر و لینک های اشتباه در ([[ویکیکتاب:شیوه ارجاع به منابع]] و ...)
* سوگیری در کتاب [[تاریخ ایران]] با استفاده از نام توهین آمیز و اضافه کردن بخش جدیدی که نیاز نبود.
* یک اشتباه دیگر باعث میشود که حساب شما محدود شود.
<div style="color: #000; font-size: 1em; width: 90%; border: 1px solid #F30; background-color: #FFF0C0; text-align:center; direction:rtl; clear:both; padding:4px; margin:4px auto;">
[[پرونده:Stop2.png|right|50px]]
با درود! تغییراتی که در صفحهها میدهید [[w:وپ:خرابکار|خرابکاری]] محسوب میشود. خواهشمندیم که دست نگه دارید. برای تمرین، به [[ویکیکتاب:صفحه تمرین|صفحهٔ تمرین]] بروید. برای کسب اطلاعات بیشتر به [[وک:راهنما|صفحهٔ راهنما]] رجوع کنید.'''
</div>
<blockquote>[[رده:الگوهای هشدار به کاربر]]</blockquote>[[کاربر:Fwldom|Fwldom]] ([[بحث کاربر:Fwldom|بحث]]) ۲۹ سپتامبر ۲۰۲۶، ساعت ۰۸:۲۶ (UTC)
:بهتون هشدار دادم، کپی کردن مطالب بدون تغییر هیچگونه لینک یا حتی محتوایی از ویکیپدیا، باعث بهم ریختگی محتوا، گمهراه شدن کاربران جدید و ایجاد صفحات با محتوای اضافی میشود.
:اگر این اقدامات را پایان ندهید مجبور به بستن دسترسی شما میشوم.
:<div style="color: #000; font-size: 1em; width: 90%; border: 1px solid #b32424; background-color: #fee7e6; text-align:center; direction:rtl; clear:both; margin: 1em; padding: 1em">
[[پرونده:Ambox octagon stop.svg|right|70px]]
شما براساس سیاستهای ویکیکتاب، '''کاربر [[وک:خرابکاری|خرابکار]]''' تشخیص داده شدهاید. منش خود را نسبت به ویکیکتاب تغییر دهید. در غیر این صورت دسترسی شما برای مدت محدود یا نامحدود قطع خواهد شد. <span style="color:#d33">'''این آخرین هشدار است.'''</span>
</div>
[[کاربر:Fwldom|Fwldom]] ([[بحث کاربر:Fwldom|بحث]]) ۳۰ سپتامبر ۲۰۲۶، ساعت ۱۱:۲۷ (UTC)
== نامزد حذف سریع ==
درود بر شما، صفحاتی را با خالی کردید و نامزد حذف سریع لازم میدونم که علت نامزدی حذف سریع و خالی کردن صفحات را بدونم تا اقدام به حذف صفحات بکنم.
[[:رده:صفحههای نامزد حذف سریع]] [[کاربر:Fwldom|Fwldom]] ([[بحث کاربر:Fwldom|بحث]]) ۲ اکتبر ۲۰۲۶، ساعت ۰۸:۲۴ (UTC)
:درود. حذف کنید، همه یا تبلیغاتی هستند یا خرابکاری. متافیزیکا تبلیغ یک مجله بود که به جای محتوا فقط چند پیوند گذاشته بود. [[کاربر:Vivairan2|Vivairan2]] ([[بحث کاربر:Vivairan2|بحث]]) ۲ اکتبر ۲۰۲۶، ساعت ۰۸:۳۲ (UTC)
== اعطای دسترسی گشتزن ==
درود بر شما،
با توجه به تلاشهای شما در ویکیسازی و ایجاد محتوا در ویکیکتاب اینجانب مدیر ویکیکتاب دسترسی گشتزن را به مدت یکماه (تا ۲۰ مهر) به شما اعطا کردم.
امیدوارم بتوانید به بهترین نوع از این دسترسی برای ارتقای کیفیت و محتوای ویکیکتاب استفاده کنید.
* راهنمای استفاده: [[ویکیکتاب:گشتزنان]]
سپاس بیکران [[کاربر:Fwldom|Fwldom]] ([[بحث کاربر:Fwldom|بحث]]) ۵ اکتبر ۲۰۲۶، ساعت ۰۷:۲۸ (UTC)
bbdm1dbd2pjncac4t5byws88ny713s8
کوهنوردی/پیشگفتار
0
42185
135566
135523
2026-10-05T07:54:12Z
Fwldom
26269
added [[Category:کوهنوردی]] با استفاده از ردهساز
135566
wikitext
text/x-wiki
{{ناوبری
|قبلی=
|فعلی=پیش گفتار
|بعدی=تاریخچه کوهنوردی
}}
==پیشگفتار==
'''کوهنوردی''' یکی از فعالیتهای ورزشی و طبیعتمحور است که در آن انسان با پیمایش کوهستان و رویارویی با پستیوبلندیها، شرایط جوی و مسیرهای گوناگون به ارتفاعات و قلهها دست مییابد. کوهنوردی میتواند از یک پیمایش ساده در دامنهٔ کوه آغاز شود و تا صعودهای فنی و دشوار در سنگ، برف و یخ ادامه پیدا کند. کوهنورد برای انجام این کار به آمادگی پیکری، شناخت محیط کوهستان، آشنایی با ابزارها و توانایی تصمیمگیری در شرایط گوناگون نیاز دارد.
کوهنوردی تنها رسیدن به قله نیست. آشنایی با طبیعت، رعایت ایمنی، همکاری با همنوردان، شناخت تواناییهای فردی و احترام به محیط زیست بخش مهمی از این فعالیت به شمار میآید. یک کوهنورد باید بتواند میان هدف صعود و ایمنی خود و گروه تعادل برقرار کند و در شرایط خطرناک، بازگشت را نیز بهعنوان بخشی از موفقیت بپذیرد.
کوهستان محیطی پویا و گاه پیشبینیناپذیر است. تغییر ناگهانی هوا، مه، بارش برف و باران، رعدوبرق، یخزدگی، سقوط سنگ، بهمن، گمشدن در مسیر و کاهش توان بدنی در ارتفاع از جمله خطرهایی هستند که ممکن است کوهنورد با آنها روبهرو شود. ازاینرو، آموزش و آمادگی پیش از صعود اهمیت زیادی دارد.
[[../آمادگی پیکری/]]، [[../آمادگی روانی/]]، [[../افزارگان کوهنوردی/]]، [[../ناوبری و نقشهخوانی/]]، [[../هواشناسی کوهستان/]] و [[../ایمنی و پیشگیری از خطر/]] از دانشهایی هستند که به کوهنورد کمک میکنند با آمادگی بیشتری وارد کوهستان شود.
کوهنوردی همچنین میتواند زمینهای برای شناخت جغرافیا و طبیعت یک سرزمین باشد. ایران با داشتن رشتهکوههایی مانند [[w:fa:رشتهکوه البرز|البرز]] و [[w:fa:رشتهکوه زاگرس|زاگرس]] و قلههای گوناگون، محیطهای متنوعی برای کوهپیمایی و کوهنوردی دارد. آشنایی با این کوهها و قلهها بخش مهمی از شناخت کوهستان ایران است.
این کتاب میکوشد موضوع کوهنوردی را از جنبههای گوناگون بررسی کند؛ از آمادگی و تجهیزات گرفته تا مهارتهای پیمایش، صعودهای فنی، ایمنی، محیط زیست و شناخت قلههای ایران و جهان. هدف آن ارائهٔ ساختاری منظم برای آشنایی با این رشته و گردآوری دانش مرتبط با کوهستان است.
'''نکته:''' کوهنوردی فعالیتی است که میتواند از مسیرهای ساده و کمخطر تا صعودهای فنی و تخصصی گسترده باشد. مطالب آموزشی این دانشنامه جایگزین آموزش عملی زیر نظر مربی یا راهنمای واجد صلاحیت نیست، بهویژه در فعالیتهای فنی و شرایط دشوار کوهستان.
[[رده:کوهنوردی]]
jb22iqaaej75qlyodrg2v1lv9axfzax
کوهنوردی/آمادگی روانی
0
42192
135567
135520
2026-10-05T07:54:44Z
Fwldom
26269
added [[Category:کوهنوردی]] با استفاده از ردهساز
135567
wikitext
text/x-wiki
{{ناوبری|قبلی=آمادگی پیکری|فعلی=آمادگی روانی|بعدی=افزارگان کوهنوردی}}
[[رده:کوهنوردی]]
b2vv371z3h7y9026a8lxhc46wg4ooss
135569
135567
2026-10-05T07:58:27Z
Fwldom
26269
135569
wikitext
text/x-wiki
{{ناوبری|قبلی=آمادگی پیکری|فعلی=آمادگی روانی|بعدی=افزارگان کوهنوردی}}
== آمادگی روانی ==
آمادگی روانی یکی از مهمترین بخشهای آمادگی برای کوهنوردی است. کوهنورد باید از نظر ذهنی و روحی آمادگی روبهرو شدن با شرایط مختلف و دشوار کوهستان را داشته باشد.
=== اعتماد به نفس ===
اعتماد به نفس به کوهنورد کمک میکند تواناییهای خود را بهدرستی ارزیابی کند و در شرایط دشوار تصمیم مناسب بگیرد. اعتماد به نفس نباید باعث غرور یا نادیده گرفتن خطرات شود.
=== کنترل ترس و اضطراب ===
ترس و اضطراب در شرایط خطرناک طبیعی است. کوهنورد باید بتواند احساسات خود را کنترل کرده و از تصمیمگیری عجولانه خودداری کند. حفظ آرامش در شرایط دشوار باعث افزایش توانایی تصمیمگیری میشود.
=== تمرکز ===
تمرکز در هنگام کوهنوردی اهمیت زیادی دارد. کوهنورد باید به مسیر، وضعیت آبوهوا، شرایط زمین و علائم خطر توجه داشته باشد و از عواملی که موجب کاهش تمرکز میشوند دوری کند.
=== اراده و پشتکار ===
کوهنوردی نیازمند اراده و پشتکار است. خستگی، سرما، گرما، ارتفاع و دشواری مسیر میتوانند باعث کاهش انگیزه شوند. داشتن آمادگی ذهنی و هدف مشخص به ادامه فعالیت کمک میکند.
=== تصمیمگیری ===
کوهنورد باید بتواند در شرایط مختلف تصمیم مناسب بگیرد. شناخت تواناییهای شخصی، بررسی شرایط مسیر و توجه به وضعیت اعضای گروه در تصمیمگیری اهمیت دارد. در شرایط نامناسب، بازگشت یا تغییر مسیر میتواند تصمیم درست باشد.
=== مقابله با شرایط دشوار ===
کوهنورد باید از نظر ذهنی برای روبهرو شدن با شرایط پیشبینینشده مانند تغییر ناگهانی آبوهوا، گمشدن مسیر، خستگی یا بروز مشکل برای یکی از اعضای گروه آماده باشد. حفظ آرامش و بررسی منطقی شرایط در چنین مواقعی ضروری است.
=== کار گروهی ===
آمادگی روانی شامل توانایی همکاری با دیگر اعضای گروه نیز میشود. رعایت نظر سرپرست، توجه به وضعیت سایر افراد و کمک به اعضای گروه از عوامل مهم در کوهنوردی گروهی است.
=== شناخت تواناییهای خود ===
کوهنورد باید تواناییها و محدودیتهای جسمی و روانی خود را بشناسد و از انجام فعالیت فراتر از توان خودداری کند. شناخت صحیح تواناییها از تصمیمهای خطرناک جلوگیری میکند.
[[رده:کوهنوردی]]
thh5mos4j11rp7tu8gejgasr5xl7ebu
ویکیکودک:دایناسورها/پتروسورها
110
42196
135553
2026-10-05T07:20:27Z
Vivairan2
28134
ایجاد صفحه نو
135553
wikitext
text/x-wiki
{{دایناسور کودک}}
پتروسورها در واقع سوسمارهای بزرگی بودند که در کنار دایناسورها زندگی میکردند و همزمان با پایان دوره دایناسورها همگی از بین رفتند. از آنجایی که ویژگیهای پروازی داشتنند، در بسیاری از کتابها آنها را جزو پرندگان عصر دایناسورها در نظر میگیرند. البته دانستههای ما نشان میدهند که پترسورها ارتباطی با پرندگان امروزی ندارند و تبار پرندگان امروزی در نظر گرفته نمیشوند.
==آنها چه میخوردند؟ ==
==آنها در چه زمانی زندگی میکردند؟==
==آنها در کجا زندگی میکردند؟==
==آنها چکونه کشف شدند؟==
==چهچیزهایی نیاز داریم درباره شان بدانیم؟==
[[رده:دایناسورها]]
gr38m43o27kzhbrmdmh9dvei9lx4x9s
135554
135553
2026-10-05T07:24:38Z
Vivairan2
28134
افزودن مطلب جدید
135554
wikitext
text/x-wiki
{{دایناسور کودک}}
پتروسورها (که به آنها پتروداکتیلها نیز گفته میشود) در واقع سوسمارهای بزرگی بودند که در کنار دایناسورها زندگی میکردند و همزمان با پایان دوره دایناسورها همگی از بین رفتند. از آنجایی که ویژگیهای پروازی داشتنند، در بسیاری از کتابها آنها را جزو پرندگان عصر دایناسورها در نظر میگیرند. البته دانستههای ما نشان میدهند که پترسورها ارتباطی با پرندگان امروزی ندارند و تبار پرندگان امروزی در نظر گرفته نمیشوند.
==آنها چه میخوردند؟ ==
پتروداکتیلها گوشتخوار و لاشخور بودند. در ماههای اول تولد، حشره میخوردند. وقتی بالغ میشدند ماهی زیاد میخوردند برای اینکه روی سطح آب پرواز میکردند و با فرو کردن منقارشان درون آب ماهی میگرفتند. آنها همچنین دایناسورهای مرده را میخوردند.
==آنها در چه زمانی زندگی میکردند؟==
==آنها در کجا زندگی میکردند؟==
==آنها چکونه کشف شدند؟==
==چهچیزهایی نیاز داریم درباره شان بدانیم؟==
[[رده:دایناسورها]]
74bqze04duzj8xt28784ihf8oah0sna
135555
135554
2026-10-05T07:25:25Z
Vivairan2
28134
افزودن مطلب جدید
135555
wikitext
text/x-wiki
{{دایناسور کودک}}
پتروسورها (که به آنها پتروداکتیلها نیز گفته میشود) در واقع سوسمارهای بزرگی بودند که در کنار دایناسورها زندگی میکردند و همزمان با پایان دوره دایناسورها همگی از بین رفتند. از آنجایی که ویژگیهای پروازی داشتنند، در بسیاری از کتابها آنها را جزو پرندگان عصر دایناسورها در نظر میگیرند. البته دانستههای ما نشان میدهند که پترسورها ارتباطی با پرندگان امروزی ندارند و تبار پرندگان امروزی در نظر گرفته نمیشوند.
==آنها چه میخوردند؟ ==
پتروداکتیلها گوشتخوار و لاشخور بودند. در ماههای اول تولد، حشره میخوردند. وقتی بالغ میشدند ماهی زیاد میخوردند برای اینکه روی سطح آب پرواز میکردند و با فرو کردن منقارشان درون آب ماهی میگرفتند. آنها همچنین دایناسورهای مرده را میخوردند.
==آنها در چه زمانی زندگی میکردند؟==
پتروسورها در دوره مزوزوئیک زندگی میکردند.
==آنها در کجا زندگی میکردند؟==
==آنها چکونه کشف شدند؟==
==چهچیزهایی نیاز داریم درباره شان بدانیم؟==
[[رده:دایناسورها]]
rn89h32ujx96plx2d34wpa60yle0feb
135556
135555
2026-10-05T07:27:55Z
Vivairan2
28134
افزودن مطلب جدید
135556
wikitext
text/x-wiki
{{دایناسور کودک}}
پتروسورها (که به آنها پتروداکتیلها نیز گفته میشود) در واقع سوسمارهای بزرگی بودند که در کنار دایناسورها زندگی میکردند و همزمان با پایان دوره دایناسورها همگی از بین رفتند. از آنجایی که ویژگیهای پروازی داشتنند، در بسیاری از کتابها آنها را جزو پرندگان عصر دایناسورها در نظر میگیرند. البته دانستههای ما نشان میدهند که پترسورها ارتباطی با پرندگان امروزی ندارند و تبار پرندگان امروزی در نظر گرفته نمیشوند.
==آنها چه میخوردند؟ ==
پتروداکتیلها گوشتخوار و لاشخور بودند. در ماههای اول تولد، حشره میخوردند. وقتی بالغ میشدند ماهی زیاد میخوردند برای اینکه روی سطح آب پرواز میکردند و با فرو کردن منقارشان درون آب ماهی میگرفتند. آنها همچنین دایناسورهای مرده را میخوردند.
==آنها در چه زمانی زندگی میکردند؟==
پتروسورها در دوره مزوزوئیک زندگی میکردند.
==آنها در کجا زندگی میکردند؟==
باور بر این است که بسیاری از گونههای پتروسور در نزدیک سواحل دریاها زندگی میکردند، بدین گونه میتوانستند دسترسی به ماهیها و فضای زیاد برای پرواز داشته باشند ضمن اینکه از اختلاف دمایی ستون هوای بالای دریاها برای پرواز کمک میگرفتند.
==آنها چکونه کشف شدند؟==
==چهچیزهایی نیاز داریم درباره شان بدانیم؟==
[[رده:دایناسورها]]
n16uwp2k3old78eih5tv62msvuj4khx
135558
135556
2026-10-05T07:30:42Z
Vivairan2
28134
افزودن مطلب جدید
135558
wikitext
text/x-wiki
{{دایناسور کودک}}
پتروسورها (که به آنها پتروداکتیلها نیز گفته میشود) در واقع سوسمارهای بزرگی بودند که در کنار دایناسورها زندگی میکردند و همزمان با پایان دوره دایناسورها همگی از بین رفتند. از آنجایی که ویژگیهای پروازی داشتنند، در بسیاری از کتابها آنها را جزو پرندگان عصر دایناسورها در نظر میگیرند. البته دانستههای ما نشان میدهند که پترسورها ارتباطی با پرندگان امروزی ندارند و تبار پرندگان امروزی در نظر گرفته نمیشوند.
==آنها چه میخوردند؟ ==
پتروداکتیلها گوشتخوار و لاشخور بودند. در ماههای اول تولد، حشره میخوردند. وقتی بالغ میشدند ماهی زیاد میخوردند برای اینکه روی سطح آب پرواز میکردند و با فرو کردن منقارشان درون آب ماهی میگرفتند. آنها همچنین دایناسورهای مرده را میخوردند.
==آنها در چه زمانی زندگی میکردند؟==
پتروسورها در دوره مزوزوئیک زندگی میکردند.
==آنها در کجا زندگی میکردند؟==
باور بر این است که بسیاری از گونههای پتروسور در نزدیک سواحل دریاها زندگی میکردند، بدین گونه میتوانستند دسترسی به ماهیها و فضای زیاد برای پرواز داشته باشند ضمن اینکه از اختلاف دمایی ستون هوای بالای دریاها برای پرواز کمک میگرفتند.
== آنها چکونه کشف شدند؟ ==
در زمانهای مختلف انواع مختلفی از پترودایناسورها کشف شدهاند؛ اولین نوع پتروداسناسور موسوم به پتروداکتیلوس در سال ۱۷۸۴ توسط یک دانشمند ایتالیایی به نام کوزیمو کولینی در فرانسه کشف شد.
==چهچیزهایی نیاز داریم درباره شان بدانیم؟==
[[رده:دایناسورها]]
kw5ltbyina3b9usgsuddwdkdvv0x3c9
135560
135558
2026-10-05T07:32:29Z
Vivairan2
28134
افزودن مطلب جدید
135560
wikitext
text/x-wiki
{{دایناسور کودک}}
پتروسورها (که به آنها پتروداکتیلها نیز گفته میشود) در واقع سوسمارهای بزرگی بودند که در کنار دایناسورها زندگی میکردند و همزمان با پایان دوره دایناسورها همگی از بین رفتند. از آنجایی که ویژگیهای پروازی داشتنند، در بسیاری از کتابها آنها را جزو پرندگان عصر دایناسورها در نظر میگیرند. البته دانستههای ما نشان میدهند که پترسورها ارتباطی با پرندگان امروزی ندارند و تبار پرندگان امروزی در نظر گرفته نمیشوند.
==آنها چه میخوردند؟ ==
پتروداکتیلها گوشتخوار و لاشخور بودند. در ماههای اول تولد، حشره میخوردند. وقتی بالغ میشدند ماهی زیاد میخوردند برای اینکه روی سطح آب پرواز میکردند و با فرو کردن منقارشان درون آب ماهی میگرفتند. آنها همچنین دایناسورهای مرده را میخوردند.
==آنها در چه زمانی زندگی میکردند؟==
پتروسورها در دوره مزوزوئیک زندگی میکردند.
==آنها در کجا زندگی میکردند؟==
باور بر این است که بسیاری از گونههای پتروسور در نزدیک سواحل دریاها زندگی میکردند، بدین گونه میتوانستند دسترسی به ماهیها و فضای زیاد برای پرواز داشته باشند ضمن اینکه از اختلاف دمایی ستون هوای بالای دریاها برای پرواز کمک میگرفتند.
== آنها چکونه کشف شدند؟ ==
در زمانهای مختلف انواع مختلفی از پترودایناسورها کشف شدهاند؛ اولین نوع پتروداسناسور موسوم به پتروداکتیلوس در سال ۱۷۸۴ توسط یک دانشمند ایتالیایی به نام کوزیمو کولینی در فرانسه کشف شد.
==چهچیزهایی نیاز داریم درباره شان بدانیم؟==
* آنها چه رنگی بودند؟
* آنها از تاج روی سرشان به چه منظور استفاده میکردند؟
* آیا آنها واقعا لاشخور بودند؟
* آیا کل بدنشان از خز پوشیده شده بود؟
[[رده:دایناسورها]]
grmoub7bfzod89a9xfxdsk4ododz5tl
کوهنوردی/پوشاک و کفش کوهنوردی
0
42197
135563
2026-10-05T07:51:17Z
Fwldom
26269
صفحهای تازه حاوی «{{ناوبری|قبلی=افزارگان کوهنوردی|فعلی=پوشاک و کفش کوهنوردی|بعدی=خورد و خوراک}}» ایجاد کرد
135563
wikitext
text/x-wiki
{{ناوبری|قبلی=افزارگان کوهنوردی|فعلی=پوشاک و کفش کوهنوردی|بعدی=خورد و خوراک}}
k38ywkrbxe20fp9303tnnxl0nu35k9m
135565
135563
2026-10-05T07:53:22Z
Fwldom
26269
added [[Category:کوهنوردی]] با استفاده از ردهساز
135565
wikitext
text/x-wiki
{{ناوبری|قبلی=افزارگان کوهنوردی|فعلی=پوشاک و کفش کوهنوردی|بعدی=خورد و خوراک}}
[[رده:کوهنوردی]]
mitcrmlf8i9yeos5q7i3ao9mch1ytvc
135576
135565
2026-10-05T08:22:05Z
Fwldom
26269
135576
wikitext
text/x-wiki
{{ناوبری|قبلی=افزارگان کوهنوردی|فعلی=پوشاک و کفش کوهنوردی|بعدی=خورد و خوراک}}
== تجهیزات و پوشش عمومی ==
#'''[[w:fa:چکمه|چکمه]]'''.- باید ۱۵ تا ۱۸ سانتیمتر ارتفاع داشته باشند. جنس زیره میتواند از چرم یا لاستیک ویبرام باشد. اتصال داخلی میتواند دوخته، چسبانده، پرچشده یا ترکیبی از این روشها باشد و میتواند دارای کفی میانی سخت یا انعطافپذیر باشد. ضدآب کردن چرم پوتینها را میتوان با موم، سیلیکون یا چربی انجام داد. برخی پوتینها نیز از پلاستیک ساخته میشوند.
#'''جوراب'''.- دو سیستم وجود دارد:
::* الف) در تماس مستقیم با پوست، جورابهای ابریشمی، پلیپروپیلن یا نایلونی پوشیده شود و روی آن دو جفت جوراب پشمی قرار گیرد.
::* ب) '''سد بخار'''.- در تماس با پوست، جوراب پلیپروپیلن پوشیده شود، سپس یک لایه نایلون و روی آن دو جفت جوراب پشمی قرار گیرد. در صورت نیاز میتوان یک لایه دیگر نایلون نیز اضافه کرد. اگر پیش از پوشیدن جورابها، پاها را با ضدتعریق اسپری کنیم، بسیار کمککننده است.
#'''گتر یا روکش پوتین'''.- باید به ارتفاع، نوع بستهشدن، عایق بودن پارچه و وزن آن توجه کرد.
#'''شلوار'''.- میتوان از شلوارهای پشمی کوتاه تا زیر زانو یا شلوار ورزشی استفاده کرد. برای دماهای پایین میتوان از لباسهای پرِ اردک یا غاز و لباسهای پشمی استفاده کرد. زیر شلوار ورزشی نیز میتوان لباس زیر از جنس پشم، پلیپروپیلن یا توری پوشید. همچنین شلوارهای بادگیر یا ضدآب نیز وجود دارند. باید در نظر داشت که تعادل گرما از طریق حفظ تعادل آن، که [[w:fa:همایستایی|همایستایی]] نامیده میشود، حفظ میگردد.
#'''آنوراک'''.- میتواند مصنوعی یا پر باشد و هر دو نوع در قسمت بیرونی با نایلون پوشانده میشوند.
#'''بادگیر'''.- معمولاً از نایلون ساخته میشود و هدف آن جلوگیری از اتلاف گرما بر اثر [[w:fa:همرفت|همرفت]] است؛ یعنی جریانهای هوا و اثر دمِ لباس.
#'''دستکش'''.- برای انگشتان توصیه میشود در تماس مستقیم با پوست، دستکشهای نایلونی یا ابریشمی پوشیده و روی آن پلیپروپیلن یا پشم قرار داده شود. روی این لایهها میتوان از '''دستکشهای روکشدار''' از جنس پشم، نایلون، فلانل، پر، الیاف پشمی یا دارای سد بخار استفاده کرد.
#'''قمقمه'''.- توصیه میشود برای آب از بطری پلاستیکی عایق و دهانگشاد استفاده شود.
#'''اجاق'''.- بهتر است گازی یا فشاری باشد.
#'''قابلمه، فنجان و قاشق'''.- ترجیحاً از جنس آلومینیوم باشند.
#'''عینک'''.- اگر قرار است روی برف حرکت کنیم، عینک باید دارای حفاظت [[w:fa:پرتو فرابنفش|فرابنفش]] استاندارد باشد و تمام میدان دید را بپوشاند؛ مانند عینکهای اسکی. اگر به عینک طبی نیاز داریم یا از لنز تماسی استفاده میکنیم، همراه داشتن یک جفت جایگزین مفید است.
#'''کولهپشتی'''.- باید راحت، بادوام (با توجه به جنس پارچه و دوختها)، سبک و متناسب با نوع استفاده باشد. کولهپشتیها میتوانند دارای قاب یا بدون قاب باشند که نوع بدون قاب توصیه میشود.
#'''کرامپون'''.- انواع سخت یا انعطافپذیر دارند. از برندهای رایج میتوان به Salewa، SMC، Stubai و Chouinard اشاره کرد. معمولاً از آهن نرم یا آلیاژهای آلومینیوم ساخته میشوند.
#'''کلنگ کوهنوردی'''.- اندازه آن برای صعودهای فنی ۵۵ تا ۶۵ سانتیمتر و برای صعودهای معمولی ۷۵ تا ۸۰ سانتیمتر است. انواع مختلفی از آن وجود دارد: چوب زبانگنجشک (که ارتعاشات را جذب میکند و در عین حال استحکام دارد)، فایبرگلاس (سبک و مقاوم) و فلزی (قوی، سرد و فاقد تعادل).
#'''چادر'''.- چادرهای مناسب ارتفاعات باید کف ضدآب، پوشش دولایه داشته باشند، سبک باشند و دارای مهارهای مناسب باشند. از نظر شکل میتوانند گنبدی، دوشیب یا به شکل موشخانهای باشند.
#'''تشک'''.- بر اساس جنس میتوانند بادی، فومی یا زیراندازی باشند.
#'''کیسه خواب'''.- میتوانند مستطیلی یا [[w:fa:کیسهخواب|مومیاییشکل]] باشند و از پر غاز یا مواد مصنوعی ساخته شوند. باید توجه داشت که کیسه خواب گرما تولید نمیکند و تنها عایق است. ترجیحاً رنگ آن تیره باشد.
#'''سایر موارد'''.- [[w:fa:قطبنما|قطبنما]]، [[w:fa:جعبه کمکهای اولیه|جعبه کمکهای اولیه]]، چراغقوه، دوربین عکاسی، هارنس، کلاه یا کلاهکامل.
== تجهیزات فنی ==
=== کلنگ کوهنوردی ===
==== تعریف کلنگ کوهنوردی ====
به دلیل ناآگاهی از کاربرد کلنگ کوهنوردی در کوهنوردی مکزیک، این وسیله به عنوان ابزار یا تجهیزاتی انحصاری برای کوهستانهای مرتفع و بهطور خاص مکانهایی که برف یا یخ وجود دارد شناخته شده است. این مفهوم اشتباه نسل به نسل در میان کوهنوردی تجربی (بدون آموزش رسمی) منتقل شده است. امروزه باشگاههای سازمانیافته کوهنوردی مکزیک و همچنین مؤسسات معتبر مانند امداد کوهستان و صلیب سرخ مکزیک، کارزارهای مختلفی را برای از بین بردن این عادت آغاز کردهاند؛ عادتی که تنها تنوع کاربردهای کلنگ کوهنوردی را محدود میکند.
کلنگ کوهنوردی کاربردهای متنوعی دارد که از یک گردش ساده در کوهستانهای متوسط که در آن برف یا یخ وجود دارد تا صعود به ارتفاعات بلند که این عناصر در آن وجود دارند، قابل استفاده است. اگر کلنگ در کوهستان متوسط استفاده نمیشود، دلیل آن ناآگاهی از کاربردهای آن است. در ادامه نمونههایی از کاربرد آن ارائه میشود.
==== بخشهای کلنگ کوهنوردی ====
*'''سر یا صلیب کلنگ''':
:* الف) از پیک یا نوک و بیلچه تشکیل شده است و بهتر است این دو در یک قطعه فولاد کربنی یکپارچه باشند. برخی سرها دارای سوراخی در قسمت صلیب هستند که برای اتصال کارابین استفاده میشود.
:* ب) عرض بیلچه باید حداقل ۵ تا ۷ سانتیمتر باشد و عمدتاً برای تراشیدن پلهها و بهعنوان تکیهگاه کف دست هنگام استفاده از کلنگ برای خودحمایتی به کار میرود و میتواند دندانهدار یا بدون دندانه باشد.
:* ج) طول پیک یا نوک باید حداقل ۱۵ تا ۱۸ سانتیمتر باشد و میتواند دندانهدار یا بدون دندانه باشد.
:* د) سر کلنگ باید کاملاً به بدنه آن متصل باشد.
:* هـ) هم پیک و هم بیلچه باید به لبههای تیز ختم شوند، اما نباید حالت نوک بسیار برنده داشته باشند.
*'''دسته یا بدنه کلنگ''':
:* الف) بدنه اصلی کلنگ است. انواع مختلفی از مواد مانند چوب، فایبرگلاس و دورآلومین ساخته میشوند و برخی نیز با روکشهای پلاستیکی محافظت شدهاند.
:* ب) بدنه کلنگ باید بیضیشکل باشد، زیرا این شکل مقاومت بیشتری ایجاد میکند و خارج کردن آن را با چرخاندن جزئی هنگامی که در زمین یا برف فرو رفته است آسانتر میکند. همچنین ایمنی بیشتری در استفاده ایجاد میکند، زیرا از لغزش جلوگیری میشود و کوهنورد با لمس دسته میتواند موقعیت آن را تشخیص دهد.
:* ج) قسمت پایینی دسته باید توسط یک بوش یا غلاف فلزی محافظت شود تا از ترکخوردن آن جلوگیری کرده و همزمان به ثابت کردن انتهای فلزی کمک کند.
:* د) طول دسته به کاربرد یا تکنیک مورد نظر بستگی دارد؛ طول معمول آن بهگونهای است که وقتی کوهنورد ایستاده و سر کلنگ را در دست گرفته است، قسمت انتهایی کلنگ به زمین برسد.
*'''انتهای کلنگ''': انتهای کلنگ باید از فولاد کربنی باشد و کاملاً به دسته متصل شده باشد. میتواند دارای مقطع مربعی، مستطیلی یا مخروطی باشد و حداقل ۶ سانتیمتر طول داشته باشد و به یک لبه تیز، اما نه برنده، ختم شود.
* '''مچبند''': مچبند کوتاه (که بسته به تکنیک متفاوت است) برای آویزان کردن کلنگ در مانورهایی که هر دو دست مورد نیاز هستند مفید است. این مچبند در تمام طول دسته قابل حرکت است و در بالای انتهای کلنگ دارای یک متوقفکننده است که از خارج شدن آن جلوگیری میکند.
==== توصیههایی برای نگهداری ====
* هنگامی که کلنگ استفاده نمیشود، بهتر است انتهای کلنگ، پیک و بیلچه با روکشهای مخصوص خود محافظت شوند.
* هنگام حمل در شهر یا هر نوع وسیله نقلیه، باید محافظهای آن نصب باشند تا از آسیبدیدن افراد یا خود کلنگ جلوگیری شود.
* تا حد امکان باید از تماس مستقیم کلنگ با سنگ جلوگیری کرد؛ یعنی انتهای کلنگ، بیلچه و پیک نباید مستقیماً با سنگ تماس داشته باشند، زیرا در غیر این صورت لبههای آنها گرد شده و دیگر عملکردی را که برای آن طراحی شدهاند نخواهند داشت.
* هنگامی که کلنگ در خانه نگهداری میشود، باید از سوراخ قسمت سر یا صلیب یا در صورت نبود آن از پیک یا بیلچه آویزان شود، بهگونهای که تا حد امکان از خم شدن بدنه جلوگیری شود.
* تا حد امکان باید از وارد شدن ضربه از هر نوع به کلنگ جلوگیری کرد، زیرا ممکن است هر یک از قسمتهای آن ترک خورده یا شکسته شود.
* برای حفظ چوب کلنگ باید به تمیز نگه داشتن هرچه بیشتر آن توجه ویژه داشت. اگر بدنه چوبی است، هنگام نگهداری طولانیمدت آن را لاک زده یا با روغن بزرک چرب کنید.
==== توصیههایی برای استفاده ====
#کلنگ نباید برای بازی قرض داده یا استفاده شود و در کوهستان هرگز نباید از کوهنورد جدا شود؛ حتی بیشتر از این، باید آن را بخشی از بدن خود در نظر گرفت.
#کوهنورد باید به استفاده از کلنگ با هر دو دست عادت کند تا انجام هر نوع کار با آن آسانتر شود.
#پیک اساساً برای ایجاد پله در سطوح سخت، مانند زمین یا یخ، استفاده میشود.
#بیلچه اساساً برای ایجاد پله در سطوح نرم، مانند خاک نرم یا برف، استفاده میشود.
#خودایستایی با پیک یا بیلچه انجام میشود و انتخاب آن به سختی زمین بستگی دارد؛ پیک در زمین سخت و بیلچه در زمین نرم استفاده میشود.
#برای ایجاد نقطه حمایت، کلنگ باید کاملاً در زمین یا برف فرو برده شود. هنگامی که امکان فرو بردن کامل آن وجود ندارد، پیک یا بیلچه را تا حد امکان فرو کرده و روی آن فشار وارد میکنند تا خارج نشود.
#کلنگ در هر شرایطی باید در سمت کوه قرار داشته باشد؛ یعنی هنگام صعود، بین کوهنورد و کوه قرار گیرد.
#در هنگام فرود، کلنگ باید بین فرد و دره قرار گیرد، مشروط بر اینکه حرکت بهدرستی انجام شود.
==== کاربردهای کلنگ ====
#'''کلنگ بهعنوان سومین نقطه اتکا یا کلنگعصا''': همانطور که از نام آن پیداست، در این حالت از کلنگ مانند عصا برای ایجاد یک نقطه اتکا و حفظ تعادل استفاده میشود. هنگام حرکت با کلنگ در این وضعیت، چه در صعود و چه در فرود، پیک آن باید همیشه در جهتی باشد که کوهنورد در حال حرکت است؛ یعنی در صعود، پیک باید به سمت کوه و در فرود به سمت دره باشد. باید به یاد داشت که در اصطلاح کوهنوردی، رفتن به سمت دره یعنی رفتن به سمت پایین. روش صحیح حمل کلنگ این است که کف دست کوهنورد روی بیلچه قرار گیرد و با انگشت شست یا اشاره، پیک را دربرگیرد، بدون استفاده از مچبند، و کلنگ همیشه بین کوهنورد و کوه قرار داشته باشد.
#'''کلنگ جارویی یا راماس''' (en ramasse): در این روش، کلنگ در فرودها، تراورسهای افقی، تراورسهای مورب صعودی یا نزولی با شیب نسبتاً زیاد استفاده میشود و وضعیت کلنگ به شکل زیر است:
::*'''تراورس افقی''': کلنگ بهصورت افقی در مقابل کوهنورد قرار میگیرد و با هر دو دست نگه داشته میشود؛ در حالی که پیک باید در جلوی بدن باشد. انتهای کلنگ باید با فشاری مناسب با شیب در تماس باشد، بهگونهای که نلغزد و ایمنی بیشتری ایجاد کند. یک دست سر کلنگ را میگیرد و نیرویی رو به بالا وارد میکند و دست دیگر کلنگ را تا حد امکان نزدیک به انتهای آن میگیرد. تعادل با تکیه بر کلنگ حفظ میشود. هنگامی که یک پا در حال حرکت است، پای دیگر باید کاملاً ثابت و ایمن باشد و حرکات بهگونهای هماهنگ شوند که همیشه حداقل دو نقطه اتکا یا تماس با شیب وجود داشته باشد: یک پا و انتهای کلنگ، یا هر دو پا در زمانی که انتهای کلنگ با شیب تماس ندارد.
::*'''تراورس مورب صعودی یا نزولی''': همان حرکات حالت قبل انجام میشود و تنها تفاوت این است که حرکت بهصورت مورب رو به بالا یا پایین انجام میشود. باید به یاد داشت که پیک کلنگ همیشه باید رو به جلو باشد و کلنگ باید محکم گرفته شود تا از افتادن آن جلوگیری شود.
::*'''فرود از شیبهای بسیار پرشیب''': وضعیت کلنگ به این صورت است: کلنگ بهصورت افقی در مقابل کوهنورد قرار میگیرد، پیک به سمت جلو است و با هر دو دست نگه داشته میشود. پشت کوهنورد به سمت شیب و صورت او به سمت دره قرار دارد. انتهای کلنگ به سمت شیب برده میشود تا با آن تماس پیدا کند و در پشت کوهنورد قرار گیرد. در طول فرود، انتهای کلنگ باید همواره با شیب در تماس باشد. هنگامی که کلنگ در سمت راست قرار دارد، پیک باید به سمت راست کوهنورد و هنگامی که در سمت چپ قرار دارد، پیک باید به سمت چپ کوهنورد اشاره کند.
::*'''کلنگ در خودایستایی''': خودایستایی را میتوان با پیک یا بیلچه کلنگ و در برخی موارد با بدنه آن انجام داد؛ بنابراین کوهنورد باید بتواند زمین زیر پای خود را ارزیابی کند. اگر زمین سخت باشد، خودایستایی باید با پیک کلنگ انجام شود؛ اگر زمین نرم باشد، با بیلچه و اگر زمین بسیار نرم و شیب بسیار زیاد باشد، باید تلاش شود انتهای کلنگ و دسته آن تا حد امکان در زمین فرو رود و کلنگ محکم گرفته شود. هدف از تمام این کارها متوقف کردن سقوط است. اگر کوهنورد نتواند به این شکل متوقف شود، باید سریع واکنش نشان داده و روش دیگری را امتحان کند و این کار را ادامه دهد و همیشه از کلنگ استفاده کرده و از رها کردن آن خودداری کند. اما در صورت از دست دادن کلنگ، باید به شکم قرار گرفته و رو به شیب باشد، پاها و دستها را تا حد امکان باز کرده و کاملاً کشیده نگه دارد و با آنها به سمت زمین فشار وارد کند. هنگامی که کوهنورد در حال فرود است و زمین میخورد، نخستین کار این است که کلنگ را با هر دو دست بگیرد، غلت بزند و پیش از پایان غلت، بدن را طوری بچرخاند که صورت کوهنورد رو به شیب قرار گیرد، پاها تا حد امکان باز باشند و کلنگ زیر بدن کوهنورد قرار گیرد و بهصورت مورب از کمی بالاتر از شانه، جایی که سر یا صلیب کلنگ قرار دارد، تا کمر، یعنی محل انتهای کلنگ، امتداد داشته باشد. بدن کوهنورد باید تا توقف سقوط بر کلنگ فشار وارد کند و تمام روشهای ذکرشده را برای توقف سقوط به کار گیرد.
::*'''کلنگ لنگر''': در این حالت کوهنورد از کلنگ مانند یک لنگر استفاده میکند؛ یعنی آن را با پیک یا بیلچه در نقطهای ایمن فرو میکند. این کار را میتوان با یک دست انجام داد؛ به این صورت که کلنگ از نزدیکی انتهای آن گرفته شده و بالاتر از آن لنگر میشود و سپس برای صعود از آن کشیده میشود. همچنین میتوان این کار را با هر دو دست انجام داد؛ یک دست سر کلنگ را میگیرد و دست دیگر نزدیک انتهای آن قرار گرفته، آن را مهار کرده و کوهنورد خود را با آن بالا میکشد. میتوان پیش از هر حرکت برای پاها پلههایی ایجاد کرد و در هر حرکت و هر بالا کشیدن، کلنگ باید بسته به جنس زمین، با پیک یا بیلچه بهطور کامل مهار شود.
::*'''کلنگ تکیهگاه''': در این حالت کوهنورد از کلنگ بهعنوان یک نقطه اتکای دیگر، هم در صعود و هم در فرود، استفاده میکند. در صعود، سر کلنگ را گرفته و آن را کمی بالاتر از زانو روی شیب فرو میکند و برای بالا رفتن به آن تکیه میکند. پیش از آن میتوان برای پاها پلههایی ایجاد کرد. این تکنیک برای صعود از دیوارههای پرشیب مفید است و میتوان از یک یا دو کلنگ، یکی در هر دست، استفاده کرد. در فرود، کلنگ از قسمت بدنه و نزدیک سر آن گرفته شده و همزمان با پایین آمدن، در شیب فرو برده میشود و همیشه حداقل دو نقطه اتکا برای حفظ تعادل وجود دارد.
=== کرامپونها ===
کرامپونها امکان حرکت در زمینهای دارای یخ سخت یا شیبهای بسیار زیاد را فراهم میکنند. آنها از میخها، حلقهها، پاشنهبندها، پیچها، پل، بند و سگک تشکیل شدهاند. کرامپونها میتوانند ۱۰ یا ۱۲ میخ داشته باشند. بندهای کرامپون از چرم، پنبه، نایلون یا نئوپرن ساخته میشوند که نوع نئوپرن به دلیل سهولت نصب و یخ نزدن، بیشتر توصیه میشود. بند کرامپون به شکل ضربدر بسته میشود؛ از پاشنه بیرونی شروع شده و بهصورت زیگزاگ تا حلقههای قسمت جلو ادامه مییابد و در انتها مسیر بهصورت معکوس طی شده و در پایان با دو سر بند یک گره ساده زده میشود. کرامپونها باید همیشه بهخوبی تیز باشند، اما فقط لبههای جانبی آنها تیز شوند و نباید در زمینهای مورنی یا برف سست استفاده شوند. پوتین باید بهخوبی روی کرامپون محکم شود و هنگامی که کرامپون پاشنهبند ندارد، باید با سیم محکم شود. هم کرامپونها و هم کلنگ باید پس از صعود تمیز شوند. بهتر است کرامپونها در خارج از کولهپشتی، اما بهخوبی مهار شده، حمل شوند و کلنگ نیز در قسمت بیرونی قرار گیرد و انتهای آن رو به بالا باشد.
=== طناب و مراقبت از آن ===
طناب مهمترین و ضروریترین عنصر در [[w:fa:سنگنوردی|سنگنوردی]] است، زیرا نمایانگر یکپارچگی همطنابها و وسیله پیشروی است و در چهار وظیفهای که تجهیزات برای آن طراحی شدهاند کاربرد دارد:
#برای ایجاد ایمنی.
#برای تشکیل تیم همطنابها.
#برای تسهیل صعود.
#برای امکانپذیر کردن صعودهایی که بدون استفاده از طناب غیرممکن هستند.
طناب باید پیش، هنگام و پس از صعود با دقت ویژهای نگهداری شود. طناب باید حداکثر مقاومت در برابر پارگی، انعطافپذیری و سبکی را داشته باشد. برای حفظ طناب در وضعیت مناسب، باید موارد زیر رعایت شود:
*هرگز روی طناب پا نگذارید.
*از برخورد سنگها با طناب جلوگیری کنید؛ اگر چنین اتفاقی افتاد، طناب را فوراً بررسی کنید.
*طناب را بیدلیل در معرض نور خورشید قرار ندهید. پرتوهای فرابنفش طناب را سفت و شکننده میکنند.
*اگر طناب خیس شد، آن را در سایه خشک کنید.
*آن را در محلی خنک، خشک و دارای تهویه نگهداری کنید. هرگز آن را در صندوق عقب خودرو قرار ندهید.
*از طناب منحصراً برای سنگنوردی استفاده کنید. طنابی که برای کشیدن یک خودرو استفاده شده است، هرگز نباید برای سنگنوردی استفاده شود.
*پیش از نگهداری، تمام گرهها را باز کنید.
*اجازه ندهید طناب روی لبههای تیز سر بخورد.
*طناب را تقریباً پس از هر ۲۰ صعود با شوینده ملایم بشویید.
[[رده:کوهنوردی]]
a6f8e060ioe8y24or776hz3ommacxel
135577
135576
2026-10-05T08:22:24Z
Fwldom
26269
/* تجهیزات و پوشش عمومی */
135577
wikitext
text/x-wiki
{{ناوبری|قبلی=افزارگان کوهنوردی|فعلی=پوشاک و کفش کوهنوردی|بعدی=خورد و خوراک}}
== تجهیزات و پوشش عمومی ==
#'''[[w:fa:چکمه|چکمه]]''': باید ۱۵ تا ۱۸ سانتیمتر ارتفاع داشته باشند. جنس زیره میتواند از چرم یا لاستیک ویبرام باشد. اتصال داخلی میتواند دوخته، چسبانده، پرچشده یا ترکیبی از این روشها باشد و میتواند دارای کفی میانی سخت یا انعطافپذیر باشد. ضدآب کردن چرم پوتینها را میتوان با موم، سیلیکون یا چربی انجام داد. برخی پوتینها نیز از پلاستیک ساخته میشوند.
#'''جوراب''': دو سیستم وجود دارد:
::* الف) در تماس مستقیم با پوست، جورابهای ابریشمی، پلیپروپیلن یا نایلونی پوشیده شود و روی آن دو جفت جوراب پشمی قرار گیرد.
::* ب) '''سد بخار''': در تماس با پوست، جوراب پلیپروپیلن پوشیده شود، سپس یک لایه نایلون و روی آن دو جفت جوراب پشمی قرار گیرد. در صورت نیاز میتوان یک لایه دیگر نایلون نیز اضافه کرد. اگر پیش از پوشیدن جورابها، پاها را با ضدتعریق اسپری کنیم، بسیار کمککننده است.
#'''گتر یا روکش پوتین''': باید به ارتفاع، نوع بستهشدن، عایق بودن پارچه و وزن آن توجه کرد.
#'''شلوار''': میتوان از شلوارهای پشمی کوتاه تا زیر زانو یا شلوار ورزشی استفاده کرد. برای دماهای پایین میتوان از لباسهای پرِ اردک یا غاز و لباسهای پشمی استفاده کرد. زیر شلوار ورزشی نیز میتوان لباس زیر از جنس پشم، پلیپروپیلن یا توری پوشید. همچنین شلوارهای بادگیر یا ضدآب نیز وجود دارند. باید در نظر داشت که تعادل گرما از طریق حفظ تعادل آن، که [[w:fa:همایستایی|همایستایی]] نامیده میشود، حفظ میگردد.
#'''آنوراک''': میتواند مصنوعی یا پر باشد و هر دو نوع در قسمت بیرونی با نایلون پوشانده میشوند.
#'''بادگیر''': معمولاً از نایلون ساخته میشود و هدف آن جلوگیری از اتلاف گرما بر اثر [[w:fa:همرفت|همرفت]] است؛ یعنی جریانهای هوا و اثر دمِ لباس.
#'''دستکش''': برای انگشتان توصیه میشود در تماس مستقیم با پوست، دستکشهای نایلونی یا ابریشمی پوشیده و روی آن پلیپروپیلن یا پشم قرار داده شود. روی این لایهها میتوان از '''دستکشهای روکشدار''' از جنس پشم، نایلون، فلانل، پر، الیاف پشمی یا دارای سد بخار استفاده کرد.
#'''قمقمه''': توصیه میشود برای آب از بطری پلاستیکی عایق و دهانگشاد استفاده شود.
#'''اجاق''': بهتر است گازی یا فشاری باشد.
#'''قابلمه، فنجان و قاشق''': ترجیحاً از جنس آلومینیوم باشند.
#'''عینک''': اگر قرار است روی برف حرکت کنیم، عینک باید دارای حفاظت [[w:fa:پرتو فرابنفش|فرابنفش]] استاندارد باشد و تمام میدان دید را بپوشاند؛ مانند عینکهای اسکی. اگر به عینک طبی نیاز داریم یا از لنز تماسی استفاده میکنیم، همراه داشتن یک جفت جایگزین مفید است.
#'''کولهپشتی''': باید راحت، بادوام (با توجه به جنس پارچه و دوختها)، سبک و متناسب با نوع استفاده باشد. کولهپشتیها میتوانند دارای قاب یا بدون قاب باشند که نوع بدون قاب توصیه میشود.
#'''کرامپون''': انواع سخت یا انعطافپذیر دارند. از برندهای رایج میتوان به Salewa، SMC، Stubai و Chouinard اشاره کرد. معمولاً از آهن نرم یا آلیاژهای آلومینیوم ساخته میشوند.
#'''کلنگ کوهنوردی''': اندازه آن برای صعودهای فنی ۵۵ تا ۶۵ سانتیمتر و برای صعودهای معمولی ۷۵ تا ۸۰ سانتیمتر است. انواع مختلفی از آن وجود دارد: چوب زبانگنجشک (که ارتعاشات را جذب میکند و در عین حال استحکام دارد)، فایبرگلاس (سبک و مقاوم) و فلزی (قوی، سرد و فاقد تعادل).
#'''چادر''': چادرهای مناسب ارتفاعات باید کف ضدآب، پوشش دولایه داشته باشند، سبک باشند و دارای مهارهای مناسب باشند. از نظر شکل میتوانند گنبدی، دوشیب یا به شکل موشخانهای باشند.
#'''تشک''': بر اساس جنس میتوانند بادی، فومی یا زیراندازی باشند.
#'''کیسه خواب''': میتوانند مستطیلی یا [[w:fa:کیسهخواب|مومیاییشکل]] باشند و از پر غاز یا مواد مصنوعی ساخته شوند. باید توجه داشت که کیسه خواب گرما تولید نمیکند و تنها عایق است. ترجیحاً رنگ آن تیره باشد.
#'''سایر موارد''': [[w:fa:قطبنما|قطبنما]]، [[w:fa:جعبه کمکهای اولیه|جعبه کمکهای اولیه]]، چراغقوه، دوربین عکاسی، هارنس، کلاه یا کلاهکامل.
== تجهیزات فنی ==
=== کلنگ کوهنوردی ===
==== تعریف کلنگ کوهنوردی ====
به دلیل ناآگاهی از کاربرد کلنگ کوهنوردی در کوهنوردی مکزیک، این وسیله به عنوان ابزار یا تجهیزاتی انحصاری برای کوهستانهای مرتفع و بهطور خاص مکانهایی که برف یا یخ وجود دارد شناخته شده است. این مفهوم اشتباه نسل به نسل در میان کوهنوردی تجربی (بدون آموزش رسمی) منتقل شده است. امروزه باشگاههای سازمانیافته کوهنوردی مکزیک و همچنین مؤسسات معتبر مانند امداد کوهستان و صلیب سرخ مکزیک، کارزارهای مختلفی را برای از بین بردن این عادت آغاز کردهاند؛ عادتی که تنها تنوع کاربردهای کلنگ کوهنوردی را محدود میکند.
کلنگ کوهنوردی کاربردهای متنوعی دارد که از یک گردش ساده در کوهستانهای متوسط که در آن برف یا یخ وجود دارد تا صعود به ارتفاعات بلند که این عناصر در آن وجود دارند، قابل استفاده است. اگر کلنگ در کوهستان متوسط استفاده نمیشود، دلیل آن ناآگاهی از کاربردهای آن است. در ادامه نمونههایی از کاربرد آن ارائه میشود.
==== بخشهای کلنگ کوهنوردی ====
*'''سر یا صلیب کلنگ''':
:* الف) از پیک یا نوک و بیلچه تشکیل شده است و بهتر است این دو در یک قطعه فولاد کربنی یکپارچه باشند. برخی سرها دارای سوراخی در قسمت صلیب هستند که برای اتصال کارابین استفاده میشود.
:* ب) عرض بیلچه باید حداقل ۵ تا ۷ سانتیمتر باشد و عمدتاً برای تراشیدن پلهها و بهعنوان تکیهگاه کف دست هنگام استفاده از کلنگ برای خودحمایتی به کار میرود و میتواند دندانهدار یا بدون دندانه باشد.
:* ج) طول پیک یا نوک باید حداقل ۱۵ تا ۱۸ سانتیمتر باشد و میتواند دندانهدار یا بدون دندانه باشد.
:* د) سر کلنگ باید کاملاً به بدنه آن متصل باشد.
:* هـ) هم پیک و هم بیلچه باید به لبههای تیز ختم شوند، اما نباید حالت نوک بسیار برنده داشته باشند.
*'''دسته یا بدنه کلنگ''':
:* الف) بدنه اصلی کلنگ است. انواع مختلفی از مواد مانند چوب، فایبرگلاس و دورآلومین ساخته میشوند و برخی نیز با روکشهای پلاستیکی محافظت شدهاند.
:* ب) بدنه کلنگ باید بیضیشکل باشد، زیرا این شکل مقاومت بیشتری ایجاد میکند و خارج کردن آن را با چرخاندن جزئی هنگامی که در زمین یا برف فرو رفته است آسانتر میکند. همچنین ایمنی بیشتری در استفاده ایجاد میکند، زیرا از لغزش جلوگیری میشود و کوهنورد با لمس دسته میتواند موقعیت آن را تشخیص دهد.
:* ج) قسمت پایینی دسته باید توسط یک بوش یا غلاف فلزی محافظت شود تا از ترکخوردن آن جلوگیری کرده و همزمان به ثابت کردن انتهای فلزی کمک کند.
:* د) طول دسته به کاربرد یا تکنیک مورد نظر بستگی دارد؛ طول معمول آن بهگونهای است که وقتی کوهنورد ایستاده و سر کلنگ را در دست گرفته است، قسمت انتهایی کلنگ به زمین برسد.
*'''انتهای کلنگ''': انتهای کلنگ باید از فولاد کربنی باشد و کاملاً به دسته متصل شده باشد. میتواند دارای مقطع مربعی، مستطیلی یا مخروطی باشد و حداقل ۶ سانتیمتر طول داشته باشد و به یک لبه تیز، اما نه برنده، ختم شود.
* '''مچبند''': مچبند کوتاه (که بسته به تکنیک متفاوت است) برای آویزان کردن کلنگ در مانورهایی که هر دو دست مورد نیاز هستند مفید است. این مچبند در تمام طول دسته قابل حرکت است و در بالای انتهای کلنگ دارای یک متوقفکننده است که از خارج شدن آن جلوگیری میکند.
==== توصیههایی برای نگهداری ====
* هنگامی که کلنگ استفاده نمیشود، بهتر است انتهای کلنگ، پیک و بیلچه با روکشهای مخصوص خود محافظت شوند.
* هنگام حمل در شهر یا هر نوع وسیله نقلیه، باید محافظهای آن نصب باشند تا از آسیبدیدن افراد یا خود کلنگ جلوگیری شود.
* تا حد امکان باید از تماس مستقیم کلنگ با سنگ جلوگیری کرد؛ یعنی انتهای کلنگ، بیلچه و پیک نباید مستقیماً با سنگ تماس داشته باشند، زیرا در غیر این صورت لبههای آنها گرد شده و دیگر عملکردی را که برای آن طراحی شدهاند نخواهند داشت.
* هنگامی که کلنگ در خانه نگهداری میشود، باید از سوراخ قسمت سر یا صلیب یا در صورت نبود آن از پیک یا بیلچه آویزان شود، بهگونهای که تا حد امکان از خم شدن بدنه جلوگیری شود.
* تا حد امکان باید از وارد شدن ضربه از هر نوع به کلنگ جلوگیری کرد، زیرا ممکن است هر یک از قسمتهای آن ترک خورده یا شکسته شود.
* برای حفظ چوب کلنگ باید به تمیز نگه داشتن هرچه بیشتر آن توجه ویژه داشت. اگر بدنه چوبی است، هنگام نگهداری طولانیمدت آن را لاک زده یا با روغن بزرک چرب کنید.
==== توصیههایی برای استفاده ====
#کلنگ نباید برای بازی قرض داده یا استفاده شود و در کوهستان هرگز نباید از کوهنورد جدا شود؛ حتی بیشتر از این، باید آن را بخشی از بدن خود در نظر گرفت.
#کوهنورد باید به استفاده از کلنگ با هر دو دست عادت کند تا انجام هر نوع کار با آن آسانتر شود.
#پیک اساساً برای ایجاد پله در سطوح سخت، مانند زمین یا یخ، استفاده میشود.
#بیلچه اساساً برای ایجاد پله در سطوح نرم، مانند خاک نرم یا برف، استفاده میشود.
#خودایستایی با پیک یا بیلچه انجام میشود و انتخاب آن به سختی زمین بستگی دارد؛ پیک در زمین سخت و بیلچه در زمین نرم استفاده میشود.
#برای ایجاد نقطه حمایت، کلنگ باید کاملاً در زمین یا برف فرو برده شود. هنگامی که امکان فرو بردن کامل آن وجود ندارد، پیک یا بیلچه را تا حد امکان فرو کرده و روی آن فشار وارد میکنند تا خارج نشود.
#کلنگ در هر شرایطی باید در سمت کوه قرار داشته باشد؛ یعنی هنگام صعود، بین کوهنورد و کوه قرار گیرد.
#در هنگام فرود، کلنگ باید بین فرد و دره قرار گیرد، مشروط بر اینکه حرکت بهدرستی انجام شود.
==== کاربردهای کلنگ ====
#'''کلنگ بهعنوان سومین نقطه اتکا یا کلنگعصا''': همانطور که از نام آن پیداست، در این حالت از کلنگ مانند عصا برای ایجاد یک نقطه اتکا و حفظ تعادل استفاده میشود. هنگام حرکت با کلنگ در این وضعیت، چه در صعود و چه در فرود، پیک آن باید همیشه در جهتی باشد که کوهنورد در حال حرکت است؛ یعنی در صعود، پیک باید به سمت کوه و در فرود به سمت دره باشد. باید به یاد داشت که در اصطلاح کوهنوردی، رفتن به سمت دره یعنی رفتن به سمت پایین. روش صحیح حمل کلنگ این است که کف دست کوهنورد روی بیلچه قرار گیرد و با انگشت شست یا اشاره، پیک را دربرگیرد، بدون استفاده از مچبند، و کلنگ همیشه بین کوهنورد و کوه قرار داشته باشد.
#'''کلنگ جارویی یا راماس''' (en ramasse): در این روش، کلنگ در فرودها، تراورسهای افقی، تراورسهای مورب صعودی یا نزولی با شیب نسبتاً زیاد استفاده میشود و وضعیت کلنگ به شکل زیر است:
::*'''تراورس افقی''': کلنگ بهصورت افقی در مقابل کوهنورد قرار میگیرد و با هر دو دست نگه داشته میشود؛ در حالی که پیک باید در جلوی بدن باشد. انتهای کلنگ باید با فشاری مناسب با شیب در تماس باشد، بهگونهای که نلغزد و ایمنی بیشتری ایجاد کند. یک دست سر کلنگ را میگیرد و نیرویی رو به بالا وارد میکند و دست دیگر کلنگ را تا حد امکان نزدیک به انتهای آن میگیرد. تعادل با تکیه بر کلنگ حفظ میشود. هنگامی که یک پا در حال حرکت است، پای دیگر باید کاملاً ثابت و ایمن باشد و حرکات بهگونهای هماهنگ شوند که همیشه حداقل دو نقطه اتکا یا تماس با شیب وجود داشته باشد: یک پا و انتهای کلنگ، یا هر دو پا در زمانی که انتهای کلنگ با شیب تماس ندارد.
::*'''تراورس مورب صعودی یا نزولی''': همان حرکات حالت قبل انجام میشود و تنها تفاوت این است که حرکت بهصورت مورب رو به بالا یا پایین انجام میشود. باید به یاد داشت که پیک کلنگ همیشه باید رو به جلو باشد و کلنگ باید محکم گرفته شود تا از افتادن آن جلوگیری شود.
::*'''فرود از شیبهای بسیار پرشیب''': وضعیت کلنگ به این صورت است: کلنگ بهصورت افقی در مقابل کوهنورد قرار میگیرد، پیک به سمت جلو است و با هر دو دست نگه داشته میشود. پشت کوهنورد به سمت شیب و صورت او به سمت دره قرار دارد. انتهای کلنگ به سمت شیب برده میشود تا با آن تماس پیدا کند و در پشت کوهنورد قرار گیرد. در طول فرود، انتهای کلنگ باید همواره با شیب در تماس باشد. هنگامی که کلنگ در سمت راست قرار دارد، پیک باید به سمت راست کوهنورد و هنگامی که در سمت چپ قرار دارد، پیک باید به سمت چپ کوهنورد اشاره کند.
::*'''کلنگ در خودایستایی''': خودایستایی را میتوان با پیک یا بیلچه کلنگ و در برخی موارد با بدنه آن انجام داد؛ بنابراین کوهنورد باید بتواند زمین زیر پای خود را ارزیابی کند. اگر زمین سخت باشد، خودایستایی باید با پیک کلنگ انجام شود؛ اگر زمین نرم باشد، با بیلچه و اگر زمین بسیار نرم و شیب بسیار زیاد باشد، باید تلاش شود انتهای کلنگ و دسته آن تا حد امکان در زمین فرو رود و کلنگ محکم گرفته شود. هدف از تمام این کارها متوقف کردن سقوط است. اگر کوهنورد نتواند به این شکل متوقف شود، باید سریع واکنش نشان داده و روش دیگری را امتحان کند و این کار را ادامه دهد و همیشه از کلنگ استفاده کرده و از رها کردن آن خودداری کند. اما در صورت از دست دادن کلنگ، باید به شکم قرار گرفته و رو به شیب باشد، پاها و دستها را تا حد امکان باز کرده و کاملاً کشیده نگه دارد و با آنها به سمت زمین فشار وارد کند. هنگامی که کوهنورد در حال فرود است و زمین میخورد، نخستین کار این است که کلنگ را با هر دو دست بگیرد، غلت بزند و پیش از پایان غلت، بدن را طوری بچرخاند که صورت کوهنورد رو به شیب قرار گیرد، پاها تا حد امکان باز باشند و کلنگ زیر بدن کوهنورد قرار گیرد و بهصورت مورب از کمی بالاتر از شانه، جایی که سر یا صلیب کلنگ قرار دارد، تا کمر، یعنی محل انتهای کلنگ، امتداد داشته باشد. بدن کوهنورد باید تا توقف سقوط بر کلنگ فشار وارد کند و تمام روشهای ذکرشده را برای توقف سقوط به کار گیرد.
::*'''کلنگ لنگر''': در این حالت کوهنورد از کلنگ مانند یک لنگر استفاده میکند؛ یعنی آن را با پیک یا بیلچه در نقطهای ایمن فرو میکند. این کار را میتوان با یک دست انجام داد؛ به این صورت که کلنگ از نزدیکی انتهای آن گرفته شده و بالاتر از آن لنگر میشود و سپس برای صعود از آن کشیده میشود. همچنین میتوان این کار را با هر دو دست انجام داد؛ یک دست سر کلنگ را میگیرد و دست دیگر نزدیک انتهای آن قرار گرفته، آن را مهار کرده و کوهنورد خود را با آن بالا میکشد. میتوان پیش از هر حرکت برای پاها پلههایی ایجاد کرد و در هر حرکت و هر بالا کشیدن، کلنگ باید بسته به جنس زمین، با پیک یا بیلچه بهطور کامل مهار شود.
::*'''کلنگ تکیهگاه''': در این حالت کوهنورد از کلنگ بهعنوان یک نقطه اتکای دیگر، هم در صعود و هم در فرود، استفاده میکند. در صعود، سر کلنگ را گرفته و آن را کمی بالاتر از زانو روی شیب فرو میکند و برای بالا رفتن به آن تکیه میکند. پیش از آن میتوان برای پاها پلههایی ایجاد کرد. این تکنیک برای صعود از دیوارههای پرشیب مفید است و میتوان از یک یا دو کلنگ، یکی در هر دست، استفاده کرد. در فرود، کلنگ از قسمت بدنه و نزدیک سر آن گرفته شده و همزمان با پایین آمدن، در شیب فرو برده میشود و همیشه حداقل دو نقطه اتکا برای حفظ تعادل وجود دارد.
=== کرامپونها ===
کرامپونها امکان حرکت در زمینهای دارای یخ سخت یا شیبهای بسیار زیاد را فراهم میکنند. آنها از میخها، حلقهها، پاشنهبندها، پیچها، پل، بند و سگک تشکیل شدهاند. کرامپونها میتوانند ۱۰ یا ۱۲ میخ داشته باشند. بندهای کرامپون از چرم، پنبه، نایلون یا نئوپرن ساخته میشوند که نوع نئوپرن به دلیل سهولت نصب و یخ نزدن، بیشتر توصیه میشود. بند کرامپون به شکل ضربدر بسته میشود؛ از پاشنه بیرونی شروع شده و بهصورت زیگزاگ تا حلقههای قسمت جلو ادامه مییابد و در انتها مسیر بهصورت معکوس طی شده و در پایان با دو سر بند یک گره ساده زده میشود. کرامپونها باید همیشه بهخوبی تیز باشند، اما فقط لبههای جانبی آنها تیز شوند و نباید در زمینهای مورنی یا برف سست استفاده شوند. پوتین باید بهخوبی روی کرامپون محکم شود و هنگامی که کرامپون پاشنهبند ندارد، باید با سیم محکم شود. هم کرامپونها و هم کلنگ باید پس از صعود تمیز شوند. بهتر است کرامپونها در خارج از کولهپشتی، اما بهخوبی مهار شده، حمل شوند و کلنگ نیز در قسمت بیرونی قرار گیرد و انتهای آن رو به بالا باشد.
=== طناب و مراقبت از آن ===
طناب مهمترین و ضروریترین عنصر در [[w:fa:سنگنوردی|سنگنوردی]] است، زیرا نمایانگر یکپارچگی همطنابها و وسیله پیشروی است و در چهار وظیفهای که تجهیزات برای آن طراحی شدهاند کاربرد دارد:
#برای ایجاد ایمنی.
#برای تشکیل تیم همطنابها.
#برای تسهیل صعود.
#برای امکانپذیر کردن صعودهایی که بدون استفاده از طناب غیرممکن هستند.
طناب باید پیش، هنگام و پس از صعود با دقت ویژهای نگهداری شود. طناب باید حداکثر مقاومت در برابر پارگی، انعطافپذیری و سبکی را داشته باشد. برای حفظ طناب در وضعیت مناسب، باید موارد زیر رعایت شود:
*هرگز روی طناب پا نگذارید.
*از برخورد سنگها با طناب جلوگیری کنید؛ اگر چنین اتفاقی افتاد، طناب را فوراً بررسی کنید.
*طناب را بیدلیل در معرض نور خورشید قرار ندهید. پرتوهای فرابنفش طناب را سفت و شکننده میکنند.
*اگر طناب خیس شد، آن را در سایه خشک کنید.
*آن را در محلی خنک، خشک و دارای تهویه نگهداری کنید. هرگز آن را در صندوق عقب خودرو قرار ندهید.
*از طناب منحصراً برای سنگنوردی استفاده کنید. طنابی که برای کشیدن یک خودرو استفاده شده است، هرگز نباید برای سنگنوردی استفاده شود.
*پیش از نگهداری، تمام گرهها را باز کنید.
*اجازه ندهید طناب روی لبههای تیز سر بخورد.
*طناب را تقریباً پس از هر ۲۰ صعود با شوینده ملایم بشویید.
[[رده:کوهنوردی]]
t78okrjv4dhu8ocqvp0xd1xzdl43702
135578
135577
2026-10-05T08:23:09Z
Fwldom
26269
/* تجهیزات و پوشش عمومی */
135578
wikitext
text/x-wiki
{{ناوبری|قبلی=افزارگان کوهنوردی|فعلی=پوشاک و کفش کوهنوردی|بعدی=خورد و خوراک}}
== تجهیزات و پوشش عمومی ==
#'''[[w:fa:چکمه|چکمه]]''': باید ۱۵ تا ۱۸ سانتیمتر ارتفاع داشته باشند. جنس زیره میتواند از چرم یا لاستیک ویبرام باشد. اتصال داخلی میتواند دوخته، چسبانده، پرچشده یا ترکیبی از این روشها باشد و میتواند دارای کفی میانی سخت یا انعطافپذیر باشد. ضدآب کردن چرم پوتینها را میتوان با موم، سیلیکون یا چربی انجام داد. برخی پوتینها نیز از پلاستیک ساخته میشوند.
#'''جوراب''': دو سیستم وجود دارد:
::* الف) در تماس مستقیم با پوست، جورابهای ابریشمی، پلیپروپیلن یا نایلونی پوشیده شود و روی آن دو جفت جوراب پشمی قرار گیرد.
::* ب) '''سد بخار''': در تماس با پوست، جوراب پلیپروپیلن پوشیده شود، سپس یک لایه نایلون و روی آن دو جفت جوراب پشمی قرار گیرد. در صورت نیاز میتوان یک لایه دیگر نایلون نیز اضافه کرد. اگر پیش از پوشیدن جورابها، پاها را با ضدتعریق اسپری کنیم، بسیار کمککننده است.
#'''گتر یا روکش پوتین''': باید به ارتفاع، نوع بستهشدن، عایق بودن پارچه و وزن آن توجه کرد.
#'''شلوار''': میتوان از شلوارهای پشمی کوتاه تا زیر زانو یا شلوار ورزشی استفاده کرد. برای دماهای پایین میتوان از لباسهای پرِ اردک یا غاز و لباسهای پشمی استفاده کرد. زیر شلوار ورزشی نیز میتوان لباس زیر از جنس پشم، پلیپروپیلن یا توری پوشید. همچنین شلوارهای بادگیر یا ضدآب نیز وجود دارند. باید در نظر داشت که تعادل گرما از طریق حفظ تعادل آن، که [[w:fa:همایستایی|همایستایی]] نامیده میشود، حفظ میگردد.
#'''آنوراک''': میتواند مصنوعی یا پر باشد و هر دو نوع در قسمت بیرونی با نایلون پوشانده میشوند.
#'''بادگیر''': معمولاً از نایلون ساخته میشود و هدف آن جلوگیری از اتلاف گرما بر اثر [[w:fa:همرفت|همرفت]] است؛ یعنی جریانهای هوا و اثر دمِ لباس.
#'''دستکش''': برای انگشتان توصیه میشود در تماس مستقیم با پوست، دستکشهای نایلونی یا ابریشمی پوشیده و روی آن پلیپروپیلن یا پشم قرار داده شود. روی این لایهها میتوان از '''دستکشهای روکشدار''' از جنس پشم، نایلون، فلانل، پر، الیاف پشمی یا دارای سد بخار استفاده کرد.
#'''قمقمه''': توصیه میشود برای آب از بطری پلاستیکی عایق و دهانگشاد استفاده شود.
#'''اجاق''': بهتر است گازی یا فشاری باشد.
#'''قابلمه، فنجان و قاشق''': ترجیحاً از جنس آلومینیوم باشند.
#'''عینک''': اگر قرار است روی برف حرکت کنیم، عینک باید دارای حفاظت [[w:fa:پرتو فرابنفش|فرابنفش]] استاندارد باشد و تمام میدان دید را بپوشاند؛ مانند عینکهای اسکی. اگر به عینک طبی نیاز داریم یا از لنز تماسی استفاده میکنیم، همراه داشتن یک جفت جایگزین مفید است.
#'''کولهپشتی''': باید راحت، بادوام (با توجه به جنس پارچه و دوختها)، سبک و متناسب با نوع استفاده باشد. کولهپشتیها میتوانند دارای قاب یا بدون قاب باشند که نوع بدون قاب توصیه میشود.
#'''کرامپون''': انواع سخت یا انعطافپذیر دارند. از برندهای رایج میتوان به Salewa، SMC، Stubai و Chouinard اشاره کرد. معمولاً از آهن نرم یا آلیاژهای آلومینیوم ساخته میشوند.
#'''کلنگ کوهنوردی''': اندازه آن برای صعودهای فنی ۵۵ تا ۶۵ سانتیمتر و برای صعودهای معمولی ۷۵ تا ۸۰ سانتیمتر است. انواع مختلفی از آن وجود دارد: چوب زبانگنجشک (که ارتعاشات را جذب میکند و در عین حال استحکام دارد)، فایبرگلاس (سبک و مقاوم) و فلزی (قوی، سرد و فاقد تعادل).
#'''چادر''': چادرهای مناسب ارتفاعات باید کف ضدآب، پوشش دولایه داشته باشند، سبک باشند و دارای مهارهای مناسب باشند. از نظر شکل میتوانند گنبدی، دوشیب یا به شکل موشخانهای باشند.
#'''تشک''': بر اساس جنس میتوانند بادی، فومی یا زیراندازی باشند.
#'''کیسه خواب''': میتوانند مستطیلی یا [[w:fa:کیسه خواب|مومیاییشکل]] باشند و از پر غاز یا مواد مصنوعی ساخته شوند. باید توجه داشت که کیسه خواب گرما تولید نمیکند و تنها عایق است. ترجیحاً رنگ آن تیره باشد.
#'''سایر موارد''': [[w:fa:قطبنما|قطبنما]]، [[w:fa:جعبه کمکهای اولیه|جعبه کمکهای اولیه]]، چراغقوه، دوربین عکاسی، هارنس، کلاه یا کلاهکامل.
== تجهیزات فنی ==
=== کلنگ کوهنوردی ===
==== تعریف کلنگ کوهنوردی ====
به دلیل ناآگاهی از کاربرد کلنگ کوهنوردی در کوهنوردی مکزیک، این وسیله به عنوان ابزار یا تجهیزاتی انحصاری برای کوهستانهای مرتفع و بهطور خاص مکانهایی که برف یا یخ وجود دارد شناخته شده است. این مفهوم اشتباه نسل به نسل در میان کوهنوردی تجربی (بدون آموزش رسمی) منتقل شده است. امروزه باشگاههای سازمانیافته کوهنوردی مکزیک و همچنین مؤسسات معتبر مانند امداد کوهستان و صلیب سرخ مکزیک، کارزارهای مختلفی را برای از بین بردن این عادت آغاز کردهاند؛ عادتی که تنها تنوع کاربردهای کلنگ کوهنوردی را محدود میکند.
کلنگ کوهنوردی کاربردهای متنوعی دارد که از یک گردش ساده در کوهستانهای متوسط که در آن برف یا یخ وجود دارد تا صعود به ارتفاعات بلند که این عناصر در آن وجود دارند، قابل استفاده است. اگر کلنگ در کوهستان متوسط استفاده نمیشود، دلیل آن ناآگاهی از کاربردهای آن است. در ادامه نمونههایی از کاربرد آن ارائه میشود.
==== بخشهای کلنگ کوهنوردی ====
*'''سر یا صلیب کلنگ''':
:* الف) از پیک یا نوک و بیلچه تشکیل شده است و بهتر است این دو در یک قطعه فولاد کربنی یکپارچه باشند. برخی سرها دارای سوراخی در قسمت صلیب هستند که برای اتصال کارابین استفاده میشود.
:* ب) عرض بیلچه باید حداقل ۵ تا ۷ سانتیمتر باشد و عمدتاً برای تراشیدن پلهها و بهعنوان تکیهگاه کف دست هنگام استفاده از کلنگ برای خودحمایتی به کار میرود و میتواند دندانهدار یا بدون دندانه باشد.
:* ج) طول پیک یا نوک باید حداقل ۱۵ تا ۱۸ سانتیمتر باشد و میتواند دندانهدار یا بدون دندانه باشد.
:* د) سر کلنگ باید کاملاً به بدنه آن متصل باشد.
:* هـ) هم پیک و هم بیلچه باید به لبههای تیز ختم شوند، اما نباید حالت نوک بسیار برنده داشته باشند.
*'''دسته یا بدنه کلنگ''':
:* الف) بدنه اصلی کلنگ است. انواع مختلفی از مواد مانند چوب، فایبرگلاس و دورآلومین ساخته میشوند و برخی نیز با روکشهای پلاستیکی محافظت شدهاند.
:* ب) بدنه کلنگ باید بیضیشکل باشد، زیرا این شکل مقاومت بیشتری ایجاد میکند و خارج کردن آن را با چرخاندن جزئی هنگامی که در زمین یا برف فرو رفته است آسانتر میکند. همچنین ایمنی بیشتری در استفاده ایجاد میکند، زیرا از لغزش جلوگیری میشود و کوهنورد با لمس دسته میتواند موقعیت آن را تشخیص دهد.
:* ج) قسمت پایینی دسته باید توسط یک بوش یا غلاف فلزی محافظت شود تا از ترکخوردن آن جلوگیری کرده و همزمان به ثابت کردن انتهای فلزی کمک کند.
:* د) طول دسته به کاربرد یا تکنیک مورد نظر بستگی دارد؛ طول معمول آن بهگونهای است که وقتی کوهنورد ایستاده و سر کلنگ را در دست گرفته است، قسمت انتهایی کلنگ به زمین برسد.
*'''انتهای کلنگ''': انتهای کلنگ باید از فولاد کربنی باشد و کاملاً به دسته متصل شده باشد. میتواند دارای مقطع مربعی، مستطیلی یا مخروطی باشد و حداقل ۶ سانتیمتر طول داشته باشد و به یک لبه تیز، اما نه برنده، ختم شود.
* '''مچبند''': مچبند کوتاه (که بسته به تکنیک متفاوت است) برای آویزان کردن کلنگ در مانورهایی که هر دو دست مورد نیاز هستند مفید است. این مچبند در تمام طول دسته قابل حرکت است و در بالای انتهای کلنگ دارای یک متوقفکننده است که از خارج شدن آن جلوگیری میکند.
==== توصیههایی برای نگهداری ====
* هنگامی که کلنگ استفاده نمیشود، بهتر است انتهای کلنگ، پیک و بیلچه با روکشهای مخصوص خود محافظت شوند.
* هنگام حمل در شهر یا هر نوع وسیله نقلیه، باید محافظهای آن نصب باشند تا از آسیبدیدن افراد یا خود کلنگ جلوگیری شود.
* تا حد امکان باید از تماس مستقیم کلنگ با سنگ جلوگیری کرد؛ یعنی انتهای کلنگ، بیلچه و پیک نباید مستقیماً با سنگ تماس داشته باشند، زیرا در غیر این صورت لبههای آنها گرد شده و دیگر عملکردی را که برای آن طراحی شدهاند نخواهند داشت.
* هنگامی که کلنگ در خانه نگهداری میشود، باید از سوراخ قسمت سر یا صلیب یا در صورت نبود آن از پیک یا بیلچه آویزان شود، بهگونهای که تا حد امکان از خم شدن بدنه جلوگیری شود.
* تا حد امکان باید از وارد شدن ضربه از هر نوع به کلنگ جلوگیری کرد، زیرا ممکن است هر یک از قسمتهای آن ترک خورده یا شکسته شود.
* برای حفظ چوب کلنگ باید به تمیز نگه داشتن هرچه بیشتر آن توجه ویژه داشت. اگر بدنه چوبی است، هنگام نگهداری طولانیمدت آن را لاک زده یا با روغن بزرک چرب کنید.
==== توصیههایی برای استفاده ====
#کلنگ نباید برای بازی قرض داده یا استفاده شود و در کوهستان هرگز نباید از کوهنورد جدا شود؛ حتی بیشتر از این، باید آن را بخشی از بدن خود در نظر گرفت.
#کوهنورد باید به استفاده از کلنگ با هر دو دست عادت کند تا انجام هر نوع کار با آن آسانتر شود.
#پیک اساساً برای ایجاد پله در سطوح سخت، مانند زمین یا یخ، استفاده میشود.
#بیلچه اساساً برای ایجاد پله در سطوح نرم، مانند خاک نرم یا برف، استفاده میشود.
#خودایستایی با پیک یا بیلچه انجام میشود و انتخاب آن به سختی زمین بستگی دارد؛ پیک در زمین سخت و بیلچه در زمین نرم استفاده میشود.
#برای ایجاد نقطه حمایت، کلنگ باید کاملاً در زمین یا برف فرو برده شود. هنگامی که امکان فرو بردن کامل آن وجود ندارد، پیک یا بیلچه را تا حد امکان فرو کرده و روی آن فشار وارد میکنند تا خارج نشود.
#کلنگ در هر شرایطی باید در سمت کوه قرار داشته باشد؛ یعنی هنگام صعود، بین کوهنورد و کوه قرار گیرد.
#در هنگام فرود، کلنگ باید بین فرد و دره قرار گیرد، مشروط بر اینکه حرکت بهدرستی انجام شود.
==== کاربردهای کلنگ ====
#'''کلنگ بهعنوان سومین نقطه اتکا یا کلنگعصا''': همانطور که از نام آن پیداست، در این حالت از کلنگ مانند عصا برای ایجاد یک نقطه اتکا و حفظ تعادل استفاده میشود. هنگام حرکت با کلنگ در این وضعیت، چه در صعود و چه در فرود، پیک آن باید همیشه در جهتی باشد که کوهنورد در حال حرکت است؛ یعنی در صعود، پیک باید به سمت کوه و در فرود به سمت دره باشد. باید به یاد داشت که در اصطلاح کوهنوردی، رفتن به سمت دره یعنی رفتن به سمت پایین. روش صحیح حمل کلنگ این است که کف دست کوهنورد روی بیلچه قرار گیرد و با انگشت شست یا اشاره، پیک را دربرگیرد، بدون استفاده از مچبند، و کلنگ همیشه بین کوهنورد و کوه قرار داشته باشد.
#'''کلنگ جارویی یا راماس''' (en ramasse): در این روش، کلنگ در فرودها، تراورسهای افقی، تراورسهای مورب صعودی یا نزولی با شیب نسبتاً زیاد استفاده میشود و وضعیت کلنگ به شکل زیر است:
::*'''تراورس افقی''': کلنگ بهصورت افقی در مقابل کوهنورد قرار میگیرد و با هر دو دست نگه داشته میشود؛ در حالی که پیک باید در جلوی بدن باشد. انتهای کلنگ باید با فشاری مناسب با شیب در تماس باشد، بهگونهای که نلغزد و ایمنی بیشتری ایجاد کند. یک دست سر کلنگ را میگیرد و نیرویی رو به بالا وارد میکند و دست دیگر کلنگ را تا حد امکان نزدیک به انتهای آن میگیرد. تعادل با تکیه بر کلنگ حفظ میشود. هنگامی که یک پا در حال حرکت است، پای دیگر باید کاملاً ثابت و ایمن باشد و حرکات بهگونهای هماهنگ شوند که همیشه حداقل دو نقطه اتکا یا تماس با شیب وجود داشته باشد: یک پا و انتهای کلنگ، یا هر دو پا در زمانی که انتهای کلنگ با شیب تماس ندارد.
::*'''تراورس مورب صعودی یا نزولی''': همان حرکات حالت قبل انجام میشود و تنها تفاوت این است که حرکت بهصورت مورب رو به بالا یا پایین انجام میشود. باید به یاد داشت که پیک کلنگ همیشه باید رو به جلو باشد و کلنگ باید محکم گرفته شود تا از افتادن آن جلوگیری شود.
::*'''فرود از شیبهای بسیار پرشیب''': وضعیت کلنگ به این صورت است: کلنگ بهصورت افقی در مقابل کوهنورد قرار میگیرد، پیک به سمت جلو است و با هر دو دست نگه داشته میشود. پشت کوهنورد به سمت شیب و صورت او به سمت دره قرار دارد. انتهای کلنگ به سمت شیب برده میشود تا با آن تماس پیدا کند و در پشت کوهنورد قرار گیرد. در طول فرود، انتهای کلنگ باید همواره با شیب در تماس باشد. هنگامی که کلنگ در سمت راست قرار دارد، پیک باید به سمت راست کوهنورد و هنگامی که در سمت چپ قرار دارد، پیک باید به سمت چپ کوهنورد اشاره کند.
::*'''کلنگ در خودایستایی''': خودایستایی را میتوان با پیک یا بیلچه کلنگ و در برخی موارد با بدنه آن انجام داد؛ بنابراین کوهنورد باید بتواند زمین زیر پای خود را ارزیابی کند. اگر زمین سخت باشد، خودایستایی باید با پیک کلنگ انجام شود؛ اگر زمین نرم باشد، با بیلچه و اگر زمین بسیار نرم و شیب بسیار زیاد باشد، باید تلاش شود انتهای کلنگ و دسته آن تا حد امکان در زمین فرو رود و کلنگ محکم گرفته شود. هدف از تمام این کارها متوقف کردن سقوط است. اگر کوهنورد نتواند به این شکل متوقف شود، باید سریع واکنش نشان داده و روش دیگری را امتحان کند و این کار را ادامه دهد و همیشه از کلنگ استفاده کرده و از رها کردن آن خودداری کند. اما در صورت از دست دادن کلنگ، باید به شکم قرار گرفته و رو به شیب باشد، پاها و دستها را تا حد امکان باز کرده و کاملاً کشیده نگه دارد و با آنها به سمت زمین فشار وارد کند. هنگامی که کوهنورد در حال فرود است و زمین میخورد، نخستین کار این است که کلنگ را با هر دو دست بگیرد، غلت بزند و پیش از پایان غلت، بدن را طوری بچرخاند که صورت کوهنورد رو به شیب قرار گیرد، پاها تا حد امکان باز باشند و کلنگ زیر بدن کوهنورد قرار گیرد و بهصورت مورب از کمی بالاتر از شانه، جایی که سر یا صلیب کلنگ قرار دارد، تا کمر، یعنی محل انتهای کلنگ، امتداد داشته باشد. بدن کوهنورد باید تا توقف سقوط بر کلنگ فشار وارد کند و تمام روشهای ذکرشده را برای توقف سقوط به کار گیرد.
::*'''کلنگ لنگر''': در این حالت کوهنورد از کلنگ مانند یک لنگر استفاده میکند؛ یعنی آن را با پیک یا بیلچه در نقطهای ایمن فرو میکند. این کار را میتوان با یک دست انجام داد؛ به این صورت که کلنگ از نزدیکی انتهای آن گرفته شده و بالاتر از آن لنگر میشود و سپس برای صعود از آن کشیده میشود. همچنین میتوان این کار را با هر دو دست انجام داد؛ یک دست سر کلنگ را میگیرد و دست دیگر نزدیک انتهای آن قرار گرفته، آن را مهار کرده و کوهنورد خود را با آن بالا میکشد. میتوان پیش از هر حرکت برای پاها پلههایی ایجاد کرد و در هر حرکت و هر بالا کشیدن، کلنگ باید بسته به جنس زمین، با پیک یا بیلچه بهطور کامل مهار شود.
::*'''کلنگ تکیهگاه''': در این حالت کوهنورد از کلنگ بهعنوان یک نقطه اتکای دیگر، هم در صعود و هم در فرود، استفاده میکند. در صعود، سر کلنگ را گرفته و آن را کمی بالاتر از زانو روی شیب فرو میکند و برای بالا رفتن به آن تکیه میکند. پیش از آن میتوان برای پاها پلههایی ایجاد کرد. این تکنیک برای صعود از دیوارههای پرشیب مفید است و میتوان از یک یا دو کلنگ، یکی در هر دست، استفاده کرد. در فرود، کلنگ از قسمت بدنه و نزدیک سر آن گرفته شده و همزمان با پایین آمدن، در شیب فرو برده میشود و همیشه حداقل دو نقطه اتکا برای حفظ تعادل وجود دارد.
=== کرامپونها ===
کرامپونها امکان حرکت در زمینهای دارای یخ سخت یا شیبهای بسیار زیاد را فراهم میکنند. آنها از میخها، حلقهها، پاشنهبندها، پیچها، پل، بند و سگک تشکیل شدهاند. کرامپونها میتوانند ۱۰ یا ۱۲ میخ داشته باشند. بندهای کرامپون از چرم، پنبه، نایلون یا نئوپرن ساخته میشوند که نوع نئوپرن به دلیل سهولت نصب و یخ نزدن، بیشتر توصیه میشود. بند کرامپون به شکل ضربدر بسته میشود؛ از پاشنه بیرونی شروع شده و بهصورت زیگزاگ تا حلقههای قسمت جلو ادامه مییابد و در انتها مسیر بهصورت معکوس طی شده و در پایان با دو سر بند یک گره ساده زده میشود. کرامپونها باید همیشه بهخوبی تیز باشند، اما فقط لبههای جانبی آنها تیز شوند و نباید در زمینهای مورنی یا برف سست استفاده شوند. پوتین باید بهخوبی روی کرامپون محکم شود و هنگامی که کرامپون پاشنهبند ندارد، باید با سیم محکم شود. هم کرامپونها و هم کلنگ باید پس از صعود تمیز شوند. بهتر است کرامپونها در خارج از کولهپشتی، اما بهخوبی مهار شده، حمل شوند و کلنگ نیز در قسمت بیرونی قرار گیرد و انتهای آن رو به بالا باشد.
=== طناب و مراقبت از آن ===
طناب مهمترین و ضروریترین عنصر در [[w:fa:سنگنوردی|سنگنوردی]] است، زیرا نمایانگر یکپارچگی همطنابها و وسیله پیشروی است و در چهار وظیفهای که تجهیزات برای آن طراحی شدهاند کاربرد دارد:
#برای ایجاد ایمنی.
#برای تشکیل تیم همطنابها.
#برای تسهیل صعود.
#برای امکانپذیر کردن صعودهایی که بدون استفاده از طناب غیرممکن هستند.
طناب باید پیش، هنگام و پس از صعود با دقت ویژهای نگهداری شود. طناب باید حداکثر مقاومت در برابر پارگی، انعطافپذیری و سبکی را داشته باشد. برای حفظ طناب در وضعیت مناسب، باید موارد زیر رعایت شود:
*هرگز روی طناب پا نگذارید.
*از برخورد سنگها با طناب جلوگیری کنید؛ اگر چنین اتفاقی افتاد، طناب را فوراً بررسی کنید.
*طناب را بیدلیل در معرض نور خورشید قرار ندهید. پرتوهای فرابنفش طناب را سفت و شکننده میکنند.
*اگر طناب خیس شد، آن را در سایه خشک کنید.
*آن را در محلی خنک، خشک و دارای تهویه نگهداری کنید. هرگز آن را در صندوق عقب خودرو قرار ندهید.
*از طناب منحصراً برای سنگنوردی استفاده کنید. طنابی که برای کشیدن یک خودرو استفاده شده است، هرگز نباید برای سنگنوردی استفاده شود.
*پیش از نگهداری، تمام گرهها را باز کنید.
*اجازه ندهید طناب روی لبههای تیز سر بخورد.
*طناب را تقریباً پس از هر ۲۰ صعود با شوینده ملایم بشویید.
[[رده:کوهنوردی]]
ri99apkuapzagsciyt7nu9u4djhqd78
135579
135578
2026-10-05T08:23:52Z
Fwldom
26269
/* تجهیزات و پوشش عمومی */
135579
wikitext
text/x-wiki
{{ناوبری|قبلی=افزارگان کوهنوردی|فعلی=پوشاک و کفش کوهنوردی|بعدی=خورد و خوراک}}
== تجهیزات و پوشش عمومی ==
#'''[[w:fa:چکمه|چکمه]]''': باید ۱۵ تا ۱۸ سانتیمتر ارتفاع داشته باشند. جنس زیره میتواند از چرم یا لاستیک ویبرام باشد. اتصال داخلی میتواند دوخته، چسبانده، پرچشده یا ترکیبی از این روشها باشد و میتواند دارای کفی میانی سخت یا انعطافپذیر باشد. ضدآب کردن چرم پوتینها را میتوان با موم، سیلیکون یا چربی انجام داد. برخی پوتینها نیز از پلاستیک ساخته میشوند.
#'''جوراب''': دو سیستم وجود دارد:
::* الف) در تماس مستقیم با پوست، جورابهای ابریشمی، پلیپروپیلن یا نایلونی پوشیده شود و روی آن دو جفت جوراب پشمی قرار گیرد.
::* ب) '''سد بخار''': در تماس با پوست، جوراب پلیپروپیلن پوشیده شود، سپس یک لایه نایلون و روی آن دو جفت جوراب پشمی قرار گیرد. در صورت نیاز میتوان یک لایه دیگر نایلون نیز اضافه کرد. اگر پیش از پوشیدن جورابها، پاها را با ضدتعریق اسپری کنیم، بسیار کمککننده است.
#'''گتر یا روکش پوتین''': باید به ارتفاع، نوع بستهشدن، عایق بودن پارچه و وزن آن توجه کرد.
#'''شلوار''': میتوان از شلوارهای پشمی کوتاه تا زیر زانو یا شلوار ورزشی استفاده کرد. برای دماهای پایین میتوان از لباسهای پرِ اردک یا غاز و لباسهای پشمی استفاده کرد. زیر شلوار ورزشی نیز میتوان لباس زیر از جنس پشم، پلیپروپیلن یا توری پوشید. همچنین شلوارهای بادگیر یا ضدآب نیز وجود دارند. باید در نظر داشت که تعادل گرما از طریق حفظ تعادل آن، که [[w:fa:همایستایی|همایستایی]] نامیده میشود، حفظ میگردد.
#'''آنوراک''': میتواند مصنوعی یا پر باشد و هر دو نوع در قسمت بیرونی با نایلون پوشانده میشوند.
#'''بادگیر''': معمولاً از نایلون ساخته میشود و هدف آن جلوگیری از اتلاف گرما بر اثر [[w:fa:همرفت|همرفت]] است؛ یعنی جریانهای هوا و اثر دمِ لباس.
#'''دستکش''': برای انگشتان توصیه میشود در تماس مستقیم با پوست، دستکشهای نایلونی یا ابریشمی پوشیده و روی آن پلیپروپیلن یا پشم قرار داده شود. روی این لایهها میتوان از '''دستکشهای روکشدار''' از جنس پشم، نایلون، فلانل، پر، الیاف پشمی یا دارای سد بخار استفاده کرد.
#'''قمقمه''': توصیه میشود برای آب از بطری پلاستیکی عایق و دهانگشاد استفاده شود.
#'''اجاق''': بهتر است گازی یا فشاری باشد.
#'''قابلمه، فنجان و قاشق''': ترجیحاً از جنس آلومینیوم باشند.
#'''عینک''': اگر قرار است روی برف حرکت کنیم، عینک باید دارای حفاظت [[w:fa:پرتو فرابنفش|فرابنفش]] استاندارد باشد و تمام میدان دید را بپوشاند؛ مانند عینکهای اسکی. اگر به عینک طبی نیاز داریم یا از لنز تماسی استفاده میکنیم، همراه داشتن یک جفت جایگزین مفید است.
#'''کولهپشتی''': باید راحت، بادوام (با توجه به جنس پارچه و دوختها)، سبک و متناسب با نوع استفاده باشد. کولهپشتیها میتوانند دارای قاب یا بدون قاب باشند که نوع بدون قاب توصیه میشود.
#'''کرامپون''': انواع سخت یا انعطافپذیر دارند. از برندهای رایج میتوان به Salewa، SMC، Stubai و Chouinard اشاره کرد. معمولاً از آهن نرم یا آلیاژهای آلومینیوم ساخته میشوند.
#'''کلنگ کوهنوردی''': اندازه آن برای صعودهای فنی ۵۵ تا ۶۵ سانتیمتر و برای صعودهای معمولی ۷۵ تا ۸۰ سانتیمتر است. انواع مختلفی از آن وجود دارد: چوب زبانگنجشک (که ارتعاشات را جذب میکند و در عین حال استحکام دارد)، فایبرگلاس (سبک و مقاوم) و فلزی (قوی، سرد و فاقد تعادل).
#'''چادر''': چادرهای مناسب ارتفاعات باید کف ضدآب، پوشش دولایه داشته باشند، سبک باشند و دارای مهارهای مناسب باشند. از نظر شکل میتوانند گنبدی، دوشیب یا به شکل موشخانهای باشند.
#'''تشک''': بر اساس جنس میتوانند بادی، فومی یا زیراندازی باشند.
#'''کیسه خواب''': میتوانند مستطیلی یا [[w:fa:کیسه خواب|مومیاییشکل]] باشند و از پر غاز یا مواد مصنوعی ساخته شوند. باید توجه داشت که کیسه خواب گرما تولید نمیکند و تنها عایق است. ترجیحاً رنگ آن تیره باشد.
#'''سایر موارد''': [[w:fa:قطبنما|قطبنما]]، [[w:fa:جعبه کمکهای اولیه|جعبه کمکهای اولیه]]، چراغقوه، دوربین عکاسی، هارنس، کلاه یا کلاهکامل.
== تجهیزات فنی ==
=== کلنگ کوهنوردی ===
==== تعریف کلنگ کوهنوردی ====
به دلیل ناآگاهی از کاربرد کلنگ کوهنوردی در کوهنوردی مکزیک، این وسیله به عنوان ابزار یا تجهیزاتی انحصاری برای کوهستانهای مرتفع و بهطور خاص مکانهایی که برف یا یخ وجود دارد شناخته شده است. این مفهوم اشتباه نسل به نسل در میان کوهنوردی تجربی (بدون آموزش رسمی) منتقل شده است. امروزه باشگاههای سازمانیافته کوهنوردی مکزیک و همچنین مؤسسات معتبر مانند امداد کوهستان و صلیب سرخ مکزیک، کارزارهای مختلفی را برای از بین بردن این عادت آغاز کردهاند؛ عادتی که تنها تنوع کاربردهای کلنگ کوهنوردی را محدود میکند.
کلنگ کوهنوردی کاربردهای متنوعی دارد که از یک گردش ساده در کوهستانهای متوسط که در آن برف یا یخ وجود دارد تا صعود به ارتفاعات بلند که این عناصر در آن وجود دارند، قابل استفاده است. اگر کلنگ در کوهستان متوسط استفاده نمیشود، دلیل آن ناآگاهی از کاربردهای آن است. در ادامه نمونههایی از کاربرد آن ارائه میشود.
==== بخشهای کلنگ کوهنوردی ====
*'''سر یا صلیب کلنگ''':
:* الف) از پیک یا نوک و بیلچه تشکیل شده است و بهتر است این دو در یک قطعه فولاد کربنی یکپارچه باشند. برخی سرها دارای سوراخی در قسمت صلیب هستند که برای اتصال کارابین استفاده میشود.
:* ب) عرض بیلچه باید حداقل ۵ تا ۷ سانتیمتر باشد و عمدتاً برای تراشیدن پلهها و بهعنوان تکیهگاه کف دست هنگام استفاده از کلنگ برای خودحمایتی به کار میرود و میتواند دندانهدار یا بدون دندانه باشد.
:* ج) طول پیک یا نوک باید حداقل ۱۵ تا ۱۸ سانتیمتر باشد و میتواند دندانهدار یا بدون دندانه باشد.
:* د) سر کلنگ باید کاملاً به بدنه آن متصل باشد.
:* هـ) هم پیک و هم بیلچه باید به لبههای تیز ختم شوند، اما نباید حالت نوک بسیار برنده داشته باشند.
*'''دسته یا بدنه کلنگ''':
:* الف) بدنه اصلی کلنگ است. انواع مختلفی از مواد مانند چوب، فایبرگلاس و دورآلومین ساخته میشوند و برخی نیز با روکشهای پلاستیکی محافظت شدهاند.
:* ب) بدنه کلنگ باید بیضیشکل باشد، زیرا این شکل مقاومت بیشتری ایجاد میکند و خارج کردن آن را با چرخاندن جزئی هنگامی که در زمین یا برف فرو رفته است آسانتر میکند. همچنین ایمنی بیشتری در استفاده ایجاد میکند، زیرا از لغزش جلوگیری میشود و کوهنورد با لمس دسته میتواند موقعیت آن را تشخیص دهد.
:* ج) قسمت پایینی دسته باید توسط یک بوش یا غلاف فلزی محافظت شود تا از ترکخوردن آن جلوگیری کرده و همزمان به ثابت کردن انتهای فلزی کمک کند.
:* د) طول دسته به کاربرد یا تکنیک مورد نظر بستگی دارد؛ طول معمول آن بهگونهای است که وقتی کوهنورد ایستاده و سر کلنگ را در دست گرفته است، قسمت انتهایی کلنگ به زمین برسد.
*'''انتهای کلنگ''': انتهای کلنگ باید از فولاد کربنی باشد و کاملاً به دسته متصل شده باشد. میتواند دارای مقطع مربعی، مستطیلی یا مخروطی باشد و حداقل ۶ سانتیمتر طول داشته باشد و به یک لبه تیز، اما نه برنده، ختم شود.
* '''مچبند''': مچبند کوتاه (که بسته به تکنیک متفاوت است) برای آویزان کردن کلنگ در مانورهایی که هر دو دست مورد نیاز هستند مفید است. این مچبند در تمام طول دسته قابل حرکت است و در بالای انتهای کلنگ دارای یک متوقفکننده است که از خارج شدن آن جلوگیری میکند.
==== توصیههایی برای نگهداری ====
* هنگامی که کلنگ استفاده نمیشود، بهتر است انتهای کلنگ، پیک و بیلچه با روکشهای مخصوص خود محافظت شوند.
* هنگام حمل در شهر یا هر نوع وسیله نقلیه، باید محافظهای آن نصب باشند تا از آسیبدیدن افراد یا خود کلنگ جلوگیری شود.
* تا حد امکان باید از تماس مستقیم کلنگ با سنگ جلوگیری کرد؛ یعنی انتهای کلنگ، بیلچه و پیک نباید مستقیماً با سنگ تماس داشته باشند، زیرا در غیر این صورت لبههای آنها گرد شده و دیگر عملکردی را که برای آن طراحی شدهاند نخواهند داشت.
* هنگامی که کلنگ در خانه نگهداری میشود، باید از سوراخ قسمت سر یا صلیب یا در صورت نبود آن از پیک یا بیلچه آویزان شود، بهگونهای که تا حد امکان از خم شدن بدنه جلوگیری شود.
* تا حد امکان باید از وارد شدن ضربه از هر نوع به کلنگ جلوگیری کرد، زیرا ممکن است هر یک از قسمتهای آن ترک خورده یا شکسته شود.
* برای حفظ چوب کلنگ باید به تمیز نگه داشتن هرچه بیشتر آن توجه ویژه داشت. اگر بدنه چوبی است، هنگام نگهداری طولانیمدت آن را لاک زده یا با روغن بزرک چرب کنید.
==== توصیههایی برای استفاده ====
#کلنگ نباید برای بازی قرض داده یا استفاده شود و در کوهستان هرگز نباید از کوهنورد جدا شود؛ حتی بیشتر از این، باید آن را بخشی از بدن خود در نظر گرفت.
#کوهنورد باید به استفاده از کلنگ با هر دو دست عادت کند تا انجام هر نوع کار با آن آسانتر شود.
#پیک اساساً برای ایجاد پله در سطوح سخت، مانند زمین یا یخ، استفاده میشود.
#بیلچه اساساً برای ایجاد پله در سطوح نرم، مانند خاک نرم یا برف، استفاده میشود.
#خودایستایی با پیک یا بیلچه انجام میشود و انتخاب آن به سختی زمین بستگی دارد؛ پیک در زمین سخت و بیلچه در زمین نرم استفاده میشود.
#برای ایجاد نقطه حمایت، کلنگ باید کاملاً در زمین یا برف فرو برده شود. هنگامی که امکان فرو بردن کامل آن وجود ندارد، پیک یا بیلچه را تا حد امکان فرو کرده و روی آن فشار وارد میکنند تا خارج نشود.
#کلنگ در هر شرایطی باید در سمت کوه قرار داشته باشد؛ یعنی هنگام صعود، بین کوهنورد و کوه قرار گیرد.
#در هنگام فرود، کلنگ باید بین فرد و دره قرار گیرد، مشروط بر اینکه حرکت بهدرستی انجام شود.
==== کاربردهای کلنگ ====
#'''کلنگ بهعنوان سومین نقطه اتکا یا کلنگعصا''': همانطور که از نام آن پیداست، در این حالت از کلنگ مانند عصا برای ایجاد یک نقطه اتکا و حفظ تعادل استفاده میشود. هنگام حرکت با کلنگ در این وضعیت، چه در صعود و چه در فرود، پیک آن باید همیشه در جهتی باشد که کوهنورد در حال حرکت است؛ یعنی در صعود، پیک باید به سمت کوه و در فرود به سمت دره باشد. باید به یاد داشت که در اصطلاح کوهنوردی، رفتن به سمت دره یعنی رفتن به سمت پایین. روش صحیح حمل کلنگ این است که کف دست کوهنورد روی بیلچه قرار گیرد و با انگشت شست یا اشاره، پیک را دربرگیرد، بدون استفاده از مچبند، و کلنگ همیشه بین کوهنورد و کوه قرار داشته باشد.
#'''کلنگ جارویی یا راماس''' (en ramasse): در این روش، کلنگ در فرودها، تراورسهای افقی، تراورسهای مورب صعودی یا نزولی با شیب نسبتاً زیاد استفاده میشود و وضعیت کلنگ به شکل زیر است:
::*'''تراورس افقی''': کلنگ بهصورت افقی در مقابل کوهنورد قرار میگیرد و با هر دو دست نگه داشته میشود؛ در حالی که پیک باید در جلوی بدن باشد. انتهای کلنگ باید با فشاری مناسب با شیب در تماس باشد، بهگونهای که نلغزد و ایمنی بیشتری ایجاد کند. یک دست سر کلنگ را میگیرد و نیرویی رو به بالا وارد میکند و دست دیگر کلنگ را تا حد امکان نزدیک به انتهای آن میگیرد. تعادل با تکیه بر کلنگ حفظ میشود. هنگامی که یک پا در حال حرکت است، پای دیگر باید کاملاً ثابت و ایمن باشد و حرکات بهگونهای هماهنگ شوند که همیشه حداقل دو نقطه اتکا یا تماس با شیب وجود داشته باشد: یک پا و انتهای کلنگ، یا هر دو پا در زمانی که انتهای کلنگ با شیب تماس ندارد.
::*'''تراورس مورب صعودی یا نزولی''': همان حرکات حالت قبل انجام میشود و تنها تفاوت این است که حرکت بهصورت مورب رو به بالا یا پایین انجام میشود. باید به یاد داشت که پیک کلنگ همیشه باید رو به جلو باشد و کلنگ باید محکم گرفته شود تا از افتادن آن جلوگیری شود.
::*'''فرود از شیبهای بسیار پرشیب''': وضعیت کلنگ به این صورت است: کلنگ بهصورت افقی در مقابل کوهنورد قرار میگیرد، پیک به سمت جلو است و با هر دو دست نگه داشته میشود. پشت کوهنورد به سمت شیب و صورت او به سمت دره قرار دارد. انتهای کلنگ به سمت شیب برده میشود تا با آن تماس پیدا کند و در پشت کوهنورد قرار گیرد. در طول فرود، انتهای کلنگ باید همواره با شیب در تماس باشد. هنگامی که کلنگ در سمت راست قرار دارد، پیک باید به سمت راست کوهنورد و هنگامی که در سمت چپ قرار دارد، پیک باید به سمت چپ کوهنورد اشاره کند.
::*'''کلنگ در خودایستایی''': خودایستایی را میتوان با پیک یا بیلچه کلنگ و در برخی موارد با بدنه آن انجام داد؛ بنابراین کوهنورد باید بتواند زمین زیر پای خود را ارزیابی کند. اگر زمین سخت باشد، خودایستایی باید با پیک کلنگ انجام شود؛ اگر زمین نرم باشد، با بیلچه و اگر زمین بسیار نرم و شیب بسیار زیاد باشد، باید تلاش شود انتهای کلنگ و دسته آن تا حد امکان در زمین فرو رود و کلنگ محکم گرفته شود. هدف از تمام این کارها متوقف کردن سقوط است. اگر کوهنورد نتواند به این شکل متوقف شود، باید سریع واکنش نشان داده و روش دیگری را امتحان کند و این کار را ادامه دهد و همیشه از کلنگ استفاده کرده و از رها کردن آن خودداری کند. اما در صورت از دست دادن کلنگ، باید به شکم قرار گرفته و رو به شیب باشد، پاها و دستها را تا حد امکان باز کرده و کاملاً کشیده نگه دارد و با آنها به سمت زمین فشار وارد کند. هنگامی که کوهنورد در حال فرود است و زمین میخورد، نخستین کار این است که کلنگ را با هر دو دست بگیرد، غلت بزند و پیش از پایان غلت، بدن را طوری بچرخاند که صورت کوهنورد رو به شیب قرار گیرد، پاها تا حد امکان باز باشند و کلنگ زیر بدن کوهنورد قرار گیرد و بهصورت مورب از کمی بالاتر از شانه، جایی که سر یا صلیب کلنگ قرار دارد، تا کمر، یعنی محل انتهای کلنگ، امتداد داشته باشد. بدن کوهنورد باید تا توقف سقوط بر کلنگ فشار وارد کند و تمام روشهای ذکرشده را برای توقف سقوط به کار گیرد.
::*'''کلنگ لنگر''': در این حالت کوهنورد از کلنگ مانند یک لنگر استفاده میکند؛ یعنی آن را با پیک یا بیلچه در نقطهای ایمن فرو میکند. این کار را میتوان با یک دست انجام داد؛ به این صورت که کلنگ از نزدیکی انتهای آن گرفته شده و بالاتر از آن لنگر میشود و سپس برای صعود از آن کشیده میشود. همچنین میتوان این کار را با هر دو دست انجام داد؛ یک دست سر کلنگ را میگیرد و دست دیگر نزدیک انتهای آن قرار گرفته، آن را مهار کرده و کوهنورد خود را با آن بالا میکشد. میتوان پیش از هر حرکت برای پاها پلههایی ایجاد کرد و در هر حرکت و هر بالا کشیدن، کلنگ باید بسته به جنس زمین، با پیک یا بیلچه بهطور کامل مهار شود.
::*'''کلنگ تکیهگاه''': در این حالت کوهنورد از کلنگ بهعنوان یک نقطه اتکای دیگر، هم در صعود و هم در فرود، استفاده میکند. در صعود، سر کلنگ را گرفته و آن را کمی بالاتر از زانو روی شیب فرو میکند و برای بالا رفتن به آن تکیه میکند. پیش از آن میتوان برای پاها پلههایی ایجاد کرد. این تکنیک برای صعود از دیوارههای پرشیب مفید است و میتوان از یک یا دو کلنگ، یکی در هر دست، استفاده کرد. در فرود، کلنگ از قسمت بدنه و نزدیک سر آن گرفته شده و همزمان با پایین آمدن، در شیب فرو برده میشود و همیشه حداقل دو نقطه اتکا برای حفظ تعادل وجود دارد.
=== کرامپونها ===
کرامپونها امکان حرکت در زمینهای دارای یخ سخت یا شیبهای بسیار زیاد را فراهم میکنند. آنها از میخها، حلقهها، پاشنهبندها، پیچها، پل، بند و سگک تشکیل شدهاند. کرامپونها میتوانند ۱۰ یا ۱۲ میخ داشته باشند. بندهای کرامپون از چرم، پنبه، نایلون یا نئوپرن ساخته میشوند که نوع نئوپرن به دلیل سهولت نصب و یخ نزدن، بیشتر توصیه میشود. بند کرامپون به شکل ضربدر بسته میشود؛ از پاشنه بیرونی شروع شده و بهصورت زیگزاگ تا حلقههای قسمت جلو ادامه مییابد و در انتها مسیر بهصورت معکوس طی شده و در پایان با دو سر بند یک گره ساده زده میشود. کرامپونها باید همیشه بهخوبی تیز باشند، اما فقط لبههای جانبی آنها تیز شوند و نباید در زمینهای مورنی یا برف سست استفاده شوند. پوتین باید بهخوبی روی کرامپون محکم شود و هنگامی که کرامپون پاشنهبند ندارد، باید با سیم محکم شود. هم کرامپونها و هم کلنگ باید پس از صعود تمیز شوند. بهتر است کرامپونها در خارج از کولهپشتی، اما بهخوبی مهار شده، حمل شوند و کلنگ نیز در قسمت بیرونی قرار گیرد و انتهای آن رو به بالا باشد.
=== طناب و مراقبت از آن ===
طناب مهمترین و ضروریترین عنصر در [[w:fa:سنگنوردی|سنگنوردی]] است، زیرا نمایانگر یکپارچگی همطنابها و وسیله پیشروی است و در چهار وظیفهای که تجهیزات برای آن طراحی شدهاند کاربرد دارد:
#برای ایجاد ایمنی.
#برای تشکیل تیم همطنابها.
#برای تسهیل صعود.
#برای امکانپذیر کردن صعودهایی که بدون استفاده از طناب غیرممکن هستند.
طناب باید پیش، هنگام و پس از صعود با دقت ویژهای نگهداری شود. طناب باید حداکثر مقاومت در برابر پارگی، انعطافپذیری و سبکی را داشته باشد. برای حفظ طناب در وضعیت مناسب، باید موارد زیر رعایت شود:
*هرگز روی طناب پا نگذارید.
*از برخورد سنگها با طناب جلوگیری کنید؛ اگر چنین اتفاقی افتاد، طناب را فوراً بررسی کنید.
*طناب را بیدلیل در معرض نور خورشید قرار ندهید. پرتوهای فرابنفش طناب را سفت و شکننده میکنند.
*اگر طناب خیس شد، آن را در سایه خشک کنید.
*آن را در محلی خنک، خشک و دارای تهویه نگهداری کنید. هرگز آن را در صندوق عقب خودرو قرار ندهید.
*از طناب منحصراً برای سنگنوردی استفاده کنید. طنابی که برای کشیدن یک خودرو استفاده شده است، هرگز نباید برای سنگنوردی استفاده شود.
*پیش از نگهداری، تمام گرهها را باز کنید.
*اجازه ندهید طناب روی لبههای تیز سر بخورد.
*طناب را تقریباً پس از هر ۲۰ صعود با شوینده ملایم بشویید.
[[رده:کوهنوردی]]
ta8wnkpozspy0wz6ohdome22m4koyxr
کوهنوردی/خورد و خوراک
0
42198
135564
2026-10-05T07:52:56Z
Fwldom
26269
صفحهای تازه حاوی «{{ناوبری|قبلی=پوشاک و کفش کوهنوردی|فعلی=خورد و خوراک|بعدی=آب و نوشیدنی در کوهستان}}» ایجاد کرد
135564
wikitext
text/x-wiki
{{ناوبری|قبلی=پوشاک و کفش کوهنوردی|فعلی=خورد و خوراک|بعدی=آب و نوشیدنی در کوهستان}}
c5sx5mmkv7e844maradk23e6rpx6fb9
135568
135564
2026-10-05T07:55:13Z
Fwldom
26269
added [[Category:کوهنوردی]] با استفاده از ردهساز
135568
wikitext
text/x-wiki
{{ناوبری|قبلی=پوشاک و کفش کوهنوردی|فعلی=خورد و خوراک|بعدی=آب و نوشیدنی در کوهستان}}
[[رده:کوهنوردی]]
4opzse7ty12w04h085ovcdsj6tcgkl9
کوهنوردی/صفحه اصلی
0
42199
135571
2026-10-05T08:05:31Z
Fwldom
26269
صفحهای تازه حاوی «{{جلد|تصویر=K2_8611.jpg|عنوان=کوهنوردی|زیرعنوان=آموزش کوهنوردی|توضیح=پیمایش راهها در کوهستان، با بهکارگیری ابزارهای شگردی و درگیر شدن با راههای سنگی و یخی را کوهنوردی مینامند. به بلندیهای بیش از ۶۰۰ متر از زمینهای پیرامونی، کوه گفته می...» ایجاد کرد
135571
wikitext
text/x-wiki
{{جلد|تصویر=K2_8611.jpg|عنوان=کوهنوردی|زیرعنوان=آموزش کوهنوردی|توضیح=پیمایش راهها در کوهستان، با بهکارگیری ابزارهای شگردی و درگیر شدن با راههای سنگی و یخی را کوهنوردی مینامند. به بلندیهای بیش از ۶۰۰ متر از زمینهای پیرامونی، کوه گفته میشود. کوهنوردی به پاد بسیاری از دیگر ورزشها دارای دستورهای پیچیده نیست. کوهنوردان شگردها و فلسفههای ناهمگونی برای بالا رفتن از کوه دارند.|وضعیت=در حال ویرایش|درصد=10|شروع=کوهنوردی/پیشگفتار|فهرست=کوهنوردی}}
kdbhy4mbpo5iys0a6h0pi9sbrs0blku
135572
135571
2026-10-05T08:06:02Z
Fwldom
26269
135572
wikitext
text/x-wiki
{{جلد|تصویر=K2_8611.jpg|عنوان=کوهنوردی|توضیح=پیمایش راهها در کوهستان، با بهکارگیری ابزارهای شگردی و درگیر شدن با راههای سنگی و یخی را کوهنوردی مینامند. به بلندیهای بیش از ۶۰۰ متر از زمینهای پیرامونی، کوه گفته میشود. کوهنوردی به پاد بسیاری از دیگر ورزشها دارای دستورهای پیچیده نیست. کوهنوردان شگردها و فلسفههای ناهمگونی برای بالا رفتن از کوه دارند.|وضعیت=در حال ویرایش|درصد=10|شروع=کوهنوردی/پیشگفتار|فهرست=کوهنوردی}}
lzdewu90s5ush42lairbbnaew9t7371
الگو:کتابهای ماه/برگزیده/۱
10
42200
135581
2026-10-05T08:33:15Z
Fwldom
26269
صفحهای تازه حاوی «[[پرونده:Book CMD.png|300px|link=آموزش کامل خط فرمان ویندوز|بیقاب|وسط]] [[آموزش کامل خط فرمان ویندوز]] کتابی است که به شما کار کردن با خط فرمان ویندوز را به طور کامل آموزش میدهد.{{سخ}}سی ام دی (به انگلیسی: cmd) یک خط فرمان است. خط فرمان در واقع محیطی است که در آ...» ایجاد کرد
135581
wikitext
text/x-wiki
[[پرونده:Book CMD.png|300px|link=آموزش کامل خط فرمان ویندوز|بیقاب|وسط]]
[[آموزش کامل خط فرمان ویندوز]] کتابی است که به شما کار کردن با خط فرمان ویندوز را به طور کامل آموزش میدهد.{{سخ}}سی ام دی (به انگلیسی: cmd) یک خط فرمان است. خط فرمان در واقع محیطی است که در آن دستورات به صورت متنی به کامپیوتر داده میشود.
fpz63bryscssiasu7abxvx3wnl3oo16
الگو:کتابهای ماه/برگزیده/۲
10
42201
135584
2026-10-05T08:39:21Z
Fwldom
26269
صفحهای تازه حاوی «[[پرونده:Go Logo Blue.svg|300px|link=زبان برنامهنویسی گو|بیقاب|وسط]] [[زبان برنامهنویسی گو]] کتابی برای آموزش زبان برنامهنویسی گو (Go) است.{{سخ}}گو یک زبان برنامهنویسی کامپایلشده و متنباز است که توسط گوگل توسعه داده شده و برای ساخت نرمافزارهای سری...» ایجاد کرد
135584
wikitext
text/x-wiki
[[پرونده:Go Logo Blue.svg|300px|link=زبان برنامهنویسی گو|بیقاب|وسط]]
[[زبان برنامهنویسی گو]] کتابی برای آموزش زبان برنامهنویسی گو (Go) است.{{سخ}}گو یک زبان برنامهنویسی کامپایلشده و متنباز است که توسط گوگل توسعه داده شده و برای ساخت نرمافزارهای سریع، ساده و مقیاسپذیر استفاده میشود.
9uvlz00jvio9ktm5w7miy31s0yt8j43
135588
135584
2026-10-05T08:51:38Z
Fwldom
26269
135588
wikitext
text/x-wiki
[[پرونده:Michael Gernhardt in space during STS-69 in 1995.jpg|بیقاب|یک فضانورد|وسط]]
[[فرهنگ نجوم]] مجموعهای آموزشی و مرجع درباره مفاهیم، پدیدهها و موضوعات گوناگون نجوم و اخترفیزیک است. این کتاب موضوعاتی از منظومه شمسی و اجرام آسمانی تا کیهانشناسی، فضانوردی، فیزیک و کره آسمان را پوشش میدهد.
6putul9n03vteg8g34jmhcbovi697qx
الگو:کتابهای ماه/برگزیده/۳
10
42202
135589
2026-10-05T08:52:29Z
Fwldom
26269
صفحهای تازه حاوی «[[پرونده:Go Logo Blue.svg|300px|link=زبان برنامهنویسی گو|بیقاب|وسط]] [[زبان برنامهنویسی گو]] کتابی برای آموزش زبان برنامهنویسی گو (Go) است.{{سخ}}گو یک زبان برنامهنویسی کامپایلشده و متنباز است که توسط گوگل توسعه داده شده و برای ساخت نرمافزارهای سری...» ایجاد کرد
135589
wikitext
text/x-wiki
[[پرونده:Go Logo Blue.svg|300px|link=زبان برنامهنویسی گو|بیقاب|وسط]]
[[زبان برنامهنویسی گو]] کتابی برای آموزش زبان برنامهنویسی گو (Go) است.{{سخ}}گو یک زبان برنامهنویسی کامپایلشده و متنباز است که توسط گوگل توسعه داده شده و برای ساخت نرمافزارهای سریع، ساده و مقیاسپذیر استفاده میشود.
9uvlz00jvio9ktm5w7miy31s0yt8j43