دانلود مقاله آموزش زبان برنامه نویسی C

Word 533 KB 18313 59
مشخص نشده مشخص نشده کامپیوتر - IT
قیمت قدیم:۲۴,۰۰۰ تومان
قیمت: ۱۹,۸۰۰ تومان
دانلود فایل
  • بخشی از محتوا
  • وضعیت فهرست و منابع
  • تعیین انتهای خط:
    انتهای خط در فایل های متنی توسط کلید RETURN مشخص میشود ولی در فایل های باینری انتهای خط نداریم.

    اطلاعات بصورت رکورد کنار هم قرار میگرند تا فایل تمام شود.
    ج: تعیین انتهای فایل: در فایل های متنی توسط دو حر ف TA (در مبنای 16 (دکمه های CTRL+Z) انتهای فایل مشخص میشود.

    در فایل های باینری تعداد رکورد (که توسط سیستم نگهداری میشود) انتهای فایل مشخص میشود.


    باز کردن فایل
    هر فایلی که میخواهیم مورد استفاده قرار دهیم ابتدا باید آن را باز کرد.

    تابع fo pen برای باز کردن فایل میباشد.


    بستن فایل:
    بعد از اینکه برنامه کارش با فایل تمام شد فایل را باید بست.

    تابع fclose() برای بستن فایل میباشد.


    نوشتن و خواندن فایل (یک کاراکتر)
    - تابع pute () برای نوشتن یک کاراکر در فایل میباشد.


    تابع gete() برای خواندن یک کاراکر از فایل میباشد.


    خواندن و نوشتن رشته ها در فایل
    - تابع fgets () برای خواندن رشته از فایل
    - تابع puts() برای نوشتن رشته در فایل
    حذف فایل برای حذف فایل از تابع remove () استفاده میشود.


    - توابع فوق در فایل سرآیند stdio.h قرار دارند.


    سازمان فایل: نحوه ذخیره شدن اطلاعات در فایل بدو صورت کلی زیر ؟؟

    و بهمین صورت هم قابل دستیابی (بازیابی) هستند.


    1- سازمان فایل ترتیبی (seqwen~Tiac)
    2- سازمان فایل تصادفی (RANDOM)
    - در سازمان ترتیبی: رکوردها به همان ترتیبی که از ورودی خوانده میشود در فایل قرار میگرند و هنگام بازیابی، به همان ترتیبی که در فایل ذخیره شده اند مورد بررسی قرار میگرند.


    - در سازمان فایل تصادفی: هر رکورد از طریق آدرس (محل قرار گرفتن در فایل) مستقیماً مورد دستیابی قرار میگرند بدون اینکه رکوردهای قبل از آن خوانده شوند.


    موارد جزئی تر و مثال به کتاب مراجعه شود.

    (فصل هشتم)
    متغیرهای محلی و عمومی
    - متغیرهائی که در داخل هر تابعی تعریف شوند متغیرهای محلی های تابع نامیده میشوند و فقط هم در همان تابع معتبر و قابل استفاده هستند.


    - متغیرهائیکه در خارج از توابع و در بالای تابع main() تعریف شوند در تمام توابع موجود در برنامه قابل استفاده اند و معتبر هستند را متغیرهای عمومی گویند.


    توجه:
    - تفاوت های متغیرهای محلی و عمومی دراین است که:
    - متغیرهای عمومی دارای مقدار اولیه صفر هستند.


    توجه: اگر در تابعی متغیر همنام با متغیر عمومی تعریف شود.

    این متغیر عمومی در تابع قابل استفاده نیست (معتبر نیست) و همان مقدار محلی قابل استفاده و بهره برداری است.


    مثال: برای متغیرهای عمومی و محلی:
    - برنامه ای بنویسید که 5 عدد صحیح را از ورودی خوانده (در یک تابع) و مجموع مربعات آنها را در تابعی دیگر محاسبه نموده و حاصل نهایتاً در برنامه اصل چاپ گردد.


    دو تا تابع داریم int k,sq,sum.تعریف متغیرهای عمومی در خارج از تابع اصلی main() void input (void).

    Void square (void).

    الگوی توابع در خارج از تابع main Int main(0 { Int jg i=1.

    متغیرهای کلی Printf (in ENTER RIVE NUMBER?)ز Fon(j=o ز j Input ()ز صدا زده می شود (فراخوانی)input پنج بار تابع Printf (In sum of SQARE is=:%d, sum)ز Getch ()ز returnQ ز } انتهای تابع اصلی برگشت Void input (void) شروع تابع ‍{ Scanf ( %d, &k)ز sQuare ()فراخوانی میشود sQuareتابع sum+= sQز انتشار تابع‌‌‌‌ input void squahe (void) { Sq=k kز انتهای تابع: Square پس از کامبایل و اجرا ENTER Five NUMBER 47 842 Sum of SQUARE K- 149 بارگشتی RECURSIVE - بازگشتی یعنی تابعی در حین اجرا خودش را فراخوانی کند.

    توابع میتوانند به طور مستقیم یا غیر مستقیم خودشان را فراخوانی کنند.

    - در روش مستقیم یکی از دستورات تابع، فراخوانی خودش است.

    در روش غیر مستقیم تابعی مثل F1() تابع F2 () را فراخوانی می کند و تابع F2() نیز به نوبه خود تابع f1() را فراخوای مینماید.

    - توجه شود که برای ایجاد بازگشتی- الگوریتمی که توسط تابع پیاده سازی میشود باید خصوصیت بازگشتی داشته باشد.

    - هر فراخوانی تابع سرانجام باید به اتمام برسد و حالت توقف و ختم فراخوانی بیش بیاید، از دستور if بصورت قابل استفاده میشود (فرم کلی) (به حال توقف و خاتمه رسیدی) if مسئله های توقف را حل کن.

    Else تابع را بار دیگر فراخوانی کن مثال: در محاسبه فاکتوریل n داریم اگر اگر یعنی n=o حالت توقف و n>o فراخوانی تابع: به جای 3!

    توجه شود: مکانیسم حل فاکتور ریل یک عدد مسئله بازگشتی را ایجاب می کند.

    بطور کلی: اگر تابعی داشته باشیم که عددی مثل n را به عنوان آرگومال بپذیرد و فاکتوریل آن را برگرداند، این تابع باید خودش را آنقدر فراخوانی کند تا به حالت توقف برسد.

    با رسیدن به حالت توقف به برنامه فراخوانی بر میگردد.

    مثال: برنامه ای بنویسید که عدد n را از ورودی خوانده به کمک تابع بازگشتی، فاکتوریل آن را محاسبه به تابع فراخوان ارسال نماید.

    تست شد/cffacto الگوی تابع ز Unsigned long foct (int) Int main (0 ز{long int (m) ز Clrscr () ز Printf (in ENTER A POSITIVE INTEGEN NUMBGN?) ز Scan f (y.d , &n) فراخوانی تابع ز M= fact (n) ز Print f (in NUMBER =%d , FACTORIA=%ld , n,m) ز Getch () ز Returr } Unsigned long fact (int X) { تابع خودش را فراخوانی کرده است If } پس از ترجمه و اجرا مثلاً برابر عدد 5 خواهیم داشت.

    ENTER APOSMIVE NUMBCOR?5 NUMBER =5 FACTOAIAL=120 روش فراخوانی با ارجاع در این روش توابع میتوانند بیش از یک مقدار به تابع فراخوان برگردانند.در این حالت یعنی فراخوانی تابع با ارجاع به جای مقدار آرگومان تابع اصلی آدرس آنها (محلی که در حافظه قرار دارند) را در پارامتر قرار میدهد.

    و از طریق آدرس این متغیرها میتوانیم محتویات آنها را پردازش کنیم.

    اشاره گر یا آدرس آدرس هر متغیر در حافظه را، اشاره گر میگویند.

    - حافظه کامپیوتر، مجموعه ای از چندین بایت است.

    هر بایت دارای یک شماره ردیف است، شماره ردیف هر بایت از حافظه را آدرس آن محل از حافظه گویند.

    - در ضمن متغیرها نامی برای محل های حافظه هستند و لذا بایت هائی از حافظه را اشغال میکنند، آدرس اولین بایتی از حافظه که به متغیر اختصاص مییابد، آدرس آن متغیر نام دارد.

    متغیرها/اشاره گر اشاره گر یا آدرس در یک متغیری ذخیره میشود و آدرس هم یک عدد است پس از تعریف متغیر، باید نوع آن با نوع آدرس یکی باشد، این متغیرها را متغیرهای اشاره گر میگویند و بصورت کلی زیر تعریف میشوند.

    ز متغیر *نوع یعنی متغیر اشاره گری که بخواهد آدرس متغیرهای برنامه را نگهداری کند باید در کنار متغیر اشاره گر علامت ستاره (*) قرار داد.

    مثلاً P2/P1 اشاره به محل های شکل میکنند که عدد صحیح در آنها است int * pl*p2 F1,f2 به محل هائی اشاره میکنند که مقادیر آنها عدد بزرگ قرار دارد.

    Char*ch Ch به محلی اشاره می کند که در آن محل یک کاراکتر قرار دارد.

    عملگرها.

    اشاره: دو عملگر *,& در انجام عملیات با اشاره گرها مورد استفاده قرار میگرند.

    عملگر & آدرس عملوند (مقدار) خودش را مشخص میکند و عملگر * محتویات جائی را (آدرس را) مشخص میکند که عملوندش به آن اشاره میکند.

    مثال: برنامه اصلی و دو تابع بنویسید که طول و عرض مستطیل را در یک تابع بخواند و برای تابع اصلی بفرستد.

    سپس برنامه اصلی طول و عرض را به تابع دیگر ارسال و در تابع مساحت و محیط مستطیل محاسبه و نتیجه به برنامه اصلی باز گردانده شود و در آنجا چاپ نماید.

    ص 151 توجه: چون در تابع ها، دو مقدار به برنامه اصلی ارسال میشود پس آنها را از طریق فراخوانی با ارجاع باید ارسال کرد.

    تست شد Int main ( ) { ز Printf (length=%d, width=%d , len,wid) مساحت در محیط دارسال آن به برنامه اصلی: Printf (in area=%d ,perlmer=%d,area,per): { Void input (int*p1,int*p2) { ز Print f(ENTER LENGTH, WIDTH?) Scan f(%d%s.p1/p2)ز Void most (int x.

    int g.

    int *a,int *p) تابع most برای محاسبه طول و عرض از برنامه اصلی به تابع most ارسال مساحت و محیط از طریق پارامترهای ارجاع به برنامه اصلی ارسال میشود.

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

    ولی در مثال فوق با اینکه دو مقدار به برنامه اصل بصورت ارجاعی بر میگردانند.

    ؟؟

    توابع کتابخانه ای فصل 9 ص 259 توابع کتابخانه ای توابعی هستند که از قبل توسط شرکت های تولید کننده نرم افزار (سیستم عامل –مترجم...) نوشته شده و همراه مترجم قرار داده اند و در صورت نیاز کافی است نام تابع به همراه داده مورد نظر به سیستم داده شود.

    پس از عملیات لازم روی داده جواب را بما بر می گرداند.

    توابع بعضی از توابع که بیشتر مورد استفاده اند بشرح زیر میباشند: الف: توابع ریاضی ص 259 - تابع abs( ) برای محاسبه قدر مطلق اعداد منفی میباشد.

    اگر ارگومال تابع منفی باشد حاصل عدد مثبت خواهد بود.

    اگر صفر و مثبت باشد حاصل صفر و یا مثبت خواهد بود.

    - atan( ) acos ( ) asin ( ) که آرک سینوس آرک سینوس و آرک تانژانت int abs (int num) اعداد 1و1- را بصورت رادیال در فاصله را میدهد.

    Double asin (double ang) الگوی تابع شبیه مهم هستند.

    - cos ( ) tan ( ) sin ( ): سینوس و کسینوس یک زاویه که بر حسب رادیال باشد را میدهد.

    Double cos (double ang) - تابع exp ( ) برای محاسبه توالی از C (پایه لگارتیم طبیعی) میدهد.

    تابع f looh ( ): عدد را بطرف پائین گرد میکند.

    ؟؟؟

    printf (%f , f loor (10-9)ز تابع pow( ) این تابع توانهای عدد در یک مبنا (base) را محاسبه می کند.

    الگوی آن بصورت: Double pow (double base, double exp) یعنی base exp را محاسبه می کند.

    اگر مبنا صفر و یا توان منفی یا صفر باشد تابع عمل نخواهد کرد.

    و همچنین مبنا منفی و یا توان صحیح نباشد نتیجه ای نخواهد داد.

    مثال: برنامه ای بنویسید که توانهای 1 تا 5 عدد 5 را محاسبه و در خروجی چاپ نماید.

    تست شد.

    do{ برای قسمت صحیح میدان مشخصی نکرده و برای اعشاری 2 میدان در نظر گرفته است } مثال برنامه ای بنویسید که 54 را محاسبه و چاپ کند (با استفاده از تابع pow تغییرات زیر را در برنامه فوق میدهیم.

    Void main ( ) { ز Doible x=5.0 g=40 ز Prontf (%2f.pow (x.y) Getch ( ), } جواب 625.06 Log 10 ( ) , Log ( ) Log ( ) لگاریتم طبیعی عدد مثبت را در پایه Log 10 ( ) , e=2/72 لگارتیم اعداد مثبت را در پایه 10 محاسبه می کند.

    Double تابع modf ( )/ الگوی آن بصورت یک عدد اعشاری را گرفته به دو قسمت صحیح و اعشاری تجزیه بما میدهد.

    Double modf (doble num ,int *i) عدد اعشاری num ورودی و تابع قسمت اعشاری را برگردانده و قسمت صحیح آن را در I قرار میدهد.

    مثال ص 268 مثال 14-9 تابع sqnt ( ): جذر یک عدد مثبت را میدهد.

    الگوی آن double sqrt (double nom) جواب c/o خواهد بود.

    ب: توابع کاراکتری ص 271 برای ورودی/خروجی کاراکترها –مقایسه آنها با یکدیگر تبدیل آنها از حروف کوچک به بزرگ و برعکس و ...

    استفاده میشود و الگوی این توابع در فایل سرآیند ctgpe.h قرار دارد.

    چند نمونه آن بصورتهای زیر میباشند.

    تابع isalpha ( ): کاراکتری را به عنوان آرگومال پذیرفته و تشخیص میدهد که این کاراکتر یکی از حروفهای a-z و یا A-Z هست یا خیر.

    اگر: عدد صفر و در غیر اینصورت عدد دیگری را بر میگرداند.

    تابع های isvppen ( ) , islowen ( ): تابع اول کاراکتر دریافتی را بررسی میکند که آیا از حروف کوچک است a-z تابع دوم کاراکتر دریافتی را بررسی می کند که آیا از حروف بزرگ است A-Z از حاصل دو تابع درست باشد یک عدد برمیگرداند و اگر درست نباشد صفر بر میگرداند.

    int تابع های touppen ( ) , to lowen ( ) تابع اول حرف بزرگ را به کوچک و تابع دوم حرف کوچک را به بزرگ تبدیل می کند ورودی توابع رشته ای ص 280: این توابع معمولاً برای مقایسه رشته ها پیدا کردن کاراکتر و یا رشته ای و در فایل string.h در رشته دیگر بکار میروند.

    چند نمونه بطور خلاصه در زیر نام برده شده است.

    - تابع memcmp ( ) کاراکتری را در یک آرایه جستجو می کند و آدرس اولین وقوع را میدهد.

    - تابع memcmp ( ) قسمتی از یک آرایه را با قسمتی از آرایه دیگر مقایسه میکند.

    - تابع memcpy ( ) قسمتی از یک آرایه را در آرایه دیگر کپی می کند.

    - تابع strlwr ( ) رشته ای را به عنوان آرگومال پذیرفته و کلیه حروفات بزرگ آن را به کوچک تبدیل می کند.

    - تابع strrcof ( ) قسمتی از یک رشته را به انتهای رشته دیگر الحاق میکند.

    - تابع strncmp ( ) تعداد مشخصی از کاراکترهای دو رشته را با هم مقایسه میکند.

    تابع strrev ( ) کاراکترهای یک رشته را معکوس می کند: مثال: برنامه ای بنویسید که رشته DADGAR را بصورت وارونه چاپ نماید.

    تست شد/ CERVE Void main ( ) { = Cham s Clhscr ( ) ز Printf (s)ز Getch ( ) ز } آرایه ها و رشته ها فصل 5 ص 107 مقدمه: تا کنون داده ها را در متغیرها و ثوابت ذخیره و در موقع لزوم برابر پردازش بازیابی کردیم.

    اگر تعداد داده ها زیاد باشد استفاده از متغیر که تا کنون استفاده میکردیم امکان پذیر نیست.

    فرض کنید که میخواهیم معدل 100 دانشجو را از ورودی گرفته بزرگترین معدل را پیدا و سپس اختلاف هر معدل با بزرگترین معدل را محاسبه کنیم.

    در این حال باید معدل 100دانشجو را در حافظه نگهداری کردند و تا 100 تا معدل در حافظه نداشته باشیم بزرگترین معدل پیدا نمیشود تا تفاضل هر یک را با آن پیدا کنیم.

    برای اینکار متیوانیم 100 متغیر از نوع اعشاری (float) را تعریف کرد.

    که هر متغیر یک معدل را نگهداری کند ولی این روش مناسب نیست.

    زیرا اگر 1000 معدل داشته باشیم باید 1000 تا متغیر تعریف کنیم؟

    جواب مسلماً منفی است.

    پس چکار باید کرد؟

    در چنین مواردی از آرایه (ARRA) استفاده می کنیم.

    تعریف آرایه: مجموعه ای از عناصر همنوع و هم اندازه که تحت یک نام میباشند را گویند.

    - برای دسترسی به عناصر آرایه از متغیری به نام اندیس استفاده میشود و به آرایه، متغیر اندیس دار هم می گویند.

    اگر یک اندیس برای دستیابی در آرایه لازم باشد.

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

    گویند.

    آرایه های یک بعدی (لیست LIST) آرایه یک بعدی که نام دیگر آن لیست است با یک اندیس میتوان به عناصر آرایه دست یافت و فرم کلی تعریف آرایه یک بعدی صورت نام آرایه نوع آرایه طول آرایه با یک عدد صحیح مثبت مشخص میشود.

    مثال: آرایه مقابل یک بعدی با نام x از نوع صحیح با 5 عضو: Int x توجه شود که: در زبان C اندیس آرایه از صفر شروع میشود و عناصر آرایه در محلهای متوالی حافظه ذخیره میشوند.

    مقادیر 7 , 5 را بترتیب در محل اولین و اولین عنصر آرایه قرار میدهد.

    مثال: جستجو در آرایه: (search) - برنامه ای بنویسید که معدل 5 دانشجو را از ورودی خوانده و در آرایه قرار داده و بیشترین معدل و محل آن در آرایه را پیدا و چاپ نماید.

    الگوریتم حل مسئله: فرض میکنیم معدل خانه اول بزرگترین باشد آن را در متغیری به نام made قرار میدهیم.

    سپس در حلقه تکراری دومین و سومین...

    آخرین معدل را با متغیر max مقایسه می کنیم در صورت بزرگتر بودن آن را در max و در صورت کوچکتر بودن عملی انجام نمیدهیم.

    این عمل را تا آخرین عدد انجام می دهیم.

    در انتها در متغیر made بیشترین معدل و هر بار پس از تست بزرگتر بودن معدل محل آن را P قرار میدهیم.

    محل معدل همان اندیس آرایه میباشد.

    Int main ( ) { ز Const int n=5 آرایه انواع اعشاری Flout are , made= o ز Int i,pز For (i Printf (ENTER AN AVERAGE?)ز } Printf (in MAX=%5.2f.position=%d,max , p+1)ز Getch ( ) ز Return } تمرین برای منزل: 1- برنامه ای بنویسید که 10 عدد صحیح را از ورودی خوانده – اعداد مثبت و تعداد آنها و سپس اعداد منفی و تعداد آنها را مشخص دار خروجی چاپ نماید.

    ص 109 2- برنامه ای بنویسید که تعداد 10 عدد را در آرایه ای خوانده و سپس آنها را بطور معکوس در آرایه دیگر قرار داده و هر دو آرایه را در خروجی چاپ نماید.

    ص 110 خواندن داده در آرایه: با استفاده از طبقه تکرار for و تابع scamf ( ) بصورت زیر داده خوانده دار آرایه قرار داده میشود : (آرایه n عنصری است) x نام آرایه است.

    نوشتن از آرایه در خروجی با استفاده از حلقه تکرار fon وتابع printf ( ) بصورت زیر آرایه در خروجی نوشته میشود.

    آرایه n عنصری و نام آن x است.

    چاپ آرایه در خروجی آرایه به عنوان آرگومال تابع - بعضی مواقع لازم است که محتوای یک آرایه را به تابعی ارسال و تابعی پردازشی روی عناصر آرایه انجام دهد.

    لذا لازم است تمامی عناصر یک آرایه به تابع ارسال شود.

    - اگر آرایه به عنوان آرگومال تابع باشد، پارامتر معادل آن در تابع میتواند به سه صورت زیر تعریف شود.

    1- آرایه ای با طول مشخص 2- آرایه ای با طول نامشخص که در این صورت طول آرایه به عنوان آرگومال دیگری منتقل شود.

    3- از طریق اشاره گر (pointon) فرم کلی ارسال آرایه های یک بعدی به توابع در حالت با طول مشخصی و طول نامشخصی.

    Int main ( ) { Int ….

    Func1 (x)ز ....

    Func2 (x,10)ز funce Return } Void func1 (int x) پارامتر تابع آرایه ای با void func2 (int x { ….

    { مثال موارد فوق در جستجو مرتب سازی آرایه ها خواهد آمد.

    مرتب سازی آرایه ها sorttinc اعمال مرتب سازی آرایه وجستجو درآرایه عمومی ترین اعمالی هستند که در برنامه نویسی انجام میشوند.

    مثلاً فرض کنید دفترچه تلفنی دارید که حاوی تلفن 500 نفر است و میخواهید شماره تلفن یک نفر را در دفترچه تلفن پیدا کنید.

    اگر دفترچه تلفن بر اساس نام خانوادگی مرتب نباشد پیدا کردن شماره یک نفر زمانگیر خواهد بود ولی اگر دفترچه بر اساس نام خانوادگی مرتب باشد (مرتب بر حسب حروف)پیدا کردن شماره مشخصی راحت و سریعتر انجام میپذیرد.

    - عمل مرتب سازی درصد زیادی از کار کامپیوتر را تشکیل میدهد.

    - روشهای متعددی برای مرتب سازی وجود دارد که اینجا فقط یک نوع آن بحث خواهد شد.

    البته مرتب سازی ممکن است بصورت صعودی یا نزولی باشد.

    مرتب سازی صعودی از کوچک به بزرگ مرتب سازی نزولی از بزرگ به کوچک مرتب سازی حبابی: در این روش باید چندین مرتبه در طول آرایه حرکت کرد بزرگتر باشد جای آنها عوض میشود (در مرتب سازی صعودی) و همین طور ؟؟

    60 تا به انتهای آرایه برسیم در این بزرگترین عدد به انتهای آرایه خواهد رسید.

    در مرحله بعد این عنصر (بزرگترین عدد) در مقایسه شرکت نمی کند و لذا طول آرایه یک واحد کمتر میشود (n-1).

    در هر مرحله که عمل مقایسه مثل قسمت اول انجام شود عدد بزرگتر بعدی به انتهای آرایه خواهد رسید (به محل n-1) و طول آرایه باز یک واحد کمتر میشود (n-2) و همین طور ادامه دهیم در مرحله آخر یک مقایسه لازم خواهد بود و کوچکترین عدد در ابتدای آرایه قرار خواهد گرفت.

    و آرایه صورت شده است.

    توجه: اگر طول آرایه را n در نظر بگیریم تعداد مقایسه ها در مرحله اول n-1 تا خواهد بود.

    یعنی مرحله بعد 1,2 …,n-3,n-2 تا خواهد بود.

    یعنی اگر تعداد عنصر آرایه 100 تا باشد آرایه حداکثر در 99 مرحله مرتب خواهد شد.

    مثال: مرتب سازی: برنامه ای بنویسید که 7 عدد را از ورودی خوانده و آنها را بصورت صعودی مرتب و سپس در خروجی چاپ نماید (توجه: با استفاده از یک تابع داده در آرایه خوانده و با استفاده از تابع دیگر داده ها مرتب شوند و با استفاده از تابع سوم داده های مرتب شده در خروجی چاپ شوند) Int main ( ) { Const int K=7ز ???

    Clnscn ( ) ز Ginput (x,k)ز Bubble(x,k)ز Printf(the SONTED DATA ARE: /n)ز Goutput (x,k)ز Geth ( )ز retorn } { Int iز For (i= Printf (ENTER NUMBER %d?) i+1)ز Scanf (%d , &x)ز } Void bubble (int x, tint k) { Int i,j,tempز Fon (i=len -1 زi>oز i…) Fon (J= ???

    } } Void goutput (int x { Int I, Fon(i= Printf )%3d , x روشها دیگر مرتب سازی در فصل 11 ص 351 به بعد آمده است.

    جستجو در آرایه (SEARDTI) یکی دیگر از اعمالی که از کامپیوتر زیاد مورد استفاده قرار میگیرد عمل جستجو است مثل جستجوی نام دانشجو در لیست دانشجویان دانشگاه یا جستجو نام کارمندی در لیست کارمندای یک مؤسسه و ...

    انواع جستجو: شرح هر یک از موارد فوق: الف: جستجوی ترتیبی (LINEAR SEARCH): در این روش عنصر مورد جستجو با هر یک از عناصر آرایه مقایسه میشود در صورت برابر بودن جستجو خاتمه می پذیرد وگرنه عمل مقایسه با عنصر بعدی انجام میشود این عمل تا یافتن عنصر مورد نظر و یا جستجوی کل آرایه ادامه میابد.

    اگر عنصر پیدا شد میگوئیم جستجو موفق بوده است.

    مثال: تابعی بنویسید که عدد num را در یک آرایه n عنصری با نام آرایه a پیدا کند (نام تابع iseahch باشد.) ,int n,int nom) Int iseahch (int a { زInt i اگر باشد I که محل عددار آرایه است را برمیگرداند.ز return I اگر جستجو موفق نبود عدد -1 را به برنامه اصلی برمیگرداند.

    ز Return-1 ‌} ب: جستجوی دودوئی (BINARL) SEARCH) جستجوی دودوئی در آرایه مرتب شده (SONT شده) انجام میشود.

    در این روش عنصر مورد نظر با عنصر وسط آرایه مقایسه میشود.

    اگر با این عنصر برابر بود جستجو خاتمه می یابد.

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

    عنصر مورد نظر را با عنصر وسط ؟؟؟

    خاتمه میباید و در غیر اینصورت عملیات مثل روال قبل میابد.

    مثال: تابعی بنویسید که در یک آرایه سورت شده بطول K عدد num را بصورت جستجوی باینری پیدا نماید.

    Int bsearch (int a { { اگر عدد مورد نظر با یکی از عناصر وسط آرایه قسمت ز else return midشده برابر بود عمل آن را برمیگرداند (جستجو موفق) ‍{ ز Return-1 اگر جستجو موفق نباشد عدد 1- را برمیگرداند.

    تمرین برای منزل: برنامه اصلی و توابعی بنویسید که اعمال زیر را انجام دهد.

    1- تابعی با نام ginput برای خواندن داده در آرایه 2- تابعی با نام bsort برای مرتب کردن آرایه (صعودی) 3- تابعی با نام bsearch برای پیدا کردن عددی به نام num که در تابع اصلی خوانده میشود.

    4- تابعی با نام goutput برای نوشتن آرایه در خروجی توجه: تعداد عناصر آرایه n=10 نام آرایه =orr در صورت پیدا شدن عدد درآیه پیغام find و محل عدد در آرایه؟؟؟

    آرایه های چند بعدی: آرایه هائی که قبلاً مورد بحث و بررسی قرار گرفت یک بعدی بوده یعنی دارای یک اندیس بودند.

    در زبان C آرایه های دو بعدی، سه بعدی و ...

    n بعدی هم قابل استفاده بوده ولی بیشتر برنامه نویسان از آرایه دوبعدی استفاده میکنند.

    ارایه دوبعدی مثل جدول ؟؟؟

    میباشد که برای دستیابی به یک عنصر از دو اندیس استفاده میشود، اندیس اول را اندیس سطر و اندیس دوم را اندیس ستون گویند.

    فرم کلی تعریف آرایه دوبعدی ز نام آرایه نوع آرایه تعداد سرها row و تعداد ستون ها col آرایه را مشخص می کند.

    هر کدام از این دواندیس از صفر شروع میشوند.

    به عنوان مثال آرایه دوبعدی با نام mat بصورت زیر میتوان تعریف و تصور کرد.

    هر خانه با دو اندیس مشخص میشود مثلاً خانه A بصورت مشخص میشود توجه شود که در زبان C آرایه ها بصورت سطری در حافظه ذخیره میشوند یعنی: ابتدا عناصر سطر 1 و سپس عناصر سطر 2 و عناصر سطر 3 و ...

    ذخیره میشوند یعنی بصورت شکل زیر در حافظه ذخیره میشوند برای خواندن داده- پردازش و نوشتن در آرایه دوبعدی از دو اندیس یعنی از دو حلقه for باید استفاده کنیم.

    مثال برای آرایه دوبعدی: برنامه ای بنویسید که یک جدول ضرب را تعریف و عناصر آن تولید در آرایه دوبعدی قرار داده و سپس عناصر آن را بصورت (دوبعدی) در خروجی چاپ نماید.

    (هر سطر جدول در یک سطر نوشته شود).

    Int main( ) { تعریف آرایه دوبعدی و اندیس های آن int tab Clrscr ( ) ز Getch ( )ز retorh ‌} برنامه ای بنویسید که یک ماتریس 4ry را تعریف و داده در آن خوانده شود سپس قطر اصلی و فرعی آن را صفر و حاصل را چاپ نماید (دوبعدی).

    Int main ( ) { Clrscn ( ) ز Int MAT Int i,jز //- - - - - - - - - - - - - - - - - if(i==j) } // - - - - - - - - - - - - - - - } آرایه های دوبعدی به عنوان آرگومان تابع: برای ارسال آرایه دوبعدی از تابعی (برنامه اصلی) به تابع دیگر، باید نام آرایه را به عنوان آرگومان تابع ذکر کرد و در تابع بعدهای آرایه به عنوان پارامتر ذکر کرد.

    فرم کلی بصورت: الگوی تابع F1 Int main ( ) { Int F1(mat)ز retorn } Void f1 توجه: فرم دیگری برای ارسال تابعی به تابع دیگر وجود دارد که در اینجا ذکر نمیشود.

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

    اگر آرایه در داخل تابع main تعریف شوند، مقدار اولیه عناصر آن تعریف نشده است.

    در هنگام تعریف تابع میتوان به عناصر آن مقدار اولیه داد.

    فرم کلی بصورت ‌ ز = نام آرایه نوع آرایه مثلاً در آرایه یک بعدی 4 عنصری مقادی 1و 3و 5و9 بصورت زیر به عناصر آرایه نسبت داده میشود.

    در آرایه دوبعدی دو روش وجود دارد: روش اول مثل آرایه یک بعدی میباشد.

    روش دوم: مقادیر هر سطر را در یک جفت آکولاد قرار میدهیم.

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

    تعداد عناصر آرایه 3,P تا میباشد مثال خوب: برنامه ای بنویسید: 1- دو ماتریس mat 1 (بصورت ) و mat 2 (بصورت ) را تعریف نماید.

    2- داده در هر یک از آرایه ها جداگانه خوانده شود.

    3- حاصلضرب دو ماتریس را محاسبه و در ماتریس mat 3 که خواهد بود قرار دهد.

    4- حاصلضرب دو ماتریس (mat3) را در خروجی بصورت دو بعدی توجه شود که در این مسئله از تابع برای خواندن ضرب – نوشتن استفاده نشده است فقط تابع اصلی main ( ) میباشد.

    Int main { Int mat1 ماتریس نتایج را مقادیر اولیه o داده شده است.

    Clrsch ( )ز // READ MATR } //READ MATRIX 2.

    } //MULTIPLKY MAT1 BY MAT 2 //PRINT OUT PUT MARIX 3.

    Printf (“\n THE PRODUCT OF MAT1 & MA72 ”) S: “); For (i=0 ; i For (j+0 ‘ j Print f (“%5d” , mat3[i] [j]) ; Print f (“\n”) ; } Getch () ; Return0 ; } رشته‌ها (string) رشته ها آرایه‌ای از کاراکترها تعریف میشود.

    رشته‌ها برای ذخیره بازیابی و دستکاری متن‌ها مورد استفاه قرار میگیرند.

    در زبان c انتهای متن ها کاراکتر خاصی به نام تهی (null) استفاده می شود که با "10" مشخص می گردد.

    توجه: اگر رشته s را به طول 10 بصورت char s[10] ; تعریف کنیم فقط 9 کاراکتر میتواند درارایه قرار گیرد و آخرین محل برای "10" خواهد بود اگر رشته “DADGAR” را بخواهیم در آرایه S قرار دهیم بصورت زیر خواهد شد .

    پس برای رشته‌ای بطول 6 حرف باید 7 تا محل در نظر بگیریم (یکی بیشتر) مقدار اولیه دادن به رشته‌ها به سه روش میتوان به آرایه مقدار اولیه داد برابر مثالهای زیر 1- Chan S[] = “ Computer” 2- char St [12] = “algorithm” ; 3- chan str[] = {‘p’ , ‘r’ , ‘o’ , ‘g’ , ‘10’} ; در روش اول رشته “computer” در متغیر رشته‌ای s قرار داد.

    و "10" را به آن اضافه می کند.

    در روش دوم: رشته “algorithm” را در St قرار می دهد و "10" را به آن اضافه می کند.

    در روش سوم: چهار کاراکتر به همراه "10" در str قرار میدهد.

    برابر شکل زیر خواندن رشته ها و نوشتن رشته ها در خروجی قبلاً دیدیم با دستور (تابع) printf() , scanf() برای خواندن و نوشتن داده‌ها استفاده کردیم برای رشته‌ها نیز از همین توابع استفاده می کنیم.

    توجه شود در موقع خواندن رشته توسط scanf() نام رشته را نباید با & همراه کرد: مثال: تعریف رشته 21 عنصری chan st[21] ; خواندن رشته scanf(“%s” , st) ; چاپ رشته printf(“”\n string ls = %s” , st) ; درخواندن رشته علاوه تابع Scanf از تابع safe () هم می‌توان استفاده کرد و تفاوت این دو در این است که در تابع gefs() کلبد ENTER انتهای رشته را مشخص می‌کند و فضای خالی را هم جزء رشته حساب می‌کند.

    ولی Scanf() فضای خالی را آخر رشته در نظر بگیرد.

    مثال : توجه Chan s [50]; در مثال مقابل اگر کلمات «ALI REZA» وارد کنیم Scanf (“%S”,S); تابع gefs()کلمه جدید را می‌خواند.

    چاپ رشته در خروجی با دستور یا تابع PUTS () فرم کلی بصورتهای قابل می‌باشد.

    (رشته) PUTS (متغیر رشته‌ای) PUTS مثال “ALI” را در تغییر name قرار می‌دهد.

    Chan name = “Ali”; عین جمله در خروجی چاپ می‌شود.

    محتوی تغییر name را در جلوی جمله قبلی چاپ می‌کند.

    PUTS (name); Your name is = ALI رشته‌های به عنوان آرگومان تابع چون رشته‌ها به صورت آرایه‌ای از کاراکترها تعریف می‌شوند.

    شیوه ارسال رشته‌ها به توابع همانند آرایه است که قبلاً بیان شد.

    یعنی نام رشته بعنوان آرگومان تابع ذکر می‌شود.

    و پارامتر معادل آن آرایه‌ای با طول معین – یا آرایه‌ای با طول نامعین و یا یک اشاره‌گر باشد.

    مثال : برنامه‌ای بنویسید که یک رشته را خوانده و تمام حروف کوچک رشته را به حروف بزرگ تبدیل و نتیجه چاپ گردد.

    توضیح اینکه: تفاوت که اسکی حروف کوچک و بزرگ 32 است.

    یعنی اگر از کد اسکی حروف کوچک 32 را کم کنیم کد اسکی به حروف بزرگ تبدیل می‌شود یعنی «a» به «A» = یعنی اگر از کد «a» عدد 32 کم شود کد تبدیل به کد حروف «A» خواهد شد.

(تغيير مسير از زبان برنامه‌نويسي C) پرش به: ناوبري, جستجو زبان برنامه‌نويسي C، زباني همه منظوره، ساخت يافته و روندگرا مي باشد که در سال ???? توسط دنيس ريچي در آزمايشگاه بل ساخته شد.[?] تاريخچه براي بررسي تاريخچه زبان C بايد به سال ???? بازگرديم که م

++C ++C يک زبان برنامه نويسي همه منظوره و سطح بالا است. ++C يک زبان چندرگه است که از برنامه نويسي رويه‌اي، تجريد داده‌ها و برنامه نويسي شئ گرا پشتيباني مي‌‌کند. ++C به همراه جد خود C از پرطرفدارترين زبانهاي برنامه نويسي تجاري هستند. زبان برنامه‌

بسياري از زبان‌هاي برنامه‌نويسي امروزي از اين قرارند: C++,C ، Javad , C# , COBOL , Microsoft Visual Basic و غيره. با وجود اين همه زبان، يک مهندس نرم‌افزار چگونه تصميم مي‌گيرد که کداميک از آنها را براي يک پروژه استفاده کند. گاهي اوقات، يک زبان به اين

اسکریپت چیست ؟ اسکریپت زبان های اسکریپتی برای ارائه تحولات و ایجاد پویایی در صفحات وب ایجاد شدند . این زبان ها از روی زبان های برنامه نویسی ساخته شدند و بهمین دلیل دارای تشابه بسیاری با هم هستند . این زبان ها در اصل نمونه کوچک شده زبان های مادر خود هستند . تعدادی از فرمان ها و امکانات زبان های بزرگ در این زبان ها حذف شده اند . مثلا امکان نوشتن فایل یا پاک کردن فایل ها برروی ...

فصل اول : آشنايي با Access تاريخچه Access : در سال 1992 ، Microsoft Access به عنوان يک DBMS عرضه شد و در طي سالهاي متمادي ، در رده خود به صدر رسيد . Access به عنوان بخشي از مجموعه برنامه هاي معروف Microsoft Access روزانه توسط ميليون ها نفر استفاده م

تاريخچه ويژوال بيسيک .NET ويژوال بيسيک .NET توسعه يافته BASIC مي باشد. BASIC توسط پروفسور John Kemeny و Thomas Kurtz از کالج Dartmouth براي نوشتن برنامه هاي ساده ايجاد شد و اين طراحي از اواسط دهه 1960 آغاز گرديد. هدف از BASIC اوليه, آموزش برنامه

تاريخچه ويژوال بيسيک .NET ويژوال بيسيک .NET توسعه يافته BASIC مي باشد. BASIC توسط پروفسور John Kemeny و Thomas Kurtz از کالج Dartmouth براي نوشتن برنامه هاي ساده ايجاد شد و اين طراحي از اواسط دهه 1960 آغاز گرديد. هدف از BASIC اوليه, آموزش برنامه

تاريخچه اي درباره ويژوال بيسيک ويژوال بيسيک توسعه يافته basic مي باشد.basicتوسط پروفسورjohn kemency وthomas kurts ازکالج dartmouth براي نوشتن برنامه هاي ساده ايجادشد واين طراحي ازاواسط دهه1960 آغازگرديد. هدف از بيسيک اوليه آموزش برنامه نويسي بود

با تولد بشر کنجکاوي او درباره ي شناخت پيرامونش نيز متولد شد. او شروع به کشف طبيعت نمود و با الگو پذيري از آن کم کم به فکر ايجاد مدل هايي از طبيعت افتاد. به سرعت پيشرفت کرد تا اين که کامپيوتر و زبان هاي برنامه نويسي را ايجاد کرد. در اين ميان زبان

نسخه اصلي Basic (که شامل symbolic instruction code begginers all purpose به معني «کد حاوي دستورات نمادين همه منظوره مخصوص نوآموزان» در کالج دارتموت در سال 1964 به عنوان زباني آموزشي ابداع گشت.يادگيري و طريقه استفاده از ساير زبانهايي که تا آن زمان وج

ثبت سفارش
تعداد
عنوان محصول