اطلاعیه

Collapse
No announcement yet.

آموزش زبان سی

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    آموزش زبان سی

    جند شب پیش داشتم دنبال تایپیکی به نام آموزش زبان سی و کدوِیژن می گشتم , متاسفانه پیدا نکردم بنابراین از یکی ‏از اساتید خواستم یک چنین تایپیکی بزنند , گفتند خود شما بزن ؛ بقیه هم کمک می کنند.
    من میخوام از امشب سی رو یاد بگیرم حالا اگر من خیلی مبتدی رو قبول ‏دارین دوستانی که دوست دارن سی رو یاد بگیرن مثل من از امشب شروع کنند و با همین تایپیک ادامه میدیم انشاالله اساتید هم یاری می کنند در ‏غیر این صورت از اساتید تقاضا دارم که یک چنین تایپیکی رو بزنند چون که احساس می کنم جاش خیلی خالیه ‏توی انجمنavr

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

    #2
    پاسخ : آموزش زبان سی و کدویژن

    سلام آقا منم خیلی دلم میخواد یاد بگیرم اونم به صورت مبتدیانه البته بیسکام بلدم ولی c بیشتر ه کار میاد

    پس منم هستم
    AV Maziton 100
    Render By Artlantis Studio
    [img width=346 height=100]http://maziyar123.persiangig.com/View.jpg[/img]

    دیدگاه


      #3
      پاسخ : آموزش زبان سی و کدویژن

      آقا داریوش شما که کارت درسته. اما فکر کنم بهتر باشه شما خودت شروع کنی و بخونی، به هر مطلبی که رسیدی سوالی رو مطرح کنی تا توضیح داده بشه.
      دانش فنی تا به عمل تبدیل نشده، ذره ای ارزش نداره. اما بعضی وقت ها باید از دانش برای باز کردن مرزهای جدیدی در علم استفاده کرد، نه اینکه اونها رو صرفاً فقط به عمل تبدیل کرد.

      دیدگاه


        #4
        پاسخ : آموزش زبان سی و کدویژن

        منم علاقه دارم.
        بگو از کجا میآ‌خای شروع کنی تا بریم جلو.
        وسط راه هم حتما دوستان کمک میآ‌کنن.

        دیدگاه


          #5
          پاسخ : آموزش زبان سی و کدویژن

          سلام.خوبی؟این تاپیکم ببین چون اساد سپاس یار یک آموزش در این مورد تهیه کردند
          لینک:http://www.eca.ir/forum2/index.php?topic=12492.0
          موفق باشید
          همیشه در حال یادگیری.سعی می کنم موانع سر راهم را بردارم.

          دیدگاه


            #6
            پاسخ : آموزش زبان سی و کدویژن

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

            دیدگاه


              #7
              پاسخ : آموزش زبان سی و کدویژن

              سلام به همه دوستان
              منم با C کار می‎کنم.
              یه زمانی از همین سایت 5 تا مقاله خوب در مورد برنامه‎نویسی به زبان C نوشته آقای حمید نجفی
              رو دانلود کرده بودم.
              الان لینکشو نمیدونم ولی فایل‎ها رو دوباره پلود کردم.
              5تا فایل هست، اگه تو دانلودش مشکلی داشتین، دوستان بگن تا یکی یکی هم پلود بکنم
              http://ifile.it/vli3shw/AVR%20LEARN.rar

              دیدگاه


                #8
                پاسخ : آموزش زبان سی و کدویژن

                آموزش اول : مطلبی جزئی در باره ‏C‏ ‏
                C‏ از کجا پیدا شد :‏
                سی سال پیش زبانی به نام ‏C ‎‏ اومد که توسط دنیس ریچی ساخته شد که برای ایجاد ‏سیستم عامل اجرا و استفاده میشد و ویژه گیهای جدیدی نیز به آن نسبت به زبان های ‏قبلی اضافه شده بود , از جمله این ویژه گیها نظارت بر نوع داده ها بود . در سال ‏‏1978 توسط کرنیگان و ریچی این زبان رشد افزونی به خود نشان داد . ‏
                خطاها در برنامه نویسی:‏
                ‏1- خطاهای نحوی ( خطاهای زمان کامپایل ) : که این خطاها توسط خود کامپایل ‏مشخص میشوند و راحت قابل رفعند . ‏
                ‏2- خطاهای منطقی ( خطاهای زمان اجرا ) : این خطاها در الگوریتم برنامه یا یک ‏سری شرایط خاص ایجاد میشوند که در عمل و پروتوئوس می توان فهمید و به ‏رفعشان پرداخت .‏
                چگونه یک برنامه ی درست می نویسند : ‏
                در گام اول سعی کنید برنامه ای که مینویسید حداقل خطاها را داشته باشد مثلا منظورم ‏اینه که دستورات را درست بنویسید و کم یا اضافه ننویسید . در گام دوم با آزمایش ‏برنامه ی خود هر گونه خطای احتمالی را پیدا کنید و در گام سوم دلیل بروز خطا را ‏پیدا کرده و آنرا رفع نمایید . ‏
                اگر هم برنامه دیدی مقداری سنگین است قبلش یک بلوک دیاگرام یا یک چیزی شبیه ‏اون از آن در برگه ای تهیه کن .‏
                یک نمونه برنامه ‏C ‎‏ و آشنایی با یک سری از دستورات این برنامه :‏

                ‎// this program computes the area of a circle‎
                ‎#include <stdio.h>‎
                Void main( ){‎
                ‎ Int radius;‎
                ‎ Float area;‎
                ‎);‎"‏please enter radis:‎‏&quotPrintf ‎
                ‎scanf("%d",&radius);‎
                area = 2*3.14*radius;‎
                ‎‏area is %f"area );‎‏&quotPrintf
                {
                قرمزی ها مشکلاتی بود که برطرف شده اند

                ‎//‎‏ این علامت جهت توضیح یک خط برنامه میباشد پس خط اول دستور نیست .‏
                ‏# این علامت اگر دیده شد نشان میدهد آن دستور دستور اجرایی نیست و آن دستور ‏چون با این علامت شروع شده است جزو دستورات پیش پردازنده است .‏
                هر برنامه ی ‏C ‎‏ باید دارای تابعی به نام ‏main ‎‏ باشد که اجرای برنامه باید از آن ‏اجرا شود و در حقیقت همان برنامه ی اصلی است .‏
                و در زبان سی هر بلوک برنامه با علامت } آغاز شده و { پایان می یابد .‏
                Radius‏ و ‏area‏ دو متغیر می باشند و متغیر ‏radius ‎‏ از نوع ‏integer‏ و متغیر ‏area‏ از نوع عدد اعشاری ‏float‏ تعریف شده اند ‏
                توابع ‏printf‏ و ‏scanf‏ به ترتیب برای چاپ اطلاعات در خروجی استاندارد ‏‏(نمایشگر) و دریافت اطلاعات از ورودی استاندارد(صفحه کلید) استفاده میشوند و ‏برای چاپ رشته ی مورد نظر آنها را در داخل علامت " قرار میدهند که این توابع ‏احتیاج به بررسی بیشتر دارند.‏
                این علامت ‏‎; ‎‏ پایان هر دستور را نشان میدهد یعنی حتی میتوان در دوخط یک دستور ‏را نوشت . ‏
                یک توصیه : برای بهتر یادگیری از هر برنامه ای که نوشته میشود با کامپایلر مد ‏نظر نیز کار شود . ‏


                دوستان من فقط می تونم هفته ی یک آموزش بزارم زیرا مشکله اگر دو نفر دیگه یا بیشتر هم پیدا بشن که بتونند هفته ای یک آموزش اضافه کنند خیلی عالی میشه

                در ضمن میدونم سوالات زیادی در مورد همین آموزش اول پیش میاد توی ذهنتون , چون که توی ذهن منم پیش اومده , پس سوالاتتونو بپرسین شاید اساتید راهنماییمون کردند .

                مولا علی (ع) میفرمایند : آسوده باش , آستین هارا بالا بزن , بر خدا توکل کن , آنگاه خدا را خواهی دید که زودتر از تو دست به کار شده است .

                دیدگاه


                  #9
                  پاسخ : آموزش زبان سی و کدویژن

                  یک خصوصیت ویژه: اغلب زبانها توابع و روالهای استاندارد دارن که یا نمیشه معادل اونها رو توی همون زبان ایجاد کرد و یا از قواعد عادی ایجاد توابع و روال های معمول پیروی نمیکنه. مثلا سعی کنین یک دستور مثل PRINT در بیسیک ایجاد کنین. یا یک دستور مثل Writeln در پاسکال. اما C اینجوری نیست. یک زبان تابعی هست. حتی بر خلاف تصور اغلب افراد تابعی مثل printf جزء زبان C نیست بلکه به صورت استاندارد جزء کتابخانه هایی هست که معمولا همراه کامپایلر به استفاده کننده ارائه میشه. مثلا من میتونم یک تابع عین همین printf بنویسم که بوق بزنه. پس این تابع جزء زبون نیست.

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

                  فعلا بسه. کلاس که نذاشتم که. بیشتر به این میخوره که با هم باید پیش بریم.
                  پس احیانا موارد رو تعریف میکنیم. و انحرافات رو از خط اصلی زبان C؛ مینیمم.

                  دیدگاه


                    #10
                    پاسخ : آموزش زبان سی و کدویژن

                    حرف آقا رضا مثل همیشه درسته. توی c شما می تونی مستقیم با خود فایل و مموری کار کنی و اگه دقت نکنی ممکنه به خاطر به دست آوردن سرعت بالا اصل فایلت رو خراب کنی! ما زمانی که برای Visual C برنامه می نوشتیم از این کارا زیاد کردیم! :mrgreen:

                    اما زیاد نگران نشو. برای برنامه نویسی میکرو اون هم از نوع AVR حداقل، خیلی به این موارد سنگین برنامه نویسی برنمی خوری. برنامه نویسی کدویژن در اکثر موارد خیلی ساده و سرراسته، و تازه یه جادو به نام CodeWizard داره که برای برنامه اولیت میزان کدی که باید خودت بنویسی رو به 2 یا 3 خط کاهش میده.

                    حالا بریم سراغ یه سری ایراد کوچولو تو برنامه ای که نوشتی تا از همین الان به اینها عادت کنی:

                    1- برای تایع main از {} یادت رفته استفاده کنی. این رو حتماً دقت کن. چون معمولاً اوایل برنامه نویسی بیشتر خطاهای کامپایلر از ننوشتن {} و ; هست.

                    2- تو متغیر area رو به این شکل معرفی کردی:
                    کد:
                     Float area;
                    اما به این شکل ازش استفاده کردی:
                    کد:
                     Area = 2*3.14*radius;

                    این Area با حرف بزرگ هست. اگر این برنامه رو کامپایل کنی خطای کامپایلر میده که:
                    Area is not defined
                    یعنی c به بزرگی و کوچیکی متغیرها و اسامی حساسه.

                    اشکالات دیگت مهم نیستن و کم کم با برنامه نویسی حل میشن. اما این دوتا مساله چیزیه که دیدم خیلی ها از همون اول برنامه نوشتن بهش عادت نمی کنن و تا آخر همیشه گیر هستن.

                    و در ضمن یه چیز دیگه که حرف آقا رضا یه یادم انداخت:

                    عبارت include# نشون دهنده این هست که عبارتی که بعد از اون نوشته میشه کتابخونه هست. این کتابخونه مجموعه ای از توابع هست که برای راحتی کار توسط یک سری افراد نوشته میشه و به مرور که یه سری از اونها خیلی معروف میشه وارد خود برنامه میشه. مثلاً همین تابع printf مربوط به کتابخونه stdio هست (مخفف Standard Input/Output) که برای اینکه کامپایلر بتونه این تابع رو شناسایی کنه و کارش رو بفهمه باید حتماً بهش بگیم "به این کتابخونه مراجعه کن":
                    <include <stdio.h#

                    اگر این برنامه رو بنویسی ولی یادت بره کتابخونه رو فراخونی کنی، موجع اجرا خطا میده که تابع printf شناخته شده نیست! :eek:

                    scanf هم دقیقاً مثل printf هست.
                    دانش فنی تا به عمل تبدیل نشده، ذره ای ارزش نداره. اما بعضی وقت ها باید از دانش برای باز کردن مرزهای جدیدی در علم استفاده کرد، نه اینکه اونها رو صرفاً فقط به عمل تبدیل کرد.

                    دیدگاه


                      #11
                      پاسخ : آموزش زبان سی و کدویژن

                      مگه میذارین یه دو دیقه من چیزی نپرونم!!!

                      جناب پور آزاد!

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

                      یه چیز دیگه!
                      جلال آل احمد نقل میکرد که داشت برای پدرش نامه ای رو مینوشت. و پدرش بیش از حد در انتخاب کلمات دقت میکرد. جلال میگفت: "یک عمر کار در محضر ارزش حقوقی کلمات رو بهش یاد داده بود"

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

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


                      static test();


                      بر خلاف تصور اغلب افراد این خط این معنی رو میده:
                      یک تابع static داریم بنام test که در این فاز نمیدونیم چند پارامتر و از چه جنسی بهش پاس میشه و فرض بر این هست که یک مقدار از نوع int برمیگردونه.


                      در صورتی که طرز تلقی خیلی از افراد اینه که:
                      یک تابع static داریم بنام test که پارامتر نداره و بی خیال مقدار برگشتی هم شو.

                      هدر فایل کمک میکنه که این تفسیر ها درست انجام بشه.

                      مسئله بعدی اینه که شما که VC کار هستین باهاش خیلی برخورد داشتین. میگه مثلا تابعی بنام فلان رو که فلان آرگومانها رو هم داره نمیتونم پیدا کنم. این به خاطر این هست که چیزی داریم به اسم overloading و برای ایجاد این مسئله کامپایلر ++C میاد نوع و تعداد آرگومانها رو هم جزء اسم تابع در نظر میگیره. یعنی در زمان لینک برنامه دنبال تابعی بنام __printf@qv$ میگرده. یا چیزی شبیه این. اما در کتابخونه اسم این تابع _printf هست. این یکی از مواردی هست که include کردن انجام میده.

                      دوم فراخوانی (call) یعنی صدا زدن. و ربطی به include (ضمیمه) کردن نداره. (بر خلاف غلط مصطلح)

                      جسارت منو میبخشید.

                      دیدگاه


                        #12
                        پاسخ : آموزش زبان سی و کدویژن

                        :eek: :eek: :eek: :eek: :eek: :eek:
                        مولا علی (ع) میفرمایند : آسوده باش , آستین هارا بالا بزن , بر خدا توکل کن , آنگاه خدا را خواهی دید که زودتر از تو دست به کار شده است .

                        دیدگاه


                          #13
                          پاسخ : آموزش زبان سی و کدویژن

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

                          اما اگر اشتباه می کنم تصحیح کنید:
                          ما می تونیم بدون اینکه راهنما بزنیم بپیچیم، اما نمی تونیم بدون اینکه stdio رو فراخونی کنیم از تابع printf استفاده کنیم. یا در کدویژن بدون اینکه delay رو فراخونی کنیم از کد delay_us و delay_ms استفاده کنیم. اینجا دیگه مساله اجازه ندادن کامپایلر هست، نه خواست ما. کامپایلر کدی رو که درش تابع ناشناخته ای وجود نداشته باشه رو کامپایل می کنه، برای بقیه موارد میگه این تابع رو یا داخل خود کد معرفی کن، یا بگو برم از کجا بر دارم. دارم جملات رو به شکل لری (به قول خودتون) بیان می کنم تا دوستانی که دارن این تاپیک رو می خونن و تازه می خوان c رو یاد بگیرن نگن بازم بحث شد و تاپیک به درد نمی خوره.
                          این حرفها رو باور کنید از سر کل کل نزدم. چون صحبت های آقا رضا 100% درسته، اما حداقل خود من تا حالا برای برنامه نویسی میکرو به موارد غیر از موارد لری که گفتم بر نخوردم.
                          دانش فنی تا به عمل تبدیل نشده، ذره ای ارزش نداره. اما بعضی وقت ها باید از دانش برای باز کردن مرزهای جدیدی در علم استفاده کرد، نه اینکه اونها رو صرفاً فقط به عمل تبدیل کرد.

                          دیدگاه


                            #14
                            پاسخ : آموزش زبان سی و کدویژن

                            حرف شما اگر بطور کلی فرض کنیم میتونه درست نباشه. اما بهتر اینه که باشه. مثل دور زدن. بذارین اینجوری بگم. ممکنه اصولا در کتابخانه استاندارد تابعی بنام printf وجود نداشته باشه ولی چون میخواییم کد استاندارد بنویسیم از یک ماکرو برای این کار استفاده میکنیم. یا مثلا در visual studio اگر بخوایین با WinSock کار کنین باید لایبرری مربوطه به پروژه لینک بشه. و این توسط یک دستور pragma در هدر مربوطه معرفی میشه.

                            در این مرحله فرض درست اینه که بگیم "شما دقیقا درست میگیم" اما اگر خواستین و وقتی شد (که نمیدونستین چطوری تلفش کنین!!) میشه خیلی راجع بهش وراجی کرد. اصل کارو یادمون نره. فعلا میخواییم C یاد بگیریم.

                            (به کسی نگین... یخده امشب کم آوردم!!!)
                            :mrgreen:

                            دیدگاه


                              #15
                              پاسخ : آموزش زبان سی و کدویژن

                              سلام به اساتید محترم

                              ببخشید 1سوال برام پیش امده که هرچی تایپیکا خوندم به جوابم نرسیدم:

                              هدف یادگیری زبان C به صورت کامله یا برای استفاده از میکرو و codevision ؟ oo: oo:

                              ببخشید بیله منا کسی ندید؟!! :mrgreen:
                              Regards,
                              Foad.R

                              دیدگاه

                              لطفا صبر کنید...
                              X