• Login:
  • Register Forgot Username/Password
+ Reply to Thread
Page 1 of 2 1 2 LastLast
Results 1 to 15 of 18


  1. نظر شما در مورد این پست Yes | No

    C آموزش زبان

    khob salam be hameye doostane aziz
    emrooz az site e rasmie barnamenevisie Iran ye ozviat kharidam bara khodam va bishtar amoozeshe barname ha ro dare ke baratoon man dars be dars mizaram ke shoma ham dar kenare man estefadeye lazemo bebarid

    khob hamoonjoor ke mibinid in thread baraye amoozeshe C hast ke be nazare man amoozeshe kameli inja neveshte baraye kasaye mobtadi kheili khoobe

    ya ali shoroo mikonim....
    IranProud's New Theme's Cancelled! Next Time Age Khoda Bekhad!


    Reply With Quote Reply With Quote #1  



  2. نظر شما در مورد این پست Yes | No
    درس اول
    مقدمات زبان C


    زبان C در سال 1970 توسط دنيس ريچي طراحي گرديد. اين زبان تكامل يافته زبان BCPL ميباشد كه طراح آن مارتين ريچاردز است ،و زبان BCPL از زبان B كه طراح آن كن تامپسون مي باشد ، نتيجه شده است . زبان C معمولا" يك زبان مياني ناميده مي شود . اين بدان معني نيست كه آموزش اين زبان مشكل است ، يا قدرت آن از زبان هاي برنامه سازي مثل پاسكال و بيسيك كمتر است و يا اين كه مشكلاتي مشابه زبان اسمبلي براي برنامه نويس ايجاد مي كند. علت مياني بودن زبان C اين است كه عناصر زبان هاي سطح بالا را با خصيصه تابعي زبان اسمبلي درهم آميخته است.
    زبان C همانند ساير زبانهاي مياني با مفاهيم بيت ، بايت و آدرس كه از عناصر ابتدايي ماشين هستند سر و كار دارد . يعني در اين زبان مي توان محتويات بيت ها و بايت ها را تيز تغيير داد . برنامه هاي نوشته شده به زبان C براحتي از ماشيني به ماشين ديگر قابل انتقال مي باشند . مثلا" برنامه نوشته شده براي كامپيوتر APPL در كامپيوترهاي IBM قابل اجرا است . اين خصيصه را قابل حمل بودن (Portability) زبان مي گويند . كليه زبان هاي برنامه سازي سطح بالا و مياني داراي نوعهاي داده (data types) هستند . هر نوع داده ، مجموعه اي از مقادير را مشخص مي كند كه اعمال خاصي روي آنها قابل انجام است .
    نوع داده اي كه در اكثر زبانها وجود دارد عبارتند از :
    • اعداد صحيح
    • كاراكتري
    • اعداد اعشاري

    هر برنامه در زبان C داراي خصيصه هايي است كه بعضي از آنها عبارتند از :
    • در زبان C هر دستور برنامه به يك ; ختم مي شود .
    • هر دستور ميتواند درچند خط ادامه داشته و يك خط ممكن است شامل چند دستور باشد .
    • حداكثر طول يك خط برنامه 254 كاراكتر است .
    • براي داشتن توضيحات در برنامه كافي است آنها را دربين /*و */ قرار داد.

    C زبان برنامه نويسي سيستم است . منظور از برنامه هاي سيستم عبارتند از :
    • سيستم عامل (Operating system)
    • مفسر (Interpreter)
    • ويراستار (Editor)
    • اسمبلر (Assrmbler)
    • كامپايلر (Compiler)
    • مديريت بانكهاي اطلاعاتي (Database management)

    امروزه C در اكثر امور برنامه نويسي مورد استفاده قرار مي گيرد . زيرا اين زبان هم داراي خصيصه " قابل حمل بودن " است و هم داراي كارآيي خوبي مي باشد و سرعت زياد C بر محبوبيت آن افزوده است . مساله قابل حمل بودن ، يك مساله بسيار مهم است زيرا هم موجب صرفه جويي در وقت شده و هم باعث صرفه جويي در هزينه ها مي گردد .
    زبان C فقط داراي 32 كلمه كليدي است كه 27 كلمه كليدي آن توسط ريچي ( طراح زبان ) معرفي شده و 5 كلمه كليدي ديگر توسط موسسه استاندارد سازي زبان به آن اضافه شده است . اين تعداد در مقايسه با 159 كلمه كليدي كه در زبان بيسيك وجود دارد قابل توجه است . كليه كلمات كليدي در زبان C به حروف كوچك نوشته مي شوند . چون در اين زبان بين حروف كوچك و بزرگ تفاوت است ، به عنوان مثال كلمه else يك كلمه كليدي است در حالی که ELSE کاملا با آن متفاوت بوده و کلمه کلیدی نمی باشد.


    C Programming Language Keywords:

    auto------double-------int----------struct----------break--------else----------long------------switch
    case------enum*-------register----typedef--------char---------extern-------return----------union
    const*----float---------short--------unsigned------continue----for-----------signed*--------void*
    default----goto---------sizeof-------volatile*-------do----------if--------------static----------while

    * اضافه شده توسط موسسه استاندارد سازي زبان
    Last edited by Hessan.; 05-27-2007 at 09:13 AM.
    IranProud's New Theme's Cancelled! Next Time Age Khoda Bekhad!


    Reply With Quote Reply With Quote #2  



  3. نظر شما در مورد این پست Yes | No
    khob inam darse emroozemoon :

    درس دوم
    انواع داده C


    همان طور كه قبلا" گفته شد در هر زبان برنامه سازي تعدادي از نوع هاي داده وجود دارند كه بازه اي را شامل بوده و اعمال خاصي روي آنها انجام پذير است و در C پنج نوع داده اصلي وجود دارد كه عبارتند از : char - int - float - double - void .در اين زبان اندازه و محدوده اي كه هر نوع داده اختيار مي كند بستگي به نوع پردازشگر (Processor) و نحوه پياده سازي كامپايلر دارد. شناسه هايي ( متغير برچسب ، اسامي توابع و ... ) كه از نوع char باشند براي ذخيره كردن مقاديري كه توسط كاراكترهاي اسكي تعريف شده اند به كار مي روند. شناسه هايي از نوع int براي ذخيره كردن مقادير صحيح ، و از نوع floatو doubleو براي ذخيره كردن اطلاعات عددي اعشاري به كار ميروند كه محدوده آنها توسط تعداد ارقام و دقت آنها مشخص ميشود. نوع void در مورد توابع به كار مي رود . نوعهاي داده اصلي ( به جز void ) مي توانند با عباراتي مثل signed، long، unsigned و shortو تركيب شده و نوع هاي ديگري را به وجود آورند .
    جدول زیر انواع داده های موجود در زبان C را با مشخصاتی همچون مقدار حافظه مورد نیاز و ... را مشخص می نماید.


    IranProud's New Theme's Cancelled! Next Time Age Khoda Bekhad!


    Reply With Quote Reply With Quote #3  



  4. نظر شما در مورد این پست Yes | No
    khob inam az darse emrooze ma :

    درس سوم
    متغیر ها در زبان C


    متغير، نامي براي يك محل حافظه است كه محتويات آن در طول اجراي برنامه ممكن است تغيير كند . اسم هر متغير شامل حروف کوچک a تا z و حروف بزرگ A تا Z و ارقام 0 تا 9 و خط ربط است . به طوري كه با يكي از حروف و يا خط ربط شروع شده باشند . طول نام هر متغير بستگي به نوع كامپايلر دارد كه معمولا"از 1 تا 31 كاراكتر قابل استفاده است.

    تعريف نوع متغير
    براي استفاده از متغيرها در C بايد ابتدا آنها را تعريف كنيم . تعريف متغيرها شامل نامگذاري و تعيين نوع آنها است كه به صورت زير انجام مي شود : <نوع> <اسامي متغيرها>
    <نوع> يكي از انواع است كه قبلا ذكر كرديم و <اسامي متغيرها> شامل متغيرهايي است كه مي خواهيم داراي آن نوع باشند . براي تعريف چند متغير در يك دستور بايد اسامي با كاما از يكديگر جدا گردد:

    int var1, var2;
    دستور فوق دو متغير به اسامي var2 و var1 و را از نوع int تعريف مي كند.
    float flovar1, flovar2;
    دستور فوق دو متغير به نام هاي flovar2 و flovar1 و را از نوع float تعريف مي كند.
    double d1; char ch;
    اولين دستور ، d1 را از نوع double و دستور دوم متغير ch را از نوع char تعريف مي كند .

    مقدار دادن به متغيرها
    براي مقدار دادن به متغيرها مي توان به دو طريق عمل كرد:
    1 به هنگام تعريف متغير.
    2 پس از تعريف متغير .
    به عنوان مثال :
    int a=0;
    int b, c, d, e = 0;
    char ch= 'a';
    b = 0;
    c = d = 0;
    • دستور اول ضمن تعريف a از نوع int مقدار آن را برابر با 0 قرار مي دهد .
    • دستور دوم چهار متغير b و c و d و e را از نوع int تعريف كرده و فقط مقدار متغير e را برابر با 0 قرار می دهد.
    • دستور سوم ch را از نوع كاراكتري تعريف كرده و مقدار آن را برابر با حرف a قرار مي دهد.
    • دستور چهارم مقدار متغير b را برابر با 0 قرار مي دهد.
    • دستور پنجم مقدار دو متغير c و d و را برابر صفر قرار مي دهد و اين دستور ، انتساب چندتايي را مشخص مي كند.

    همان طور كه قبلا"گفته شد مقدار متغيرها ممكن است در طول اجراي برنامه تغيير كند . با استفاده از كلمه كليدي const مي توانيم متغيرهايي را تعريف كنيم كه مقدار آنها در طول اجراي برنامه ثابت باشد . براي تعريف اين نوع متغيرها بصورت زير عمل مي شود : <نوع> <اسامي متغيرها> const
    const int a = 10;
    دستور فوق متغير a را از نوع int تعريف كرده و مقدار آن را برابر 10 قرار مي دهد . اين مقدار در طول اجراي برنامه قابل تغيير نمی باشد.
    Last edited by Hessan.; 05-29-2007 at 08:34 AM.
    IranProud's New Theme's Cancelled! Next Time Age Khoda Bekhad!


    Reply With Quote Reply With Quote #4  



  5. نظر شما در مورد این پست Yes | No
    haji damet garm baba chekardiiiiiiiiiii nemishod dige tnx nagam khyli zahmat keshidi








    Reply With Quote Reply With Quote #5  



  6. نظر شما در مورد این پست Yes | No
    vaghean mamnon
    kash darsaye photoshop ro ham dobare shoro mikardid
    Reply With Quote Reply With Quote #6  



  7. نظر شما در مورد این پست Yes | No
    oonam shorooo mikonam, chon special hast
    akhare hameye ina bayad biad roo kar
    IranProud's New Theme's Cancelled! Next Time Age Khoda Bekhad!


    Reply With Quote Reply With Quote #7  



  8. نظر شما در مورد این پست Yes | No
    dastet dard nakone
    Reply With Quote Reply With Quote #8  



  9. نظر شما در مورد این پست Yes | No
    khob inam darse jadid, age jadvala baratoon namafhoom bood begid ke ax jash bezaram...

    درس چهارم
    عملگرها در زبان C
    عملگرها نمادهايي هستند كه براي انجام اعمال خاصي مورد استفاده قرار ميگيرند. عملگرها در زبان C از تنوع زيادي برخوردارند. در C چهار دسته عملگر به نامهاي (محاسباتي ، رابطه اي ، منطقي و دستكاري بيت ها ) وجود دارند كه آنها را بررسي مي كنيم .

    عملگرهاي محاسباتي
    عملگرهاي محاسباتي كه در C مورد استفاده قرار مي گيرند در جدول زیر فهرست شده اند .
    رديف عملگر نام مثال
    1) - تفريق x-y
    2) + جمع x+y
    3) * ضرب x*y
    4) / تقسيم x/y
    5) % باقيمانده تقسيم x%y
    6) -- يك واحد كاهش x-- , --x
    7) ++ یک واحد افزایش x++ , ++x

    عملگرهاي رابطه اي
    عملگرهاي رابطه اي براي تشخيص ارتباط بين عملوندها يا مقايسه آنها مورد استفاده قرار مي گيرند.
    رديف عملگر نام مثال
    1) > بزرگتر x>y
    2) >= بزرگتر مساوي x>=y
    3) < كوچكتر x<y
    4) <= كوچكتر مساوي x<=y
    5) == مساوي بودن x==y
    6) != نامساوي x=y
    نكته قابل ذكر درمورد عملگرهاي رابطه اي اين است كه عملگر == براي تشخيص مساوي بودن دو عبارت مورد استفاده قرار مي گيرد. اين عملگر با عملگر = كه براي انتساب يك عبارت به يك متغير استفاده مي شود متفاوت است .

    عملگرهاي منطقي
    عملگرهاي منطقي بر روي عملوندهاي منطقي عمل ميكنند. عملوندهاي منطقي داراي دو ارزش درستي و نادرستي هستند .
    رديف عملگر نام مثال
    1) && و - AND x&&y
    2) || یا - OR x||y
    3) ! نقض - NOT !x
    ارزش نادرستي درزبان C با مقدار صفر و ارزش درستي با مقادير غيراز صفر مشخص ميشود.
    عملگرهاي محاسباتي و رابطه اي با يكديگر تركيب شده و عملگرهاي ديگري را بنام عملگرهاي محاسباتي رابطه اي ايجاد مي كنند.
    رديف عملگر نام مثال معادل
    1) += انتساب جمع x+=y x=x+y
    2) -= انتساب تفريق x-=y x=x-y
    3) *= انتساب ضرب x*=y x=x*y
    4) /= انتساب تقسيم x/=y x=x/y
    5) %= انتساب باقيمانده تقسي x%=y x=x%y

    نکته مهم:
    با توجه به اهمیت و گستردگی بحث عملگرهای دستکاری بیتها، این بحث به صورت یک درس جداگانه مورد بررسی قرار خواهد گرفت.
    IranProud's New Theme's Cancelled! Next Time Age Khoda Bekhad!


    Reply With Quote Reply With Quote #9  



  10. نظر شما در مورد این پست Yes | No
    درس پنجم
    عملگرهای دستکاری بیتها در زبان C


    ازآنجايي كه زبان C طوري طراحي شده است كه بتواند دربسياري ازموارد جايگزين زبان اسمبلي گردد. بايد قادر باشد كليه اعمال ( يا حداقل بسياري از اعمال ) كه در زبان اسمبلي قابل انجام هستند را انجام دهد . يكي از اعمالي كه در زبان اسمبلي براحتي انجام پذير است . انجام اعمالي بر روي بيت هاي يك بايت يا يك كلمه از حافظه است كه در زبان C براي انجام اين منظور از عملگرهايي استفاده مي شود كه به عملگرهاي بيتي معروفند. اين عملگرها انجام اعمال تست ، مقدار دادن و يا انتقال (shift) بيت ها را در يك بايت يا كلمه حافظه امكان پذير مي نمايند. عملگرهاي بيتي فقط بر روي متغيرهايي از نوع charيا int عمل مي كنند و بر روي متغيرهايي از نوع float، double،، long double،، void، و يا ساير متغيرها قابل اجرا نيستند . عملگرهاي بيتي & و | و ~ و (AND، OR، NOT) مشابه عملگرهاي منطقي AND، ORو NOT عمل مي كنند با اين تفاوت كه عمل آنها بر روي يك بيت است . با فرض اين كه p و q دو بيت مختلف باشند ، نحوه عمل عملگر ^ را در ذيل مشاهده مي نماييد .
    مقدار P------مقدار Q-------مقدار P^Q
    ۰----------------۰----------------۰
    ۱----------------۰----------------۱
    ۰----------------۱----------------۱
    ۱----------------۱----------------۰
    نکته مهم: هر بیت در حافظه فقط می تواند مقدار ۰ یا ۱ را داشته باشد.
    همان طور كه مشاهده شد ، نتيجه عملگر بيتي ^ وقتي يك (1) است كه يكي از عملوندهاي آن صفر و ديگري يك باشد . به عبارت ديگر ، نتيجه عملگر بيتي ^ وقتي صفر است كه هر دو عملوند آن صفر و يا هر دو يك باشند .مشخصات عملگرهای بیتی در جدول زیر مشخص شده است.
    عملگر-----------عنوان---نوع عملیات
    &--------------AND-----------------و
    |---------------OR-----------------یا
    ^---------------XOR---------------یا انحصاری
    ~---------------NOT---------------نقیض
    <<-------------SHIFTRIGHT------ انتقال به سمت راست
    >>-------------SHIFT LEFT-------اتنقال به سمت چپ

    عملگرهاي & و | و ^ و << و >> بر روي دو عملوند عمل مي كنند اما عملگرهاي ~ و >> و << بر روي يك عملوند عمل مي كنند .
    عملگرهاي >> و << به صورت ذيل به كار مي روند:
    متغير >> تعداد انتقال
    متغير << تعداد انتقال
    در روش كلي فوق ، متغير ، يك بايت يا كلمه اي از حافظه است كه عملگرهاي بايد بر روي آن عمل كنند . تعداد انتقال عددي است كه مشخص مي كند بيت هاي متغير بايد چند محل به سمت راست و يا چپ انتقال يابند . هر انتقال به چپ ، معادل با تقسيم كردن مقدار متغير به 2 و هر انتقال به راست ، معادل ضرب كردن در 2 است . جدول زیر روش استفاده از این دو عملگر و نتایج استفاده از آنها را مشخص می نماید.


    عملگر ~ در يك بايت يا كلمه حافظه ( يك متغير ) كليه بيت ها را نقيض ميكند. يعني بيت صفر را به بيت يك و بيت يك را به بيت صفر تبديل مي نمايد . لذا اگر اين عملگر دو بار بر روي يك متغير عمل كند وضعيت بيت هاي متغير به حالت اول برمي گردند .

    نکته مهم: اين عملگرها معمولا" در مبدل هاي دستگاهها (device drivers) مورد استفاده قرار مي گيرند . مثل برنامه هايي كه براي كار با modem و با چاپگر نوشته مي شوند . زيرا در اين گونه موارد معمولا" تست كردن بيت هاي يك متغير مد نظر خواهد بود .
    IranProud's New Theme's Cancelled! Next Time Age Khoda Bekhad!


    Reply With Quote Reply With Quote #10  



  11. نظر شما در مورد این پست Yes | No
    haj hesan in chanta therde to inghadri jaleb va amozande bod ke vaghean be ghole poulad nemsihod ye nazari nadim
    Reply With Quote Reply With Quote #11  



  12. نظر شما در مورد این پست Yes | No
    chakerim dash ali vazifas haji
    hala felan avalashe
    IranProud's New Theme's Cancelled! Next Time Age Khoda Bekhad!


    Reply With Quote Reply With Quote #12  



  13. نظر شما در مورد این پست Yes | No
    درس ششم
    تقدم عملیات عملگرها در زبان C

    دلیل الزام وجود تقدم عملکرد در عملگرها در زبان C:

    عبارت ساده ریاضی زیر را در نظر بگیرید 2 + 3 * 4، در هنگام محاسبه مقدار این عبارت به دو صورت زیر می توان عمل نمود. در حالت اول می توان ابتدا دو عدد 2و 3 را با هم جمع نمود و سپس حاصل (9) را در عدد 4 ضرب نمود که در این حالت مقدار نهایی عبارت برابر با 36 محاسبه خواهد شد. در حالت دوم میتوان ابتدا اعداد 3 و 4 را در هم ضرب کرد و سپس حاصل (12) را با عدد 2 جمع کرد که در این حالت نتیجه نهایی عبارت خواهد بود با 14. با توجه به آنچه گفته شد می توان اینطور نتیجه گرفت که این عبارت می تواند(با توجه به نحوه محاسبه) دارای دو نتیجه مختلف باشد، در حالی که در حالت کلی چنین چیزی غیر ممکن به نظر می رسد، چرا که برای انجام عملیاتهای مختلف باید هر عبارت دقیقا دارای یک نتیجه باشد تا با استناد به آن بتوانیم از صحت انجام عملیات اطمینان داشته باشیم. این مطلب به روشنی الزام وجود تقدم عملکرد در بین عملگرهای یک زبان برنامه نویسی و از جمله زبان برنامه نویسی C را مشخص می نماید.
    تقدم عملکرد عملگرها در زبان C :
    جدول زیر تقدم عملکرد عملگرهای مختلف در زبان C را مورد بررسی قرار می دهد.
    سطح تقدم-------------------------------------عملگر
    1---------------------------------------) [] -> .
    2----------------------------------------- ++ --
    3-----------------------------------------* / %
    4--------------------------------------------+ -
    5----------------------------------------<< >>
    6-----------------------------------< <= >= >
    7-----------------------------------------== !=
    8-----------------------------------------------&
    9-----------------------------------------------^
    10-----------------------------------------------|
    11---------------------------------------------&&
    12----------------------------------------------||
    13----------------------------------------------?:
    14-----= += -= *= /= %= &= |= <<= >>=
    15------------------------------------------------,
    بعضی از عملگرهای موجود در جدول هنوز معرفی نشده اند. این عملگرها در درسهای آینده مورد بررسی قرار خواهند گرفت.
    IranProud's New Theme's Cancelled! Next Time Age Khoda Bekhad!


    Reply With Quote Reply With Quote #13  



  14. نظر شما در مورد این پست Yes | No
    zabane c dige ghadimi shode .
    vali vase yad gereftane zaban haye dige khobe . payaton ghavi mishe
    Reply With Quote Reply With Quote #14  



  15. نظر شما در مورد این پست Yes | No
    درس هفتم
    توابع در زبان C


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


    type name(variables) {
    function body
    }
    · type: مشخص کننده نوع مقدار بازگشتی تابع می باشد.
    · name: مشخص کننده نام تعیین شده برای تابع می باشد.
    · variables: مشخص کننده متغیرهایی است که به عنوان ورودی های اولیه در هنگام فراخوانی تابع استفاده می شود.
    · function body: مشخص کننده مجموعه عملیاتی است که تابع انجام می دهد. این دستورات بین دو آک.لاد قرار می گیرند.
    مثالهایی از تعریف تابع
    · double squared(double number)
    · int get_name()


    همانطور كه قبلا" گفته شد C زبان ساخت يافته است و هر برنامه در اين زبان شامل يك يا چند تابع است . يكي از اين توابع كه اسم آن ()main است به عنوان تابع اصلي برنامه و بقيه توابع بعنوان تابع عرضي هستند . اجراي برنامه با تابع اصلي ، يعني ()main شروع مي شود. در نوشتن برنامه ، بايد تابع اصلي و سپس بقيه توابع را بنويسيم . تعريف يك تابع در داخل تابع ديگر امكان پذير نيست ولي هر تابع مي تواند يك يا چند تابع ديگر را فراخواني نمايد . برخلاف زبانهاي ديگر كه زير روال و توابع دو چيز جداگانه اي هستند در C همگي تحت عنوان تابع بررسي مي شوند
    IranProud's New Theme's Cancelled! Next Time Age Khoda Bekhad!


    Reply With Quote Reply With Quote #15  


 

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

     

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts