آموزش برنامه سازی پیشرفته c
دسته بندي :
فنی و مهندسی »
کامپیوتر و IT
آموزش برنامه سازی پیشرفته c
مقدمه:
در اوایل دهة 1970 میلادی، «دنیس ریچی» در آزمایشگاه كمپانی بل زبان C را برای برنامهنویسی سیستمها طراحی کرد. این زبان از دو زبان پیشین به نامهای BCPL و B منتج شده است که این دو نیز در همین آزمایشگاه نوشته شدند. زبان C تا سال 1978 منحصر به استفاده در همین آزمایشگاه بود تا اینکه «ریچی» و «کرنیه» نسخة نهایی این زبان را منتشر کردند. به سرعت مفسرهای متعددی از C تهیه شد، لیکن برای جلوگیری از ناسازگاریهای ایجاد شده و نیز حفظ قابلیت حمل زبان، استاندارد ANSI تعاریف متحدالشکلی مطرح کرد. آنچه در این کتاب مطرح میشود بر اساس همین استاندارد است. مفسر خود برنامهای کامپیوتری است که برنامة سطح بالا دادة ورودی آن و برنامة ایجاد شده به زبان ماشین خروجی آن را تشکیل میدهد.
به طور كلی ویژگیهای مهم زبان C به اختصار به شرح زیر است:
زبان C به طور گستردهای در دسترس است. مفسرهای تجارتی آن در بیشتر کامپیوترهای شخصی، مینیکامپیوترها و نیز در کامپیوترهای بزرگ قابل استفادهاند.
C زبانی است همه منظوره، ساختیافته سطح بالا (مانند زبان پاسکال و فورترن) و انعطافپذیر كه برخی از خصوصیات زبانهای سطح پایین را نیز كه معمولاً در اسمبلی یا زبان ماشین موجود است داراست. در عین حال این زبان برای كاربردهای ویژه طراحی نشده و میتوان از آن در همة زمینهها، بخصوص به دلیل نزدیكی آن به زبان ماشین در برنامهنویسی سیستم، استفاده کرد. بنابراین C بین زبانهای سطح بالا و سطح پایین قرار دارد و در نتیجه اجازه میدهد كه برنامهنویس خصوصیات هر دو گروه زبان را به كار برد. از این رو در بسیاری از كاربردهای مهندسی به طور انحصاری زبان C به كار میبرند. (زبانهای سطح بالا، دستورالعملهایی شبیه زبان انسان و پردازش فکری او دارند، همچنین یک دستورالعمل زبان سطح بالا معادل چند دستورالعمل به زبان ماشین است.)
برنامههای نوشته شده به زبان C به طور كلی مستقل از ماشین یا نوع كامپیوتر است و تقریباً تحت كنترل هر سیستم عاملی اجرا میشود.
مفسرهای C معمولاً فشرده و كم حجماند و برنامههای هدف ایجاد شده با آنها در مقایسه با سایر زبانهای برنامهسازی سطح بالا، خیلی كوچك و كارآمدند.
برنامههای C در مقایسه با سایر زبانهای برنامهسازی سطح بالا، به راحتی قابل انتقالاند. دلیل آن این است كه C خیلی از ویژگیهای وابسته به نوع كامپیوتر را در توابع كتابخانهای خود منظور داشته است. بنابراین هر نسخه از C با مجموعهای از توابع كتابخانهای مخصوص به خود همراه است كه براساس ویژگیهای كامپیوتر میزبان مربوط نوشته شده است. این توابع كتابخانهای تا حدودی استاندارد است و معمولاً هر تابع كتابخانهای در نسخههای متعدد C به شکل یكسان در دسترس است.
C روش برنامهسازی ماژولار را پشتیبانی میكند. همچنین از نظر عملگرها نیز زبانی قوی است که عملگرهای گوناگونی برای دستكاری روی دادهها در سطح بیت داراست.
به طور کلی جامعیت، عمومیت، خوانایی، سادگی، کارآیی و پیمانهای بودن که همگی از مشخصات برنامهای ایدهآلاند در زبان C پیادهسازی میشوند.
ویژگیهای فوق موجب شده زبان C یکی از قویترین و محبوبترین زبانهای برنامهسازی در دنیا مطرح شود.
فهرست:
فصل1: کلیات و مفاهیم
هدف کلی........................................................................ 1
هدفهای رفتاری................................................................. 1
مقدمه............................................................................. 1
کاراکترها.......................................................................... 3
شناسهها........................................................................ 4
ساختار برنامههای C.......................................................... 6
دستورالعملهای اجرایی...................................................... 7
خودآزمایی 1................................................................... 10
فصل 2: انواع دادهها
هدف کلی...................................................................... 11
هدفهای رفتاری............................................................... 11
مقدمه........................................................................... 12
اعلان متغیرها................................................................. 13
دادههای صحیح............................................................... 14
مقادیر ثابت صحیح........................................................... 16
دادههای اعشاری............................................................ 18
دادههای کاراکتری............................................................ 19
ثابتهای رشتهای.............................................................. 21
مقداردهی اولیة متغیرها................................................... 23
عملگر cast..................................................................... 23
نوع void........................................................................ 25
پیشپردازنده................................................................... 26
فرمان #include.............................................................. 26
فرمان #define................................................................ 27
خودآزمایی 2................................................................... 29
فصل 3: توابع ورودی و خروجی
هدف کلی...................................................................... 31
هدفهای رفتاری............................................................... 31
مقدمه........................................................................... 31
تابع printf ().................................................................. 32
تابع scanf ().................................................................. 40
تابع getchar ()............................................................... 45
تابع putchar ()............................................................... 46
تابع getche ()................................................................ 50
تابع getch ().................................................................. 50
توابع puts () و gets ()..................................................... 50
خودآزمایی 3................................................................... 52
فصل 4: عبارت، دستور، عملگر
هدف کلی...................................................................... 53
هدفهای رفتاری............................................................... 53
عبارت............................................................................ 54
عبارت محاسباتی............................................................ 54
عبارت قیاسی................................................................. 54
عبارت منطقی................................................................ 55
دستور........................................................................... 56
دستورهای ساده............................................................ 56
دستورهای ساختیافته.................................................... 56
عملگر............................................................................ 57
عملگرهای محاسباتی..................................................... 57
عملگرهای انتساب.......................................................... 61
عملگرهای یکانی............................................................ 63
عملگرهای رابطهای (مقایسهای)....................................... 65
عملگرهای منطقی.......................................................... 68
عملگر شرطی................................................................ 70
عملگر کاما..................................................................... 72
عملگرهای حافظه............................................................ 73
خودآزمایی 4................................................................... 73
فصل 5: دستورهای کلی
هدف کلی...................................................................... 75
هدفهای رفتاری............................................................... 75
مقدمه........................................................................... 75
دستور while.................................................................. 76
دستور do -while............................................................ 79
دستور for...................................................................... 81
عملگر کاما..................................................................... 85
دستور if و if - else ......................................................... 86
دستور switch ............................................................... 89
دستور break.................................................................. 94
دستور continue............................................................. 95
دستور goto.................................................................... 97
تابع exit......................................................................... 98
خودآزمایی 5................................................................... 99
فصل 6: توابع و کلاس حافظه
هدف کلی.................................................................... 101
هدفهای رفتاری............................................................. 101
مقدمه......................................................................... 102
نحوة تعریف تابع............................................................. 103
دستور return............................................................... 104
فراخوانی تابع................................................................ 109
انتقال آرایه به تابع......................................................... 113
توابع بازگشتی.............................................................. 114
پارامترهای خط فرمان..................................................... 117
استفاده از چند تابع........................................................ 120
قلمرو متغیرها............................................................... 121
کلاس حافظه................................................................ 125
حافظة خودکار.......................................................... 126
حافظة خارجی.......................................................... 127
حافظة ایستا............................................................ 129
حافظة ثبات.............................................................. 131
خودآزمایی 6................................................................. 132
فصل 7: آرایهها
هدف کلی.................................................................... 135
هدفهای رفتاری............................................................. 135
مقدمه......................................................................... 135
تعریف آرایهها................................................................ 136
آرایههای یکبعدی.......................................................... 136
مراجعه به عناصر آرایه.................................................... 137
کلاسهای حافظه در آرایه................................................ 138
آرایههای چندبعدی......................................................... 140
انتقال آرایه به تابع......................................................... 142
آرایهها و رشتهها........................................................... 146
روشهای مرتبسازی..................................................... 148
روش مرتبسازی حبابی............................................ 148
روش مرتبسازی انتخابی.......................................... 149
روشهای جستجو.......................................................... 150
جستجو به روش خطی.............................................. 151
جستجو به روش دودویی........................................... 151
توابع کتابخانهای............................................................ 152
خودآزمایی 7................................................................. 154
فصل 8: اشارهگرها
هدف کلی.................................................................... 159
هدفهای رفتاری............................................................. 159
مقدمه......................................................................... 160
نحوة معرفی اشارهگر..................................................... 160
آدرس دادهها................................................................. 162
مقداردهی اولیسه به اشارهگر......................................... 164
اشارهگر تهی................................................................ 165
عملیات روی اشارهگرها.................................................. 166
انتقال مقادیر به تابع....................................................... 168
انتقال اشارهگر به تابع.................................................... 169
انتقال دوطرفة اطلاعات................................................... 172
اشارهگرها و آرایهها........................................................ 174
اشارهگرها و آرایههای چندبعدی....................................... 180
انتقال آرایه به تابع......................................................... 180
آرایههایی از اشارهگرها................................................... 182
اشارهگر به اشارهگر....................................................... 182
ارسال تابعی به تابع دیگر................................................ 184
نتیجهگیری................................................................... 185
خودآزمایی 8................................................................. 185
فصل 9: نوعهای تعریفشده
هدف کلی.................................................................... 187
هدفهای رفتاری............................................................. 187
مقدمه......................................................................... 187
ساختار........................................................................ 188
اختصاص مقادیر اولیه..................................................... 192
آرایهای از ساختارها....................................................... 194
پردازش ساختار............................................................. 196
انتقال ساختار به تابع..................................................... 199
بازگشت اشارهگر به ساختار............................................ 201
نوع داده کاربر................................................................ 205
ساختار دادهها و اشارهگرها............................................. 207
عضو ساختار................................................................. 211
اجتماع......................................................................... 211
شمارشی.................................................................... 216
خودآزمایی 9................................................................. 221
فصل 10: فایلها
هدف کلی.................................................................... 223
هدفهای رفتاری............................................................. 223
مقدمه......................................................................... 224
انواع فایل..................................................................... 225
بازکردن و بستن فایل...................................................... 226
توابع putc و getc.......................................................... 229
توابع putw و getw........................................................ 232
توابع fputs و fgets ....................................................... 233
فایل وسیلة ورودی ـ خروجی........................................... 234
تابع ferror.................................................................... 236
تابع remove................................................................. 238
توابع fscanf و fprintf..................................................... 239
توابع fwrite و fread....................................................... 240
تابع fseek.................................................................... 242
دستگاههای ورودی ـ خروجی استاندارد............................ 243
خودآزمایی 10............................................................... 244