• عملکرد Scanf C: توضیحات. §1 اطلاعات کلی در مورد زبان. مراحل طراحی برنامه مدل‌های چرخه عمر برنامه scanf تابع C - توضیحات

    این آموزش ها برای همه است، چه تازه کار برنامه نویسی داشته باشید و چه تجربه برنامه نویسی گسترده در زبان های دیگر! این مطالب برای کسانی است که می خواهند زبان های C/C++ را از اصول اولیه تا پیچیده ترین ساختارها یاد بگیرند.

    C++ یک زبان برنامه نویسی است، دانش این زبان برنامه نویسی به شما این امکان را می دهد که کامپیوتر خود را در بالاترین سطح کنترل کنید. در حالت ایده‌آل، می‌توانید کاری کنید که رایانه هر کاری که می‌خواهید انجام دهد. سایت ما به شما در تسلط بر زبان برنامه نویسی C++ کمک می کند.

    نصب /IDE

    اولین کاری که باید قبل از شروع یادگیری C++ انجام دهید این است که مطمئن شوید که یک IDE - یک محیط توسعه یکپارچه (برنامه ای که در آن برنامه نویسی خواهید کرد) دارید. اگر IDE ندارید، پس به اینجا بروید. هنگامی که در مورد انتخاب IDE تصمیم گرفتید، آن را نصب کنید و ایجاد پروژه های ساده را تمرین کنید.

    مقدمه ای بر C++

    زبان C++ مجموعه ای از دستورات است که به کامپیوتر می گوید چه کاری انجام دهد. این مجموعه از دستورات معمولا کد منبع یا به سادگی کد نامیده می شود. دستورات یا "توابع" یا "کلمات کلیدی" هستند. کلمات کلیدی (کلمات رزرو شده C/C++) بلوک های اصلی زبان هستند. توابع بلوک‌های ساختمانی پیچیده‌ای هستند زیرا بر حسب توابع ساده‌تر نوشته شده‌اند - این را در اولین برنامه ما که در زیر نشان داده شده است خواهید دید. این ساختار توابع شبیه محتویات یک کتاب است. محتوا می تواند فصل های کتاب را نشان دهد، هر فصل در کتاب می تواند محتوای خاص خود را داشته باشد که از پاراگراف ها تشکیل شده است، هر پاراگراف می تواند زیر پاراگراف های خاص خود را داشته باشد. اگرچه C++ بسیاری از توابع رایج و کلمات رزرو شده را ارائه می دهد که می توانید از آنها استفاده کنید، هنوز نیاز به نوشتن توابع خود وجود دارد.

    از چه قسمتی از برنامه شروع می شود؟ هر برنامه در C++ یک تابع دارد که به آن تابع اصلی یا اصلی می گویند، اجرای برنامه با این تابع شروع می شود. از تابع main، می‌توانید هر تابع دیگری را نیز فراخوانی کنید، چه توابعی که ما نوشته‌ایم یا همانطور که قبلاً ذکر شد، توسط کامپایلر ارائه شده است.

    بنابراین چگونه به این ویژگی های استاندارد دسترسی پیدا می کنید؟ برای دسترسی به توابع استاندارد همراه با کامپایلر، باید فایل هدر را با استفاده از دستورالعمل پیش پردازشگر اضافه کنید - #include . چرا این کار موثر است؟ بیایید به مثالی از یک برنامه کاری نگاه کنیم:

    #عبارتند از << "Моя первая программа на С++\n"; cin.get(); }

    اجازه دهید عناصر برنامه را با جزئیات در نظر بگیریم. #include یک دستورالعمل "پیش پردازنده" است که به کامپایلر می گوید قبل از ایجاد فایل اجرایی، کد را از فایل هدر iostream در برنامه ما قرار دهد. با اتصال یک فایل هدر به یک برنامه، به بسیاری از توابع مختلف دسترسی خواهید داشت که می توانید در برنامه خود از آنها استفاده کنید. برای مثال، عملگر cout به iostream نیاز دارد. خط با استفاده از namespace std. به کامپایلر می گوید که از گروهی از توابع که بخشی از کتابخانه استاندارد std هستند استفاده کند. این خط همچنین به برنامه اجازه می دهد تا از عملگرهایی مانند cout استفاده کند. نقطه ویرگول بخشی از نحو C++ است. به کامپایلر می گوید که این پایان دستور است. در یک لحظه خواهید دید که نقطه ویرگول برای پایان دادن به اکثر دستورات در ++C استفاده می شود.

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

    در C++، شی cout برای نمایش متن (با تلفظ "C out") استفاده می شود. او از نمادها استفاده می کند<< , известные как «оператор сдвига», чтобы указать, что отправляется к выводу на экран. Результатом вызова функции cout << является отображение текста на экране. Последовательность \n фактически рассматривается как единый символ, который обозначает новую строку (мы поговорим об этом позже более подробно). Символ \n перемещает курсор на экране на следующую строку. Опять же, обратите внимание на точку с запятой, её добавляют в конец, после каждого оператора С++.

    دستور بعدی cin.get() است. این فراخوانی تابع دیگری است که داده ها را از جریان داده ورودی می خواند و منتظر می ماند تا کلید ENTER فشار داده شود. این دستور تا زمانی که کلید ENTER را فشار دهید پنجره کنسول بسته نمی شود. این به شما فرصت می دهد تا خروجی برنامه را ببینید.

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

    #عبارتند از با استفاده از namespace std. int main() (cout<<"Моя первая программа на С++\n"; cin.get(); return 1; }

    برای ادغام مطالب، کد برنامه را در IDE خود تایپ کرده و اجرا کنید. وقتی برنامه اجرا شد و خروجی را دیدید، کمی با عبارت cout آزمایش کنید. این به شما کمک می کند تا به زبان عادت کنید.

    حتما در مورد برنامه های خود نظر بدهید!

    نظرات را به کد خود اضافه کنید تا نه تنها برای خود بلکه برای دیگران نیز واضح تر شود. کامپایلر هنگام اجرای کد، نظرات را نادیده می گیرد و به شما این امکان را می دهد که از هر تعداد نظر برای توصیف کد واقعی استفاده کنید. برای ایجاد نظر، از یا // استفاده کنید که به کامپایلر می گوید که بقیه خط یک نظر است، یا /* و سپس */. هنگامی که در حال یادگیری برنامه نویسی هستید، مفید است که بتوانید در مورد بخش هایی از کد نظر دهید تا ببینید خروجی برنامه چگونه تغییر می کند. شما می توانید جزئیات مربوط به تکنیک نظر دادن را بخوانید.

    با همه این نوع متغیرها چه باید کرد؟

    گاهی اوقات داشتن چندین نوع متغیر ممکن است گیج کننده باشد، زمانی که برخی از انواع متغیرها زائد به نظر می رسند. استفاده از نوع متغیر صحیح بسیار مهم است، زیرا برخی از متغیرها به حافظه بیشتری نسبت به بقیه نیاز دارند. علاوه بر این، به دلیل نحوه ذخیره آن ها در حافظه، اعداد ممیز شناور، انواع داده های شناور و دوگانه «نادقیق» هستند و زمانی که نیاز به ذخیره یک عدد صحیح دقیق است، نباید از آنها استفاده شود.

    اعلان متغیرها در C++

    برای تعریف یک متغیر، از نوع نحو استفاده کنید<имя>; . در اینجا چند نمونه از اعلان متغیرها آورده شده است:

    عدد داخلی شخصیت کاراکتر; float num_float;

    اعلام چند متغیر از یک نوع در یک خط مجاز است؛ برای انجام این کار، هر یک از آنها باید با کاما از هم جدا شوند.

    Int x, y, z, d;

    اگر دقت کرده باشید، ممکن است دیده باشید که یک اعلان متغیر همیشه با یک نقطه ویرگول دنبال می شود. می‌توانید درباره کنوانسیون «نام‌گذاری متغیرها» بیشتر بدانید.

    اشتباهات رایج هنگام اعلان متغیرها در C++

    اگر سعی کنید از متغیری استفاده کنید که اعلان نشده است، برنامه شما کامپایل نمی شود و پیغام خطا دریافت می کنید. در C++، تمام کلمات کلیدی زبان، همه توابع و همه متغیرها به حروف بزرگ و کوچک حساس هستند.

    استفاده از متغیرها

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

    #عبارتند از با استفاده از namespace std. int main() (int number; cout<< "Введите число: "; cin >> شماره؛ cin.ignore(); کوت<< "Вы ввели: "<< number <<"\n"; cin.get(); }

    بیایید نگاهی به این برنامه بیندازیم و کد آن را خط به خط بررسی کنیم. کلمه کلیدی int نشان می دهد که عدد یک عدد صحیح است. تابع cin >> مقدار را به عدد می خواند، کاربر باید بعد از عدد وارد شده اینتر را فشار دهد. cin.ignore() تابعی است که یک کاراکتر را می خواند و آن را نادیده می گیرد. ما ورودی خود را در برنامه سازماندهی کرده ایم؛ پس از وارد کردن یک عدد، کلید ENTER را فشار می دهیم، نمادی که به جریان ورودی نیز منتقل می شود. ما به آن نیاز نداریم، پس آن را دور می اندازیم. در نظر داشته باشید که متغیر به عنوان یک نوع عدد صحیح اعلام شده است، اگر کاربر بخواهد عدد اعشاری را وارد کند، کوتاه می شود (یعنی قسمت اعشاری عدد نادیده گرفته می شود). سعی کنید یک عدد اعشاری یا دنباله ای از کاراکترها را وارد کنید، وقتی برنامه مثال را اجرا می کنید، پاسخ به مقدار ورودی بستگی دارد.

    توجه داشته باشید که هنگام چاپ از یک متغیر، از نقل قول استفاده نمی شود. عدم وجود نقل قول به کامپایلر می گوید که یک متغیر وجود دارد و بنابراین برنامه باید مقدار متغیر را بررسی کند تا نام متغیر را با مقدار آن در هنگام اجرا جایگزین کند. چند دستور شیفت در یک خط کاملاً قابل قبول است و خروجی به همان ترتیب انجام می شود. شما باید حرف های رشته ای (رشته های محصور شده در گیومه ها) و متغیرها را جدا کنید و به هر کدام عملگر شیفت خاص خود بدهید.<< . Попытка поставить две переменные вместе с одним оператором сдвига << выдаст сообщение об ошибке . Не забудьте поставить точку с запятой. Если вы забыли про точку с запятой, компилятор выдаст вам сообщение об ошибке при попытке скомпилировать программу.

    تغییر و مقایسه ارزش ها

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

    • * ضرب،
    • - منها کردن،
    • + اضافه کردن،
    • / تقسیم،
    • = تکلیف،
    • == برابری،
    • > بیشتر
    • < меньше.
    • != نابرابر
    • >= بزرگتر یا مساوی با
    • <= меньше или равно

    عملگرهایی که توابع ریاضی را انجام می دهند باید در سمت راست علامت تخصیص استفاده شوند تا نتیجه را به متغیر سمت چپ نسبت دهیم.

    در اینجا چند نمونه آورده شده است:

    A = 4 * 6; // از کامنت خط و نقطه ویرگول استفاده کنید، a برابر 24 a = a + 5 است. // برابر با مجموع مقدار اصلی و پنج a == 5 // پنج را اختصاص نمی دهد، بررسی می کند که آیا برابر با 5 است یا خیر

    شما اغلب از == در ساختارهایی مانند دستورات شرطی و حلقه ها استفاده می کنید.

    آ< 5 // Проверка, a менее пяти? a >5 // بررسی کنید، آیا بیشتر از پنج است؟ a == 5 // بررسی، آیا برابر با پنج است؟ a != 5 // بررسی کنید، آیا برابر با پنج نیست؟ a >= 5 // بررسی کنید که a بزرگتر یا مساوی پنج است؟ آ<= 5 // Проверка, a меньше или равно пяти?

    این مثال‌ها استفاده از علائم مقایسه را خیلی واضح نشان نمی‌دهند، اما وقتی شروع به مطالعه عملگرهای انتخاب کنیم، متوجه خواهید شد که چرا این کار ضروری است.

    کتابخانه استاندارد C/C++ شامل تعدادی عملکرد برای خواندن و نوشتن روی کنسول (صفحه کلید و مانیتور) است. این توابع داده ها را به عنوان یک جریان ساده از کاراکترها می خوانند و می نویسند.

    مفهوم استریم که در برنامه نویسی استفاده می شود، ارتباط نزدیکی با درک عادی و روزمره این کلمه دارد. جریان ورودی را می توان با لوله ای مقایسه کرد که از طریق آن آب (اطلاعات) وارد استخر (حافظه کامپیوتر) می شود و جریان خروجی را می توان با لوله ای مقایسه کرد که آب از طریق آن از استخر خارج می شود. یکی از ویژگی های مهم این لوله این است که داده ها می توانند در یک زمان فقط در یک جهت حرکت کنند. حتی اگر از همان لوله برای ورودی و خروجی استفاده شود، این نمی تواند همزمان اتفاق بیفتد: برای تغییر جهت جریان، باید متوقف شود، برخی اقدامات باید انجام شود و تنها در این صورت می توان جریان را در جهت مخالف هدایت کرد. یکی دیگر از ویژگی های جریان این است که تقریباً هرگز خشک نمی شود. گاهی اوقات خشک می شود، اما اگر سیستم به طور معمول کار کند، این مدت نمی تواند طولانی باشد.

    تابع خروجی استاندارد printf()

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

    تابع printf() یک نمونه اولیه در stdio.h دارد
    int printf(char *control string, ...);

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

    خط کنترل شامل دو نوع اطلاعات است: کاراکترهایی که مستقیماً روی صفحه چاپ می شوند و مشخص کننده های قالب که نحوه چاپ آرگومان ها را مشخص می کنند.

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

    مشخص کننده های قالب:

    ٪با سمبل
    %d عدد صحیح اعشاری
    ٪من عدد صحیح اعشاری
    %e عدد اعشاری به شکل x.xx e+xx
    %E عدد اعشاری به شکل x.xx E+xx
    % f
    %F عدد ممیز شناور اعشاری xx.xxxx
    % g %f یا %e، هر کدام کوتاهتر باشد
    %G %F یا %E، هر کدام کوتاهتر باشد
    %o عدد اکتال
    %s رشته کاراکتر
    %u عدد اعشاری بدون علامت
    ٪ایکس عدد هگزادسیمال
    ٪ایکس عدد هگزادسیمال
    %% سمبل ٪
    ٪پ اشاره گر
    %n اشاره گر

    علاوه بر این، اصلاح کننده های l و h را می توان برای دستورات فرمت اعمال کرد.

    %ld چاپ طولانی int
    %hu تمبر کوتاه بدون امضا
    %Lf مهر بلند دوتایی

    در مشخص کننده فرمت، پس از نماد % می توان دقت (تعداد ارقام بعد از نقطه اعشار) را مشخص کرد. دقت به صورت زیر تنظیم می شود: %n<код формата>. جایی که n تعداد ارقام بعد از نقطه اعشار و<код формата>- یکی از کدهای داده شده در بالا.

    برای مثال، اگر یک متغیر x=10.3563 از نوع float داشته باشیم و بخواهیم مقدار آن را با دقت 3 رقم اعشار نمایش دهیم، باید بنویسیم:

    printf("متغیر x = %.3f",x);

    نتیجه:
    متغیر x = 10.356

    همچنین می توانید حداقل عرض فیلد اختصاص داده شده برای چاپ را مشخص کنید. اگر خط یا شماره بزرگتر از عرض فیلد مشخص شده باشد، خط یا شماره به طور کامل چاپ می شود.

    برای مثال، اگر بنویسید:

    printf("%5d",20);

    سپس نتیجه به شرح زیر خواهد بود:
    20

    توجه داشته باشید که شماره 20 از همان ابتدای خط چاپ نشده است. اگر می خواهید فضاهای استفاده نشده فیلد با صفر پر شود، باید علامت 0 را جلوی عرض فیلد قرار دهید.

    مثلا:

    printf("%05d",20);

    نتیجه:
    00020

    علاوه بر مشخص‌کننده‌های قالب داده، خط کنترل ممکن است دارای کاراکترهای کنترلی باشد:

    \b BS، پایین
    \f صفحه جدید، تغییر صفحه
    \n خط جدید، خوراک خط
    \r برگشت محموله
    \ t جدول بندی افقی
    \ v زبانه عمودی
    \" دو نقل قول
    \" آپستروف
    \\ بک اسلش
    \0 کاراکتر پوچ، بایت پوچ
    علامت
    \ N ثابت هشتی
    \xN ثابت هگزادسیمال
    \? علامت سوال

    اغلب از کاراکتر \n استفاده می کنید. با این کاراکتر کنترلی می توانید به یک خط جدید بروید. به برنامه های نمونه نگاه کنید و همه چیز را متوجه خواهید شد.

    نمونه هایی از برنامه ها

    /* مثال 1 */
    #عبارتند از

    خالی اصلی (باطل)
    {
    int a,b,c; // اعلام متغیرهای a,b,c
    a=5;
    b=6;
    c=9;
    printf("a=%d، b=%d، c=%d",a,b,c);
    }

    نتیجه برنامه:
    a=5، b=6، c=9

    /* مثال 2 */
    #عبارتند از

    خالی اصلی (باطل)
    {
    شناور x,y,z;

    X=10.5;
    y=130.67;
    z=54;

    Printf("مختصات شیء: x:%.2f، y:%.2f، z:%.2f، x، y، z);
    }

    نتیجه برنامه:
    مختصات شیء: x:10.50، y:130.67، z:54.00

    /* مثال 3 */
    #عبارتند از

    void main()
    {
    int x;

    X=5;
    printf("x=%d"، x*2);
    }

    نتیجه برنامه:
    x=10

    /* مثال 4 */
    #عبارتند از

    خالی اصلی (باطل)
    {
    printf("\"متن در نقل قول\"");
    printf("\nمیزان اکسیژن: 100%٪");
    }

    نتیجه برنامه:
    "متن در نقل قول"
    میزان اکسیژن: 100%

    /* مثال 5 */
    #عبارتند از

    خالی اصلی (باطل)
    {
    int a;

    A=11; // 11 در اعشار برابر با b در هگزادسیمال است
    printf("a-dec=%d, a-hex=%X",a,a);
    }

    نتیجه برنامه:
    a-dec=11، a-hex=b

    /* مثال 6 */
    #عبارتند از

    خالی اصلی (باطل)
    {
    char ch1,ch2,ch3;

    Ch1="A";
    ch2="B";
    ch3="C";

    Printf("%c%c%c",ch1,ch2,ch3);
    }

    نتیجه برنامه:
    ABC

    /* مثال 7 */
    #عبارتند از

    خالی اصلی (باطل)
    {
    char *str="رشته من.";

    Printf("این %s است"،str);
    }

    نتیجه برنامه:
    این خط من است.

    /* مثال 8 */
    #عبارتند از

    خالی اصلی (باطل)
    {
    printf("سلام!\n"); // پس از چاپ، انتقال به یک خط جدید وجود دارد - \n
    printf ("اسم من پاول است."); // این در یک خط جدید چاپ خواهد شد
    }

    نتیجه برنامه:
    سلام!
    اسم من پاول است.

    تابع ورودی استاندارد scanf()

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

    تابع scanf() دارای نمونه اولیه زیر در stdio.h است:
    int scanf(char *control string);

    تابع تعداد متغیرهایی را که یک مقدار به آنها اختصاص داده شده است برمی گرداند.

    رشته کنترل شامل سه نوع کاراکتر است: مشخص کننده های قالب، فاصله ها و سایر کاراکترها. مشخص کننده های قالب با کاراکتر % شروع می شوند.

    مشخص کننده های قالب:

    هنگام وارد کردن یک رشته با استفاده از تابع scanf() (مشخص کننده فرمت %s)، رشته قبل از اولین فاصله وارد می شود!! آن ها اگر رشته "Hello world!" با استفاده از تابع scanf()


    scanf("%s",str);

    سپس پس از وارد کردن رشته به دست آمده، که در آرایه str ذخیره می شود، از یک کلمه "Hello" تشکیل می شود. تابع قبل از فضای اول وارد یک رشته می شود! اگر می خواهید رشته هایی را با فاصله وارد کنید، از تابع استفاده کنید

    char *gets(char *buf);

    با تابع gets() می توانید رشته های کامل را وارد کنید. تابع gets() کاراکترها را از صفحه کلید می خواند تا زمانی که کاراکتر خط جدید (\n) ظاهر شود. وقتی اینتر را فشار می دهید، خود کاراکتر خط جدید ظاهر می شود. تابع یک اشاره گر را به buf برمی گرداند. buf - بافر (حافظه) برای رشته ورودی.

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

    #عبارتند از

    خالی اصلی (باطل)
    {
    بافر char; // آرایه (بافر) برای رشته ورودی

    دریافت (بافر)؛ // یک خط را وارد کنید و اینتر را فشار دهید
    printf("%s", buffer); // خروجی رشته وارد شده به صفحه نمایش
    }

    یک نکته مهم دیگر! برای وارد کردن داده با استفاده از تابع scanf() باید آدرس های متغیر را به عنوان پارامتر ارسال کند نه خود متغیرها. برای به دست آوردن آدرس یک متغیر، باید قبل از نام متغیر با علامت & (امپرسند) قرار دهید. علامت & به معنای گرفتن آدرس است.

    آدرس یعنی چی؟ سعی میکنم توضیح بدم در برنامه یک متغیر داریم. یک متغیر مقدار خود را در حافظه کامپیوتر ذخیره می کند. بنابراین این آدرسی است که از آن استفاده می کنیم و آدرسی در حافظه کامپیوتر است که مقدار متغیر در آن ذخیره می شود.

    بیایید به یک برنامه مثال نگاه کنیم که به ما نشان می دهد چگونه از &

    #عبارتند از

    خالی اصلی (باطل)
    {
    int x;

    Printf("متغیر x را وارد کنید:");
    scanf("%d"،&x);
    printf("متغیر x=%d",x);
    }

    حالا بیایید به خط کنترل تابع scanf() برگردیم. از نو:

    int scanf(char *control string);

    کاراکتر فاصله در رشته کنترل دستور می دهد یک یا چند فاصله در جریان ورودی رد شوند. علاوه بر فضا، یک برگه یا کاراکتر خط جدید قابل درک است. یک کاراکتر غیر تهی نشان می دهد که کاراکتر خوانده شده و کنار گذاشته شده است.

    جداکننده‌های بین دو عددی که وارد می‌کنید عبارتند از space، tab یا newline. * بعد از % و قبل از کد قالب (مشخص کننده فرمت) دستور می دهد که نوع داده خوانده شود، اما به آن مقدار اختصاص داده نمی شود.

    مثلا:

    scanf("%d%*c%d"،&i،&j);

    با وارد کردن 50+20، متغیر i روی 50، متغیر j روی 20 تنظیم می شود و کاراکتر + خوانده می شود و نادیده گرفته می شود.

    دستور format می تواند بزرگترین پهنای فیلد را برای خواندن مشخص کند.

    مثلا:

    scanf("%5s",str);

    نشان دهنده نیاز به خواندن 5 کاراکتر اول از جریان ورودی است. اگر 1234567890ABC را وارد کنید، آرایه str فقط شامل 12345 می شود، کاراکترهای باقی مانده نادیده گرفته می شوند. جداکننده ها: فاصله، برگه و خط جدید - هنگام وارد کردن نماد، مانند سایر کاراکترها با آنها رفتار می شود.

    اگر کاراکترهای دیگری در رشته کنترل وجود داشته باشد، برای شناسایی و رد شدن کاراکتر مربوطه در نظر گرفته شده است. اپراتور جریان کاراکتر 10plus20

    scanf("%dplus%d"،&x،&y);

    مقدار 10 را به متغیر x، مقدار 20 را به متغیر y اختصاص می‌دهد و از کاراکترهای بعلاوه به دلیل اینکه در رشته کنترل وجود دارند، صرفنظر می‌کند.

    یکی از ویژگی های قدرتمند تابع scanf() توانایی آن در تعیین یک اسکن ست است. مجموعه جستجو مجموعه ای از کاراکترها را تعریف می کند که کاراکترهای خوانده شده توسط تابع scanf() با آنها مقایسه می شوند. تابع scanf() تا زمانی که کاراکترها در مجموعه جستجو ظاهر شوند می خواند. به محض اینکه کاراکتر وارد شده در مجموعه جستجو یافت نشد، تابع scanf() به فرمت مشخص کننده بعدی منتقل می شود. مجموعه جستجو با لیستی از کاراکترهای محصور در پرانتز تعریف می شود. علامت % قبل از براکت باز قرار می گیرد. بیایید با یک مثال به این موضوع نگاه کنیم.

    #عبارتند از

    خالی اصلی (باطل)
    {
    char str1, str2;
    scanf("%%s", str1, str2);
    printf("\n%s\n%s",str1,str2);
    }
    بیایید مجموعه ای از کاراکترها را وارد کنیم:
    12345abcdefg456

    برنامه روی صفحه نمایش داده می شود:
    12345
    abcdefg456

    هنگام تعیین مجموعه جستجو، همچنین می توانید از کاراکتر خط فاصله برای تعیین فاصله و همچنین حداکثر عرض فیلد ورودی استفاده کنید.

    scanf("%10"، str1);

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

    اجازه دهید یادآوری کنم که هنگام استفاده از تابع scanf() باید آدرس های متغیر را به عنوان پارامتر به آن ارسال کنید. کد بالا نوشته شده بود:

    char str; // آرایه 80 کاراکتری
    scanf("%s",str);

    توجه داشته باشید که str قبل از & نیست. این کار به این دلیل انجام می شود که str یک آرایه است و نام آرایه - str یک اشاره گر به اولین عنصر آرایه است. بنابراین نباید از علامت & استفاده شود. ما قبلاً آدرس را به تابع scanf() ارسال می کنیم. خوب، به زبان ساده، str آدرسی در حافظه کامپیوتر است که مقدار اولین عنصر آرایه در آن ذخیره می شود.

    نمونه هایی از برنامه ها

    مثال 1.
    این برنامه درخواست "چند ساله هستید؟:" را نمایش می دهد و منتظر ورود داده می شود. اگر مثلاً عدد 20 را وارد کنید، برنامه خط "شما 20 ساله هستید" را نمایش می دهد. هنگام فراخوانی تابع scanf() یک علامت & جلوی متغیر age قرار می دهیم، زیرا تابع scanf() به آدرس های متغیر نیاز دارد. تابع scanf() مقدار وارد شده را در آدرس مشخص شده می نویسد. در مورد ما، مقدار وارد شده 20 به آدرس متغیر سن نوشته می شود.

    /* مثال 1 */

    #عبارتند از

    خالی اصلی (باطل)
    {
    بین سن

    Printf("\nچند سالته؟:");
    scanf("%d"،&age);
    printf("شما %d سال دارید."، سن);
    }

    مثال 2.
    برنامه ماشین حساب. این ماشین حساب فقط می تواند اعداد را اضافه کند. وقتی 100+34 را وارد کنید، برنامه نتیجه را می دهد: 100+34=134.

    /* مثال 2 */

    #عبارتند از

    خالی اصلی (باطل)
    {
    int x, y;

    Printf("\nماشین حساب:");
    scanf("%d+%d"، &x، &y);
    printf("\n%d+%d=%d"، x، y، x+y);
    }

    مثال 3.
    این مثال نحوه تنظیم عرض فیلد خواندن را نشان می دهد. در مثال ما، عرض فیلد پنج کاراکتر است. اگر رشته ای با تعداد کاراکتر زیاد وارد کنید، تمام کاراکترهای بعد از 5 حذف می شوند. به فراخوانی تابع scanf() توجه کنید. علامت & قبل از نام آرایه نیست زیرا نام آرایه آدرس اولین عنصر آرایه است.

    /* مثال 3 */

    #عبارتند از

    خالی اصلی (باطل)
    {
    نام شخصیت؛

    Printf("\nنام کاربری خود را وارد کنید (حداکثر 5 کاراکتر):");
    scanf("%5s"، name);
    printf("\n%s را وارد کردید"، نام);
    }

    مثال 4.
    آخرین مثال در این مقاله نشان می دهد که چگونه می توان از یک مجموعه جستجو استفاده کرد. پس از شروع برنامه، عددی از 2 تا 5 وارد کنید.

    /* مثال 4 */

    #عبارتند از

    خالی اصلی (باطل)
    {
    char bal;

    Printf("امتیاز شما 2،3،4،5 است:");
    scanf("%"، &bal);
    printf("\nرتبه %c"، bal);
    }

    زبان برنامه نویسی C++

    آخرین به روز رسانی: 1396/08/28

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

    این زبان ریشه در زبان C دارد که در سال‌های 1969-1973 در آزمایشگاه‌های بل توسط برنامه‌نویس دنیس ریچی توسعه یافت. در اوایل دهه 1980، برنامه نویس دانمارکی Bjarne Stroustrup، که در آن زمان در آزمایشگاه Bell کار می کرد، C++ را به عنوان پسوند زبان C توسعه داد. در واقع، در ابتدا، C++ به سادگی زبان C را با برخی از قابلیت های برنامه نویسی شی گرا تکمیل کرد. و به همین دلیل است که استروستروپ در ابتدا آن را «C با کلاس‌ها» نامید.

    پس از آن، زبان جدید شروع به محبوبیت کرد. ویژگی های جدیدی به آن اضافه شد که آن را نه تنها یک زبان برنامه نویسی جدید، بلکه به زبان C اضافه کرد. در نتیجه، "C با کلاس ها" به C++ تغییر نام داد. و از آن زمان به بعد، هر دو زبان شروع به توسعه مستقل از یکدیگر کردند.

    C++ یک زبان قدرتمند است که قابلیت های حافظه غنی را از C به ارث برده است. بنابراین، C++ اغلب در برنامه نویسی سیستم، به ویژه هنگام ایجاد سیستم عامل ها، درایورها، ابزارهای مختلف، آنتی ویروس ها و غیره استفاده می کند. در ضمن، سیستم عامل ویندوز بیشتر به زبان C++ نوشته شده است. اما استفاده از این زبان به برنامه نویسی سیستم محدود نمی شود. C++ را می توان در برنامه های هر سطحی که سرعت و عملکرد مهم هستند استفاده کرد. اغلب برای ایجاد برنامه های گرافیکی و برنامه های کاربردی مختلف استفاده می شود. همچنین اغلب برای ایجاد بازی هایی با تجسم غنی و غنی استفاده می شود. علاوه بر این، اخیراً جهت موبایل شتاب بیشتری گرفته است، جایی که C++ نیز کاربرد خود را پیدا کرده است. و حتی در توسعه وب، شما همچنین می توانید از C++ برای ایجاد برنامه های کاربردی وب یا برخی از خدمات پشتیبانی که برنامه های کاربردی وب را ارائه می دهند استفاده کنید. به طور کلی، C++ یک زبان پرکاربرد است که می توانید تقریباً هر نوع برنامه ای را در آن ایجاد کنید.

    C++ یک زبان کامپایل شده است، به این معنی که کامپایلر کد منبع C++ را به یک فایل اجرایی که حاوی مجموعه‌ای از دستورالعمل‌های ماشین است، ترجمه می‌کند. اما پلتفرم های مختلف ویژگی های خاص خود را دارند، بنابراین برنامه های کامپایل شده را نمی توان به سادگی از یک پلتفرم به پلتفرم دیگر منتقل کرد و در آنجا اجرا کرد. با این حال، در سطح کد منبع، برنامه های C++ تا حد زیادی قابل حمل هستند مگر اینکه از برخی توابع خاص سیستم عامل استفاده شود. و در دسترس بودن کامپایلرها، کتابخانه ها و ابزارهای توسعه برای تقریباً همه پلتفرم های رایج به شما امکان می دهد همان کد منبع ++C را در برنامه های کاربردی این پلتفرم ها کامپایل کنید.

    برخلاف C، زبان C++ به شما اجازه می‌دهد تا برنامه‌ها را به سبک شی گرا بنویسید، که یک برنامه را به عنوان مجموعه‌ای از کلاس‌ها و اشیاء در تعامل با یکدیگر نشان می‌دهد. که ایجاد برنامه های بزرگ را ساده می کند.

    مراحل اصلی توسعه

    در سال های 1979-1980، Bjarne Stroustrup پسوندی را برای زبان C توسعه داد - "C with Classes". در سال 1983 این زبان به C++ تغییر نام داد.

    در سال 1985 اولین نسخه تجاری زبان C++ و همچنین اولین ویرایش کتاب "The C++ Programming Language" منتشر شد که نشان دهنده اولین توصیف این زبان در غیاب استاندارد رسمی بود.

    در سال 1989 نسخه جدیدی از زبان C++ 2.0 منتشر شد که شامل تعدادی ویژگی جدید بود. پس از این، این زبان تا سال 2011 به آرامی توسعه یافت. اما در همان زمان در سال 1998 اولین تلاش برای استانداردسازی زبان توسط سازمان ISO (سازمان بین المللی استانداردسازی) صورت گرفت. اولین استاندارد ISO/IEC 14882:1998 یا به اختصار C++98 نام داشت. متعاقباً در سال 2003 نسخه جدیدی از استاندارد C++03 منتشر شد.

    در سال 2011، استاندارد جدید C++11 منتشر شد که حاوی اضافات بسیاری بود و زبان C++ را با تعداد زیادی قابلیت جدید غنی کرد. به دنبال این، یک افزودنی کوچک به استاندارد که با نام C++14 نیز شناخته می شود، در سال 2014 منتشر شد. و یک نسخه کلیدی دیگر از این زبان برای سال 2017 برنامه ریزی شده است.

    کامپایلرها و محیط های توسعه

    برای توسعه برنامه‌ها در C++، به یک کامپایلر نیاز دارید - کد منبع در C++ را به یک فایل اجرایی ترجمه می‌کند، که سپس می‌توانید آن را اجرا کنید. اما در حال حاضر کامپایلرهای مختلفی وجود دارد. آنها ممکن است در جنبه های مختلف، به ویژه در اجرای استانداردها، متفاوت باشند. یک لیست اولیه از کامپایلرها برای C++ را می توان در ویکی پدیا یافت. برای توسعه توصیه می شود کامپایلرهایی را انتخاب کنید که در حال توسعه و پیاده سازی آخرین استانداردها هستند. بنابراین، در طول این آموزش، ما در درجه اول از کامپایلر رایگان موجود g++ که توسط پروژه گنو توسعه یافته است، استفاده خواهیم کرد.

    همچنین می توانید از IDE هایی مانند Visual Studio، Netbeans، Eclipse، Qt و غیره برای ایجاد برنامه استفاده کنید.

    1. معرفی

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

    در ادامه به فناوری SWITCH برای طراحی برنامه‌های خودکار می‌پردازیم که در آن همیشه با فرآیندهای مشابهی روبرو می‌شوید. از یک طرف، مدل ماشین حالت محدود را چنان تغییر داد که در واقع آن را از محدوده تئوری اتوماتا خارج کرد. و از سوی دیگر، مفاهیمی را وارد برنامه نویسی می کند که درک آنها برای برنامه نویسان دشوار است و در برخی مواقع صرفاً اضافی هستند، زیرا آنالوگ های آشنای بیشتری از تئوری برنامه و عمل برنامه نویسی وجود دارد.

    به عنوان مبنایی برای بحث در مورد مشکلات برنامه نویسی خودکار، سخنرانی اخیر Shalyto A.A. و مقالات "برنامه نویسی" او در جهت تعریف پارادایم برنامه نویسی خودکار.

    C++ (بخوانید c-plus-plus) یک زبان برنامه نویسی همه منظوره کامپایل شده و تایپ شده استاتیک است که در آن می توانید برنامه هایی با هر سطح از پیچیدگی ایجاد کنید.
    بیش از 20 سال است که این زبان جزو سه زبان برنامه نویسی محبوب و پرتقاضا بوده است. (شما می توانید با مراجعه به وب سایت TIOBE این موضوع را تأیید کنید).
    این زبان در اوایل دهه 1980 سرچشمه گرفت، زمانی که کارمند آزمایشگاه بل، بیورن استروستروپ، تعدادی پیشرفت در زبان C برای نیازهای خود ارائه کرد.

    Bjarne Stroustrup - خالق زبان C++

    استروستروپ تصمیم گرفت زبان C را با قابلیت های موجود در زبان سیمولا گسترش دهد. زبان C که زبان پایه سیستم یونیکس است که رایانه‌های بل روی آن کار می‌کردند، سریع، با ویژگی‌های غنی و قابل حمل است. Stroustrup توانایی کار با کلاس ها و اشیاء را اضافه کرد. در نتیجه، حل مسائل مدل‌سازی عملی هم از نظر زمان توسعه (به لطف استفاده از کلاس‌های شبیه به Simula) و هم از نظر زمان محاسبه (به لطف سرعت C) آسان بود.
    در اینجا نحوه صحبت خود توسعه دهنده زبان در مورد آن آمده است:



    در سال 1998 اولین استاندارد زبان معروف به C++98 توسط کمیته استاندارد منتشر شد. C++ برای پاسخگویی به خواسته های امروزی به تکامل خود ادامه می دهد. یکی از گروه هایی که زبان C++ را توسعه می دهد و پیشنهاداتی را برای بهبود آن به کمیته استانداردهای C++ ارائه می کند. تقویت کنیدکه از جمله به بهبود قابلیت های زبان با افزودن ویژگی های فرابرنامه نویسی به آن مشغول است. آخرین استاندارد در سال 2017 منتشر شد و نام دارد C++17. استاندارد بعدی دیری نخواهد آمد و انتظار می رود در سال 2020 ظاهر شود.
    هیچکس حقوق زبان C++ را ندارد؛ این زبان رایگان است. در مارس 2016، یک گروه کاری WP21 C++ در روسیه ایجاد شد. این گروه برای جمع آوری پیشنهادات برای استاندارد C++، ارسال آنها به یک کمیته و دفاع از آنها در جلسات عمومی سازمان بین المللی استاندارد سازماندهی شد.
    C++ یک زبان چند پارادایم (از کلمه پارادایم - سبکی از نوشتن برنامه های کامپیوتری) است که شامل طیف گسترده ای از سبک ها و فن آوری های مختلف برنامه نویسی است. اغلب به عنوان یک زبان شی گرا طبقه بندی می شود، اما به طور دقیق، این مورد نیست. در طول فرآیند کار، توسعه‌دهنده آزادی مطلق در انتخاب ابزار دریافت می‌کند تا مشکل حل شده با استفاده از یک رویکرد خاص تا حد امکان کارآمدتر حل شود. به عبارت دیگر، C++ برنامه نویس را مجبور نمی کند که تنها به یک سبک توسعه برنامه (مثلاً شی گرا) پایبند باشد.
    C++ دارای یک کتابخانه استاندارد غنی است که شامل کانتینرها و الگوریتم های رایج، I/O، عبارات منظم، پشتیبانی از چند رشته و سایر ویژگی ها می باشد. ++C بر بسیاری از زبان‌های برنامه‌نویسی تأثیر گذاشته است، از جمله: Java, C#, D. از آنجایی که C++ متعلق به خانواده زبان‌های مبتنی بر نحو زبان C است، می‌توانید به راحتی به سایر زبان‌های برنامه‌نویسی این خانواده تسلط داشته باشید: JavaScript، PHP. ، پرل، Objective-C و بسیاری دیگر. و غیره، از جمله خود زبان مادر - C. ()
    زبان C++ در طول وجود خود، افسانه‌های مداومی را به دست آورده است که به راحتی رد می‌شوند (اینجا را ببینید: قسمت 1 و قسمت 2)

    تاریخچه انتشار زبان و استانداردها

    1983

    خالق این زبان بیورن استروستروپ است، یکی از کارمندان آزمایشگاه بل، نسخه اولیه زبان C++ را معرفی کرد ("C با کلاس ها")

    1985

    اولین نسخه تجاری C++، این زبان نام مدرن خود را به خود می گیرد

    1986

    انتشار اولین ویرایش زبان برنامه نویسی C++ - کتابی اختصاص داده شده به C++ توسط Björn Stroustrup

    1998

    استاندارد بین المللی برای زبان C++ تصویب شده است: ISO/IEC 14882:1998 "Standard for the C++ Programming Language"

    2003
    2005

    گزارش فنی کتابخانه 1 (TR1) منتشر شد. در حالی که به طور رسمی بخشی از استاندارد نیست، این گزارش افزونه هایی را برای کتابخانه استاندارد توصیف می کند که باید در نسخه بعدی زبان C++ گنجانده شود.

    2011

    انتشار یک استاندارد جدید – C++11 یا ISO/IEC 14882:2011. استاندارد جدید شامل اضافاتی به هسته زبان و گسترش کتابخانه استاندارد، از جمله بیشتر TR1 بود

    2014

    انتشار استاندارد C++14 ("استاندارد بین المللی ISO/IEC 14882:2014(E) زبان برنامه نویسی C++")؛ C++14 را می توان به عنوان یک برنامه افزودنی کوچک نسبت به C++11 مشاهده کرد که عمدتاً شامل رفع اشکالات و بهبودهای جزئی است.

    2017

    انتشار یک استاندارد جدید - C++1z (C++17). این استاندارد تغییرات و اضافات زیادی را ارائه کرد. به عنوان مثال، STD شامل کتابخانه‌هایی با استاندارد C11، یک سیستم فایل مبتنی بر boost::filesystem و بیشتر کتابخانه تجربی TS I بود.

    2020

    C++20 نام غیر رسمی استاندارد ISO/IEC برای زبان برنامه نویسی C++ است که انتظار می رود از C++17 پیروی کند. پیش نویس استاندارد N4800.

    C++ فلسفه

    بیورن استروستروپ در کتاب خود به نام «طراحی و تکامل C++» (2007)، اصولی را که هنگام طراحی C++ دنبال می‌کرد (به اختصار) شرح می‌دهد:

    • یک زبان همه منظوره با انواع داده های ثابت، کارایی و قابل حمل بودن زبان C دریافت کنید.
    • پشتیبانی مستقیم و جامع از انواع سبک های برنامه نویسی.
    • به برنامه نویس آزادی انتخاب بدهید، حتی اگر به او فرصت انتخاب اشتباه بدهد.
    • تا آنجا که ممکن است سازگاری با C را حفظ کنید، در نتیجه انتقال آسان از برنامه نویسی C را ممکن کنید.
    • اجتناب از اختلافات بین C و C++: هر ساختاری که در هر دو زبان معتبر است باید در هر یک از آنها معنی یکسان داشته باشد و به رفتار برنامه یکسان منجر شود.
    • از ویژگی هایی که وابسته به پلتفرم هستند یا جهانی نیستند اجتناب کنید.
    • "برای چیزی که استفاده نمی کنید هزینه نکنید" - هیچ ویژگی زبانی نباید منجر به کاهش عملکرد برنامه هایی شود که از آن استفاده نمی کنند.
    • به محیط برنامه نویسی بیش از حد پیچیده نیاز ندارید.

    C و C++

    نحو زبان C++ از زبان C به ارث رسیده است. اگرچه به طور رسمی، یکی از اصول C++ حفظ سازگاری با زبان C است، اما در واقع گروه‌های استانداردسازی این زبان‌ها با هم تعامل ندارند و تغییراتی که ایجاد می‌کنند، انجام نمی‌شود. فقط همبستگی ندارند، بلکه اغلب از نظر ایدئولوژیک اساساً با یکدیگر در تضاد هستند. بنابراین، عناصری که استانداردهای جدید C به هسته اضافه می‌کنند، در عناصر استاندارد C++ کتابخانه استاندارد هستند و اصلاً در هسته نیستند، مثلاً آرایه‌های پویا، آرایه‌هایی با مرزهای ثابت، امکانات پردازش موازی. به گفته استروستروپ، ترکیب توسعه این دو زبان سود زیادی خواهد داشت، اما به دلایل سیاسی بعید است که امکان پذیر باشد. بنابراین سازگاری عملی بین C و C++ به تدریج از بین خواهد رفت.
    در این مثال، بسته به کامپایلر مورد استفاده، "C++" یا "C" خروجی خواهد شد:

    برنامه 9.1

    #عبارتند از int main() ( printf("%s\n", (sizeof("a") == sizeof(char)) ? "C++" : "C"); بازگشت 0؛ )

    این به این دلیل است که ثابت های کاراکتر در C از نوع int و در C++ از نوع char هستند، اما اندازه این نوع ها متفاوت است.

    مدل های چرخه عمر برنامه

    چرخه زندگینرم افزار دوره زمانی است که از لحظه تصمیم گیری در مورد نیاز به ایجاد یک محصول نرم افزاری شروع می شود و در لحظه حذف کامل آن از سرویس به پایان می رسد. این چرخه فرآیند ساخت و توسعه نرم افزار است. چندین مدل چرخه زندگی وجود دارد.
    مدل آبشاریچرخه زندگی (مدل آبشار انگلیسی) در سال 1970 توسط وینستون رویس پیشنهاد شد. اجرای متوالی تمام مراحل پروژه را به ترتیب کاملاً ثابت فراهم می کند. انتقال به مرحله بعدی به معنای تکمیل کامل کار در مرحله قبل است. الزامات تعیین شده در مرحله تشکیل الزامات به طور دقیق در قالب مشخصات فنی مستند شده و برای کل توسعه پروژه ثبت می شود. هر مرحله با انتشار مجموعه کاملی از اسناد و مدارک کافی برای ادامه توسعه توسط تیم توسعه دیگری به اوج خود می رسد.
    مراحل پروژه با توجه به مدل آبشار:

    1. تشکیل الزامات؛
    2. طرح؛
    3. پیاده سازی؛
    4. آزمایش کردن؛
    5. پیاده سازی؛
    6. عملیات و نگهداری.

    در مدل آبشاری، انتقال از یک فاز پروژه به فاز دیگر فرض می‌کند که نتیجه فاز قبلی کاملاً صحیح است. در پروژه های بزرگ دستیابی به این امر تقریبا غیرممکن است. بنابراین، این مدل تنها برای توسعه یک پروژه کوچک مناسب است. (خود دبلیو رویس به این مدل پایبند نبود و از مدل تکراری استفاده کرد).
    مدل تکراری
    یک جایگزین برای مدل آبشاری، مدل توسعه تکراری و افزایشی (IID) است که در دهه 70 از T. Gilb دریافت شد. نام مدل تکاملی مدل IID شامل شکستن چرخه عمر پروژه به دنباله ای از تکرارها است که هر کدام شبیه یک پروژه کوچک است، که شامل تمام فرآیندهای توسعه اعمال شده برای ایجاد قطعات کوچکتر از عملکرد در مقایسه با پروژه به عنوان یک کل است. هدف از هر تکرار، به دست آوردن یک نسخه کارآمد از سیستم نرم افزار، از جمله عملکرد تعریف شده توسط محتوای یکپارچه تمام تکرارهای قبلی و فعلی است. نتیجه تکرار نهایی شامل تمام عملکردهای مورد نیاز محصول است. بنابراین، با تکمیل هر تکرار، محصول یک افزایش - یک افزایش - به قابلیت های خود دریافت می کند، که بنابراین، به طور تکاملی توسعه می یابد.


    انواع مختلفی از رویکرد تکراری در اکثر متدولوژی های توسعه مدرن اجرا می شود:

    فرآیند توسعه - فرآیند یکپارچه منطقی (RUP)

    فرآیند یکپارچه منطقی (RUP)(فرآیند یکپارچه منطقی) یک متدولوژی توسعه نرم افزار است که توسط Rational Software (IBM) نگهداری می شود. این روش توصیه هایی را برای تمام مراحل توسعه ارائه می دهد: از مدل سازی کسب و کار گرفته تا آزمایش و راه اندازی برنامه نهایی. زبان مدل سازی یکپارچه (UML) به عنوان یک زبان مدل سازی استفاده می شود.
    چرخه عمر کامل توسعه محصول شامل چهار مرحله است که هر مرحله شامل یک یا چند تکرار است.

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

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

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

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



    "فناوری اطلاعات. مهندسی سیستم و نرم افزار. فرآیندهای چرخه عمر نرم افزار». این استاندارد توسط آژانس فدرال مقررات فنی و مترولوژی فدراسیون روسیه پذیرفته شده است و مشابه استاندارد بین المللی ISO/IEC 12207:2008 است. این استاندارد یک ساختار کلی از فرآیندهای چرخه عمر نرم افزار را ایجاد می کند که می تواند در صنعت نرم افزار دنبال شود. استاندارد مدل چرخه عمر خاصی را پیشنهاد نمی کند. مفاد آن برای هر مدل چرخه عمر، روش ها و فناوری های ایجاد نرم افزار مشترک است. ساختار فرآیندهای چرخه عمر را بدون مشخص کردن نحوه اجرا یا تکمیل فعالیت ها و وظایف موجود در آن فرآیندها توصیف می کند.

    ارائه برای درس
    موضوعات پیام
    • بنیاد نرم افزار آزاد (FSF)
    • مجوزهای نرم افزار رایگان
    • نرم افزار آزاد و منبع باز
    • تاریخچه توسعه زبان های برنامه نویسی
    • تاریخچه زبان C. C و C++
    • داستان
    • انتقاد از C++
    • تاریخچه یونیکس
    • مدل چرخه عمر نرم افزار مارپیچ
    • UML (زبان مدلسازی یکپارچه)
    • چارچوب راه حل های مایکروسافت
    • IDE برای برنامه نویسی C/C++ در ویندوز
    • کامپایلرهای C/C++
    • ایجاد یک برنامه کنسول در ویندوز
    سوالات
    1. چرا از مدل آبشاری توسعه نرم افزار در پروژه های بزرگ استفاده نمی شود؟
    2. تفاوت بین مدل های توسعه آبشار و تکراری چیست؟
    3. مراحل توسعه نرم افزار را در متدولوژی فرآیند یکپارچه منطقی (RUP) فهرست کنید