اطلاعیه

Collapse
No announcement yet.

آموزش زبان سی

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

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

    نوشته اصلی توسط saeiddiod
    سلام به همه فعالان عزیز
    اول از همه باید بگم که منم تو برنامه نویسی صفر کیلومترم ولی تا هرجا که برین منم میام. :sad:
    چندتا اموزش درباره c تو لینک پایین گذاشتم.البته خوندمشون ولی چیز زیادی دستگیرم نشد.
    از همه دوستانی که تلاش میکنن تشکر میکنم :applause:
    یه پیشنهاد هم دارم:یه مقدار روانتر توضیح بدین چون من هیچی نگرفتم(این نوع توضیحات مثل یاداوری میمونه تا اموزش)
    http://www.4shared.com/file/WRcyZY-J/part1_llc_.html
    سلام
    سعی می کنم روانتر توضیح بدم ولی خوب روان توضیح دادن کار ساده ای نیست
    سعی می کنم مثال ها رو بیشتر کنم و توضیح هم بدم اگر دوستان و اساتید بعد هر آموزش مثالی بزنند و به توضیح اون هم بپردازند خیلی عالی میشه
    خوب زمانی که شما توضیح یک مثالو میخونی خیلی بهتر متوجه میشی چی به چیه .
    من یک مشکل اساسیه دیگه ای که دارم هنوز متوجه نشده ام که چگونه باید کدویژنمو نصب کنم اگر دوستان این مشکل منو برطرف کنند خیلی عالی میشه.
    در ضمن دوست من بهترین نوع یادگیری این زبانها اینه که شما به همراه تئوری خوندن , توی کامپایلر مد نظرتون هم کار کنید و در پروتوئوس یا ... هم مشاهده کنید.
    به جرات می گم من اگر 50 درصد بیسیک یا دارم 40 درصدشو به همین شکل یاد گرفتم
    مولا علی (ع) میفرمایند : آسوده باش , آستین هارا بالا بزن , بر خدا توکل کن , آنگاه خدا را خواهی دید که زودتر از تو دست به کار شده است .

    دیدگاه


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

      نوشته اصلی توسط iranesabz
      من یک مشکل اساسیه دیگه ای که دارم هنوز متوجه نشده ام که چگونه باید کدویژنمو نصب کنم اگر دوستان این مشکل منو برطرف کنند خیلی عالی میشه.
      من درست نمی دونم شما چرا انقدر سر نصب کدویژن دردسر دارید. به نظرم یکی از راحت ترین نصب ها رو داره که کرکش هم معمولاً یه فایل که باید کپی پیست بشه.

      در هر صورت از این لینک می تونید یه ورژن کدویژن رو بگیرید که هم جدیده و هم اینکه کرکش سادست. توصیح داده داخلش:
      http://goo.gl/Devan
      دانش فنی تا به عمل تبدیل نشده، ذره ای ارزش نداره. اما بعضی وقت ها باید از دانش برای باز کردن مرزهای جدیدی در علم استفاده کرد، نه اینکه اونها رو صرفاً فقط به عمل تبدیل کرد.

      دیدگاه


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

        داریوش جون ویندوزت رو عوض کن.شاید ایراد از ویندوز باشه.

        دیدگاه


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

          http://lindmahdi.persiangig.com/codevisionavr2.05.0.rar

          ورژن جدید رو میتونی از اینجا بگیری
          Share OR Die

          دیدگاه


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

            سلام داریوش عزیز واقعا عالی بود
            من بخش متغیّرهارو متوجه نشدم زیاد مثلا تو بیسکام مینویسن Dim x as byte تو c باید چطور نوشته بشه ؟؟ :mrgreen:

            AV Maziton 100
            Render By Artlantis Studio
            [img width=346 height=100]http://maziyar123.persiangig.com/View.jpg[/img]

            دیدگاه


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

              نوشته اصلی توسط maziyar123
              سلام داریوش عزیز واقعا عالی بود
              من بخش متغیّرهارو متوجه نشدم زیاد مثلا تو بیسکام مینویسن Dim x as byte تو c باید چطور نوشته بشه ؟؟ :mrgreen:
              مثلا مینویسی
              int x ;
              که متغیر x از نوع اینت است
              ولی خوب int اعداد صحیح را شامل میشه در نتیجه شامل اعداد منفی هم میشه
              شما به جای int در مثال بالا اگر به شکل زیر بنویسی درست شبیه بایت در بیسیک میشه
              unsigned char x ;
              و اگر به صورت زیر بنویسی شبیه word میشه
              unsigned int x ;
              حالا در مثال زیر 3 تا متغییر از نوع اینت تعریف شده اند دقت کن
              int x,X,t ;
              مولا علی (ع) میفرمایند : آسوده باش , آستین هارا بالا بزن , بر خدا توکل کن , آنگاه خدا را خواهی دید که زودتر از تو دست به کار شده است .

              دیدگاه


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

                نوشته اصلی توسط iranesabz
                مثلا مینویسی
                int x ;
                که متغیر x از نوع اینت است
                ولی خوب int اعداد صحیح را شامل میشه در نتیجه شامل اعداد منفی هم میشه
                شما به جای int در مثال بالا اگر به شکل زیر بنویسی درست شبیه بایت در بیسیک میشه
                unsigned char x ;
                و اگر به صورت زیر بنویسی شبیه word میشه
                unsigned int x ;
                حالا در مثال زیر 3 تا متغییر از نوع اینت تعریف شده اند دقت کن
                int x,X,t ;
                ممنون پس اگه بخوام یه متغیّر بایت تعریف کنم میشه همون unsigned char x ؟ راستی این علامت برای چیه که گذاشتین ;
                AV Maziton 100
                Render By Artlantis Studio
                [img width=346 height=100]http://maziyar123.persiangig.com/View.jpg[/img]

                دیدگاه


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

                  نوشته اصلی توسط maziyar123
                  ممنون پس اگه بخوام یه متغیّر بایت تعریف کنم میشه همون unsigned char x ؟ راستی این علامت برای چیه که گذاشتین ;
                  یک مراجعه کوچولو به اموزش اول بکن :nice:
                  مولا علی (ع) میفرمایند : آسوده باش , آستین هارا بالا بزن , بر خدا توکل کن , آنگاه خدا را خواهی دید که زودتر از تو دست به کار شده است .

                  دیدگاه


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

                    ببخشید من دو روزی نبودم که گیر بدم. حالا اومدم جبران مافات!
                    و اگر به صورت زیر بنویسی شبیه word میشه
                    unsigned int x ;
                    متاسفانه این هم یک اشتباه کوچولوی دیگه هست. با اینکه اینجا unsigned int مساوی با یک word هست ولی درست نیست که بگیم همیشه unsigned int همون word هست.

                    انواع صحیح به قرار زیر هستن:
                    char و short و long
                    نوع char یک بایتی و نوع short همواره 2 بایتی و نوع long همواره 4 بایتی هست. این اندازه ها ربطی به پلتفرم نداره. شما روی یک سیستم 16 بیتی short رو دو بایتی دارین و روی یک سیستم 32 بیتی هم 2 بایتی. بنابراین معادل word دقیقا میشه unsigned short. در یک سیستم 16 بیتی (حالا گیر ندین. 8 بیتی هم همینطوره) int حجمی برابر با 2 بایت داره و روی یک سیستم 32 بیتی برابر با 4 بایت. یکی از خصوصیات یا محسنات زبان C اینه که میتونین باهاش جوری کد بزنین که بین سیستم های متفاوت قابلیت انتقال داشته باشه. اگر از انواع int برای نوشتن یک کد استفاده کنین؛ این نوع روی سیستم های متفاوت ممکنه حجم و مسلما رنج عددی متفاوتی داشته باشه. در صورتی که نوع word از نظر شما یک نوع مطلقا 2 بایتی هست.
                    یک مورد خیلی مهم تر از متغیری برای حلقه و غیرهم استفاده از یک فیلد در یک ساختار داده ای هست که ممکنه بین چند سیستم متفاوت به اشتراک گذاشته بشه. اینجور مواقع اشتباه ترین کار استفاده از نوعی مثل int هست.

                    (پی نوشت: لطفا گیر سه پیچ ندین. تازه از مسافرت برگشتم نمیدونم چطوری توضیح بدم!)

                    دیدگاه


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

                      با سلام
                      با اجازه
                      دوستان به نظر من برای نوشتن هر برنامه ساده ای و به هر زبانی البته بازم به نظر من ، (لطفا دوستان دریافت های بنده رو از این نوع برداشت اصلاح کنند)آ‌برنامه به سه قسمت اصلی تقسیم میشه :
                      1. فراخوانی کتابخانه های مورد نیاز
                      2.تعریف متغیرها
                      3.کار با حلقه ها و توابع کتابخانه ای
                      خوب به نظر من شما الان قسمت دوم رو کامل کرده اید ،آ‌میمونه قسمت اول و سوم به نظرم بهتر با همون ترتیب پیش بریم یعنی قسمت سوم رو کامل کنیم و بعد بریم سراغ کتابخانه ها و توابعشون
                      خوب اگه موافق باشید من برای این قسمت سوم این حلقه ها رو معرفی می کنم که بنظرم بیشترین کاربرد رو دارند :
                      1. if:کلی ترین فرم این ساختار تصمیم گیری به این ترتیب هست :
                      if () {
                      }
                      else if {
                      }
                      else{
                      };
                      خوب این دستور رو به اشکال مختلف با توجه به نوع مورد نیازتون می تونید استفاده کنید :
                      1. ساده ترین حالت : if با یک شرط و یک خط دستور
                      if ( شرط )
                      دستور1,دستورر2,دستور3,...;
                      2. if با یک شرط و یک خط دستور و یک حالت پیشفرض
                      if(شرط)
                      دستور1;
                      else
                      دستور1;
                      3. if با یک شرط و چند خط دستور
                      if(شرط){
                      دستور1;
                      دستور2;
                      دستور3;
                      ...;
                      };
                      4. if با یک شرط و چند خط دستور و یک حالت پیشفرض با چند خط دستور
                      if(شرط){
                      دستور1;
                      دستور2;
                      دستور3;
                      ...;
                      }
                      else{
                      دستور1;
                      دستور2;
                      دستور3;
                      ...;
                      };
                      5. if با چند شرط و چند خط دستور و یک حالت پیشفرض با چند خط دستور
                      if(شرط1){
                      دستور1;
                      دستور2;
                      دستور3;
                      ...;
                      }
                      else if(شرط2){
                      دستور1;
                      دستور2;
                      دستور3;
                      ...;
                      }
                      else if(شرط3){
                      دستور1;
                      دستور2;
                      دستور3;
                      ...;
                      }
                      ...
                      ...
                      ...
                      else{
                      دستور1;
                      دستور2;
                      دستور3;
                      ...;
                      };

                      دیدگاه


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

                        2-حلقه for :
                        کلی ترین فرم این حلقه به صورت زیر هست :
                        for(مقدار اولیه اندیس حلقه;شرط حلقه;گام حرکت){
                        دستور1;
                        دستور1;
                        دستور1;
                        .
                        .
                        .
                        }
                        (فقط ترتیب نوشته های آرگومان for از چپ به راست هست )
                        *حلقه for با یک خط دستور
                        for(مقدار اولیه اندیس حلقه;شرط حلقه;گام حرکت)
                        دستور1,دستورر2,دستور3,...;

                        دیدگاه


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

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

                          1- کتابخونه رو وقتی کدت رو نوشتی و فهمیدی چه توابعی داری، به اولش اضافه می کنی.
                          2- متغیر مثل نخود و لوبیاست. اول که می خوای برنامه بنویسی یه سری معرفی می کنی، بعد در حین برنامه نوشتن کلی کم و زیاد می کنی.
                          3- حلقه ها هم که شاید توی کدت باشن، شاید هم نباشن. ساده ترین برنامه ای که برای میکرو می نویسی کلاً یه حلقه داره اونم حلقه بی نهایت.

                          منظورم از این حرفها این بود که اینها اصل برنامه نویسی نیستند. البته شاید وقتی بخوای با کدویژن یه برنامه بنویسی که LED چشمک بزنه همینها رو نیاز داشته باشی، اما در هر صورت اینها همه ابزارن (به جز کتابخونه ها که راهنمان). شما وقتی کدنویس شدی که بتونی از ابزار استفاده کنی که هدفت رو به دست بیاری. بنابراین نباید ذهن خودت رو از همین ابتدا محدود به ابزار کنی، ابزار رو باید سریع بفهمی، بعد بری ازشون استفاده کنی.

                          ضمناً این همه حالت رو که برای if گفتی به نظرم طولانی بود. همشون همون توضیح اول بودن. یعنی شما وقتی همون اولی رو خوندی، باید خودت بقیه رو بفهمی.

                          اما حالا من توضیح ایشون رو با سواد خودم کامل می کنم (آقا رضا کامل ترش می کنن):

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

                          مقایسه منطقی: a & b = 0x01
                          این یعنی اگر حاصل AND منطقی اون دو عدد ( مثلاً 8 بیتی) برابر 0x01 بود... (بقیه توضیحاتش بعد از مثالای دیگه)

                          مقایسه عددی: a> 1
                          این یعنی اگر مقدار عددی a از 1 بیشتر بود... (فرض کنیم متغیر a از نوع int تعریف شده)

                          یه سری شرط های دیگه هم هست که معمولاً استفاده میشه. مثلاً ممکنه داخل پرانتز بنویسن function. این یعنی اگر function درست بود...

                          حالا میرسیم سر مساله مهم بعدش. برای کامپیوتر نتیجه تمام این مثال ها (و هزاران مثال دیگه) فقط دو چیزه. یا 1 (درست True) و یا 0 (غلط false). اگر شرط (مقایسه منطقی، عددی، تابع و هر چیز دیگه ای) صحیح بود (توی مثال اول مقدار AND اون دو عبارت 0x01 بود، دومی عدد a مثلاً برابر 2 بود و...) دستورات بعد از اون پرانتز اجرا میشه. اما اگر نبود یعنی حالت if درست نیست. بنابراین میکرو به پرانتز بعدی میره ( else if یا else هر کدوم که وجود داشت) و اونها رو چک می کنه. اگر اونها درست بود، عبارات اونها رو اجرا می کنه و همین طور الی آخر.

                          یه مثال هم می نویسم: (کد رو کپی کنید و توی یه نرم افزار مثل notepad پیست کنید تا درست دیده بشه)

                          کد:
                          if (a = 1)
                          {LED1 = ON;
                          LED2 = OFF;
                          }
                          else if (a = 2)
                          {
                          LED1 = OFF;
                          LED2 = ON;
                          }
                          else if (a = 3)
                          {
                          LED1 = ON;
                          LED2 = ON;
                          }
                          else
                          {
                          LED1 = OFF;
                          LED2 = OFF;
                          }

                          توضیحات کد:

                          فرض کنید یه متغیر فرضی به اسم a از نوع int داریم که از جایی مقدار دهی میشه. مثلاً میکرو برای روشن و خاموش کردن دوتا LED بهش فرمان میده. توی این حلقه:

                          1- اگر a برابر 1 بود، LED1 روشن میشه و LED2 خاموش.
                          2- اگر a برابر 2 بود، LED1 خاموش میشه و LED2 روشن.
                          3- اگر a برابر 3 بود، LED1 و LED2 هر دو روشن میشن.
                          4- اگر حالت دیگه ای بود ( a هر مقداری به جز این 3 حالت داشت) هر دوتا LED خاموش میشه.
                          دانش فنی تا به عمل تبدیل نشده، ذره ای ارزش نداره. اما بعضی وقت ها باید از دانش برای باز کردن مرزهای جدیدی در علم استفاده کرد، نه اینکه اونها رو صرفاً فقط به عمل تبدیل کرد.

                          دیدگاه


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

                            3-ساختار تکرار while
                            فرم کلی این دستور :
                            while (شرط حلقه) {
                            دستور1;
                            دستور2;
                            دستور3;
                            .
                            .
                            .
                            };
                            *while با یک خط دستور
                            while (شرط حلقه)
                            دستور1,دستورر2,دستور3,...;
                            \\------------------------------------------------
                            4-ساختار تکرار do...while
                            فرم کلی :
                            do {
                            دستور1;
                            دستور2;
                            دستور3;
                            .
                            .
                            . }
                            while (شرط حلقه);
                            *do...while با یک خط دستور :
                            do
                            دستور1,دستورر2,دستور3,...;
                            while (شرط حلقه);
                            \\----------------------------------------
                            خوب همونطور که مشخصه فرق این دو حلقه اینکه : در اولی شرط در ابتدای حلقه چک میشه و اگر شرط درست باشه حلقه اجرا و در غیر این صورت خط بعد از حلقه اجرا میشه
                            اما در دومی شرط همواره در انتهای حلقه چک میشه و اگر شرط درست باشه حلقه دوباره اجرا و در غیر این صورت خط بعد از حلقه اجرا میشه

                            دیدگاه


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

                              با تشکر ازآقای پورآزاد
                              اگه اجازه بدید با وجود نواقص موجود ادامه داستان رو هم بگم.
                              5-ساختار تصمیم switch
                              فرم کلی این دستور :
                              switch (عبارت) {
                              case مقدار1 :
                              مجموعه دستورات 1
                              break;
                              case مقدار2 :
                              مجموعه دستورات 2;
                              break;
                              case مقدار3 :
                              مجموعه دستورات3;
                              break;
                              .
                              .
                              .
                              default:
                              مجموعه دستورات حالت پیشفرض;
                              };
                              \\-----------------------------------------------
                              در این دستور همواره مقادیر 1 تا n با عبارت موجود در آرگومان switch مقایسه شده و هر قسمت که با آن مدارش برابر بود
                              مجموعه دستوراتش اجرا شده و از ساختار switch خارج میشود ؛ اگر هم هیچکدام از مقادیر با عبارت برابر نباشند
                              مجموعه دستورات قسمت default اجرا شده و سپس از ساختار خارج می شود که البته این قسمت اختیاری
                              است و درصورت ننوشتن این قسمت مسلما حالت پیشفرضی برای ساختار پیش بینی نشده

                              دیدگاه


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

                                یکی از مواردی که دوستان اغلب راجع بهش اشتباه میکنن دستور switch هست. دستور switch این چیزی که شما میگین نیست. دستور switch در اصل یک مجموعه از کد ها هست که توسط case های متفاوت میشه از جاهای متفاوتی وارد اون شد و توسط دستور break از این بلوک خارج شد. برای فهم بهتر این مطلب کد زیر رو در نظر بگیرین:

                                switch(n)
                                {
                                case 0:
                                if(something_ok)
                                a = 5;
                                break;
                                case 1:
                                a = 5;
                                break;
                                }


                                این کد رو میشه اینطوری هم نوشت (در صورتی که اگر فرض بر فرم پیشنهادی شما باشه این فرم مجاز نیست. مثل بقیه زبانها. ولی C بقیه زبانها نیست!)

                                switch(n)
                                {
                                case 0:
                                if(something_ok)
                                {
                                case 1:
                                a = 5;
                                }
                                break;
                                }


                                دیدگاه

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