Scanf C funksiyası: təsvir. §1 Dil haqqında ümumi məlumat. Proqram tərtibatının mərhələləri. Tətbiq Həyat Dövrü Modelləri Ümumi Təsvir c

Kompüterlər bəlkə də bəşəriyyətin ixtiyarında olan ən çox yönlü alətlərdir. Onlar inanılmaz hesablamalar aparmağa qadirdirlər, onlar sizə planetin müxtəlif yerlərində tamamilə böyük həcmdə məlumat saxlamağa imkan verir və eyni zamanda, haradan asılı olmayaraq, onları mübadilə etmək asandır. Kompüterlər çoxunu sadələşdirir gündəlik tapşırıqlar, və onlar bir insanın yerinə yetirməsi üçün çox yorucu və darıxdırıcı olacaq bir çox rutin prosesləri avtomatlaşdırmağa imkan verir. Kompüterlərin edə biləcəyi çox şey var, lakin buna baxmayaraq kompüterlər insanlardan fərqli olaraq ağıllı deyillər. Ən sadə prosesi belə avtomatlaşdırmaq üçün kompüterin tam olaraq nə etməli olduğunu aydın və birmənalı şəkildə söyləməsi lazımdır. Təəssüf ki, bizim dilimizlə kompyuterin dili tamam başqadır. Beləliklə, ciddi bir vəziyyət var dil maneəsi, bir şəkildə aradan qaldırılmalıdır, əks halda kompüter bizi başa düşməyəcək. Kompüterlər bizi başa düşməsələr də, özbaşına heç nə etməyəcəklər. İnsanlarla kompüterlər arasında ünsiyyət vasitəsi kimi çoxlu sayda proqramlaşdırma dilləri icad edilmişdir. Proqramlaşdırma dillərinin köməyi ilə biz proqramlar yaradırıq və kompüter artıq proqramlarla birbaşa işləyir. Proqramların özləri kompüterin başa düşə və icra edə biləcəyi təlimatlar toplusudur.

Proqram növləri

İstədiyimiz kompüterlə effektiv ünsiyyət qurmaq üçün çoxlu proqramlaşdırma dilləri mövcuddur.

Layihənin növündən asılı olaraq, proqramlaşdırma dilini seçərkən nəzərə alınmalı bir çox amillər var. Ən diqqət çəkən amillərin siyahısı:

Kompilyasiya, şərh və JIT tərtibi

Kompilyasiya prosesi proqramlaşdırma dilində yazılmış kodu hədəf maşının ana dilinə tərcümə edir. Bu prosesi yerinə yetirən proqrama kompilyator deyilir. Kompilyasiya, xüsusən kompilyator optimallaşdırmada səmərəli olarsa, kodunuzun kifayət qədər sürətli işləməsini təmin edə bilər. Ancaq fakt budur ki, nəticədə alınan kod müxtəlif üzərində işləyə bilməz əməliyyat sistemləri və kompilyasiya prosesi müəyyən vaxt tələb edir və kod nə qədər çox olarsa, kompilyasiya prosesi də bir o qədər uzun olur. Qeyd etmək lazımdır ki, proqram kodunda hər hansı dəyişiklik etdikdə onu tərtib etməli və yalnız bundan sonra işə salmalısınız.

Tərcümə edilmiş proqramlaşdırma dilləri tərcüməçi adlanan proqram tərəfindən oxunur və həmin proqram tərəfindən icra edilir. Tərcümə edilmiş proqramlaşdırma dilləri tərcüməçi kimi müxtəlif əməliyyat sistemlərində işləyə bilər və hətta uzun tərtib vaxtlarına malik deyildir. Ancaq tərcümə edilmiş dillərdə yazılmış proqramlar ekvivalent tərtib edilmiş proqramlardan daha yavaş işləyir.

Və nəhayət, tez bir zamanda sözdə tərtib (və ya JIT kompilyasiyası). Proqram işə salındıqda belə dillər tez tərtib olunur. JIT dillərində yazılmış proqramlar, bir qayda olaraq, optimallaşdırılmır, bununla da kompilyasiya prosesini sürətləndirir və performans və çarpaz platforma arasında balansı bərpa edir.

Yüksək və ya aşağı proqramlaşdırma səviyyələri

Aşağı səviyyəli dillər ümumiyyətlə birbaşa aparatla işləyir və buna görə də cihaz sürücülərini yazmaq üçün ən uyğundur. Sürücülər avadanlığı idarə edən və ona birbaşa çıxışı olan proqramlardır. Bununla belə, aşağı səviyyəli bir dildə yazılmış proqramı digər platformalara daşımaq adətən çətindir. Və buna görə də, hər bir OS üçün eyni cihaz müxtəlif sürücülərlə gəlir. Aşağı səviyyəli proqramlaşdırma dilləri demək olar ki, həmişə tərtib edilir.

dillərdə yüksək səviyyə bütün diqqət dil anlayışına verilir. Yəni, belə bir proqramlaşdırma dili asan başa düşülməlidir, məsələn, verilənləri massivlər, sətirlər, obyektlər və s. kimi təqdim etməlidir. Yüksək səviyyəli dil adətən aşağı səviyyəli dildən daha asan başa düşülür. Və bir qayda olaraq, yüksək səviyyəli dildə proqram hazırlamaq aşağı səviyyəli dildən çox daha asan və sürətlidir. Gördüyünüz kimi, müxtəlif səviyyəli proqramlaşdırma tamamilə fərqli tapşırıqlar üçün nəzərdə tutulmuşdur və müxtəlif səviyyəli dillərin funksionallığını müqayisə etməyə dəyməz, bunun heç bir mənası yoxdur.

Proqramlaşdırma dillərinin verilənlər tipli sistemləri

Hər bir proqramlaşdırma dili üçün proqramlaşdırma dillərinin əməl etməli olduğu müxtəlif qaydaları müəyyən edən spesifikasiya var. Bəzi dillərdə məlumat növləri yoxdur, buna görə də bu onlara aid deyil. Bununla belə, əksər dillərdə (o cümlədən C++) məlumat növləri var, ona görə də bu məlumat sizin üçün faydalı olacaq.

Güclü və ya zəif məlumat növü sistemi

Zəif bir giriş sistemi heç bir məhdudiyyət qoymur, proqramçı buna nəzarət etməlidir. "Zəif məlumat sistemi" dedikdə, mən belə bir məlumat sisteminə malik bir dilin mövcud məlumat növü çevrilmələrini ciddi şəkildə tənzimləməyəcəyini nəzərdə tuturam. Məsələn, vurma funksiyasına nömrə əvəzinə sətir və ya simvol ötürülürsə, sətiri ədədlə çoxaltmaq mümkün olmadığından, vurmanın nəticəsi bütün mənasını itirsə də, qeyri-ciddi tipli proqramlaşdırma dilləri belə kodu yerinə yetirəcək. . Üstəlik, bu mənasız çoxalmanın nəticəsi gözlənilməz olacaq. Əgər proqramlaşdırma dili güclü şəkildə yazılmışdırsa, o zaman kompilyasiya mərhələsində tərcüməçi səhv barədə məlumat verəcək və layihənin qurulması prosesini dayandıracaq. Misal üçün,

// nümunə C ++ proqramı #include ad sahəsi std istifadə edərək; int main () (char string = "nümunə"; int sayı = 5; cout<< string * number << endl; // умножаем строку на число }

Nəticədə, kompilyator səhv barədə məlumat verəcəkdir:

xəta: 'char' və 'int' tiplərinin etibarsız operandları binar 'operator *'

Biz eyni şeyi sərbəst yazılmış proqramlaşdırma dilində - php-də etməyə çalışacağıq. Nəzərə alın ki, hətta dəyişənləri elan edərkən məlumat növünü göstərməyə ehtiyac yoxdur.

Bu kodun icrasının nəticəsi sıfır olacaq. Heç bir xəta baş verməyəcək, baxmayaraq ki, sətri rəqəmlə çoxalda bilməyəcəksiniz. Ancaq php-də hər şey mümkündür. php kompilyatoru xəta haqqında məlumat verməyəcək, skript işləyəcək və hətta nəticə çıxaracaq və proqramımız 1000 sətir koddan ibarətdirsə, o zaman bu xətanı tapmaq bizim üçün çətin olacaq. Bu, “zəif verilənlər tipli sistem”ə malik proqramlaşdırma dilinin parlaq nümunəsidir, yəni belə absurd əməliyyatların qarşısının alınması tamamilə proqramçının çiynindədir.

Müəyyən edilmiş və ya qeyri-müəyyən məlumat növü

Bu həm tərtib edilmiş, həm də şərh edilmiş dillərə aiddir. Bir çox dillər dəyişənlərin növünün açıq tərifini tələb edir, buna görə də qeyri-müəyyənlik yoxdur, tərtibçi və tərcüməçi nə edəcəyini aydın şəkildə bilir. Bəzi proqramlaşdırma dilləri dəyişənlərin növünün açıq tərifini tələb etmir. Məlumat növü avtomatik olaraq dəyişənin məzmunu ilə müəyyən edilir.

Statik və ya dinamik məlumat növü

Əgər dil statik şəkildə yazılıbsa, o zaman tərtibçi/tərcüməçi kompilyasiya/təfsir prosesindən əvvəl növ yoxlamasını bir dəfə həyata keçirir. Əgər məlumat növü dinamikdirsə, o zaman məlumat növləri iş zamanı yoxlanılır.

Təhlükəsiz və ya təhlükəli məlumat növü sistemi

Gözlənilməz nəticələrə və ya səhvlərə səbəb ola biləcək vəziyyətlər var. Təhlükəsiz bir dil mümkün qədər çox məhdudiyyətlər qoyacaq ki, belə vəziyyətlər yaranmasın. Təhlükəsiz bir dil bütün məsuliyyəti proqramçıya qoyur.

Bu amillər bir və ya bir neçə proqramlaşdırma dilini xarakterizə edə bilər.

Dəstəklənən proqramlaşdırma paradiqmaları

Proqramlaşdırma paradiqmaları proqramlaşdırma dilinin dəstəklədiyi proqramlaşdırma metodologiyaları və ya texnikalarıdır. Budur əsas paradiqmaların siyahısı:

Deklarativ paradiqma

Deklarativ proqramlaşdırma dili bu məqsədə çatmaq üçün bir vasitədən daha çox məqsədə diqqət yetirəcəkdir. Nəyə nail olmaq lazım olduğunu göstərmək kifayətdir, bu halda hansı vasitələrdən istifadə olunacağını göstərmək lazım deyil. Bu paradiqma öz kodunuzu yazdığınız zaman yarana biləcək arzuolunmaz yan təsirlərin qarşısını alır.

Funksional paradiqma

Funksional proqramlaşdırma, riyazi tənliklər və funksiyalar baxımından problemləri həll etməyə çalışan deklarativ proqramlaşdırmanın alt hissəsidir. Funksional proqramlaşdırma dəyişənlərə və obyektlərə imperativ dillərdən fərqli olaraq paylaşılmayan verilənlər kimi yanaşır.

Ümumiləşdirilmiş paradiqma

Ümumiləşdirilmiş proqramlaşdırma, müəyyən ediləcək məlumat növləri baxımından alqoritmlərin yazılmasına diqqət yetirir. Yəni eyni alqoritm müxtəlif növ verilənlərlə işləyə bilər. Bu yanaşma çox güclü bir vasitə ola bilər, ancaq yaxşı həyata keçirildikdə.

İmperativ paradiqma

İmperativ dillər proqramçılara kompüterə tapşırığı yerinə yetirmək üçün lazım olan təlimatların ardıcıl siyahısını verməyə imkan verir. İmperativ proqramlaşdırma dilləri deklarativ proqramlaşdırma dillərinə qarşıdır.

Struktur paradiqma

Struktur proqramlaşdırma dilləri hər hansı bir kod formasını - iyerarxik quruluşu təmin etməyə yönəldilmişdir. Kodun strukturu aydın görünəndə, ifadələrin icrası ardıcıllığı intuitiv olaraq aydın olur. Bu cür dillər adətən kodun bir hissəsindən digərinə “atlamağı” pisləyir, məsələn, hamımız C və C++ dillərində təyin olunan goto operatorunu bilirik.

Prosedur paradiqması

Prosedur proqramlaşdırma dili prosedur və ya alt proqram konsepsiyasını dəstəkləyən strukturlaşdırılmış proqramlaşdırma dilinə aiddir.

Obyekt yönümlü paradiqma

Obyekt yönümlü proqramlaşdırma (bəzən qısaldılmış OOP) proqramları "obyektlər" baxımından ifadə edən strukturlaşdırılmış proqramlaşdırmanın alt dəstidir. Bu paradiqma kodu başa düşmək üçün kifayət qədər sadə bir şəkildə təkrar istifadə etməyə imkan verir.

Standartlaşdırma

Dillərin rəsmi standartı varmı? Proqramın müxtəlif tərtibçilər/tərcüməçilər tərəfindən münaqişəsiz başa düşülməsini təmin etmək üçün standartlaşdırma çox vacibdir. Bəzi dillər Amerika Milli Standartlar İnstitutu (ANSI), digərləri isə Beynəlxalq Standartlaşdırma Təşkilatı (ISO) tərəfindən standartlaşdırılıb. Bütün proqramlaşdırma dilləri standartlaşdırılmalıdır, əks halda sintaksisdə nəyin doğru, nəyin yanlış olduğu barədə razılaşmaq mümkün olmayacaq.

C++ proqramlaşdırma dilini xarakterizə edək

İndi proqramlaşdırma dillərinin əsas xüsusiyyətlərini araşdırdıqdan sonra C++ proqramlaşdırma dilinin hansı amilləri qane etdiyini müəyyən edəcəyik.

C ++ ISO standartlaşdırılmış proqramlaşdırma dilidir.

Bir müddətdir ki, C++ rəsmi standartına malik deyildi, lakin 1998-ci ildən C++ ISO komitəsi tərəfindən standartlaşdırılıb.

C ++ tərtib dili.

C ++ birbaşa maşın kodunu tərtib edərək onu dünyanın ən sürətli dillərindən birinə çevirir.

C ++ güclü tipli bir dildir.

C++ güman edir ki, proqramçı nə etdiyini bilir və yalnız təxəyyüllə məhdudlaşan inanılmaz miqdarda imkanlar verir.

C ++ statik və dinamik məlumat növlərini dəstəkləyir.

Beləliklə, məlumat növünün yoxlanılması kompilyasiya zamanı və ya icra zamanı həyata keçirilə bilər. Və bu bir daha C++ dilinin çevikliyini sübut edir.

C ++ bir çox paradiqmanı dəstəkləyir.

C ++ prosedur, ümumi və obyekt yönümlü proqramlaşdırma paradiqmalarını və bir çox digər paradiqmaları dəstəkləyir.

C++ portativ proqramlaşdırma dilidir.

Dünyada ən çox istifadə olunan dillərdən biri və açıq dil kimi C++ müxtəlif platformalarda işləyən çoxlu kompilyatorlara malikdir. C ++ Standart Kitabxana kodu bir çox platformada işləyəcək.

C ++ C dili ilə tam uyğundur

C++-da siz C kitabxanalarından istifadə edə bilərsiniz və onlar yaxşı işləyəcəklər.

Bu məqalədə scanf () funksiyası xüsusi bir standarta bağlanmadan ümumi formada nəzərdən keçirilir, buna görə də C99, C11, C ++ 11, C ++ 14 standartlarından məlumatlar daxil edilir. Bəlkə də bəzi standartlarda funksiya məqalədə təqdim olunan materialdan fərqli olaraq işləyir.

Scanf C funksiyası - təsviri

scanf () stdio.h (C) və cstdio (C ++) başlıqlarında yerləşən və formatlaşdırılmış proqram girişi adlanan funksiyadır. scanf standart girişdən (stdin) simvolları oxuyur və onları formata uyğun çevirir, sonra isə göstərilən dəyişənlərə yazır. Format - qəbz haqqında məlumatların müəyyən bir növə endirilməsi deməkdir. Beləliklə, scanf C funksiyası təsvir edilmişdir:

scanf ("% format", & dəyişən1 [, & dəyişən2, [...]]),

burada dəyişənlər ünvan kimi ötürülür. Dəyişənlərin funksiyaya bu şəkildə ötürülməsinin səbəbi aydındır: onun işləməsi nəticəsində o, xətaların mövcudluğunu göstərən dəyər qaytarır, buna görə də dəyişənlərin qiymətlərini dəyişdirməyin yeganə yolu onları ünvana ötürməkdir. . Həmçinin, bu üsul sayəsində funksiya istənilən növ məlumatları emal edə bilir.

Bəzi proqramçılar scanf () və ya printf () kimi funksiyaları digər dillərlə bənzətmə səbəbindən prosedurlar kimi adlandırırlar.

Scanf dilin bütün əsas növlərini daxil etməyə imkan verir: char, int, float, string və s. Sətir tipli dəyişənlər üçün ünvan işarəsini - "&" göstərməyə ehtiyac yoxdur, çünki sətir tipli dəyişən massivdir və onun adı massivin birinci elementinin ünvanıdır. kompüter yaddaşı.

Məlumat daxiletmə formatı və ya nəzarət sətri

Təsvirdən scanf C funksiyasından istifadə nümunəsinə baxaraq başlayaq.

#daxildir int main () (int x; while (scanf ("% d", & x) == 1) printf ("% d \ n", x); qaytarmaq 0; // Linux sistemləri üçün tələb)

Daxiletmə formatı aşağıdakı dörd parametrdən ibarətdir:% [*] [en] [modifikatorlar] növü. Bu halda, "%" işarəsi və növü tələb olunan parametrlərdir. Yəni, minimal format belə görünür: “% s”, “% d” və s.

Ümumiyyətlə, format sətirini təşkil edən simvollar aşağıdakılara bölünür:

  • format təyinediciləri -% simvolu ilə başlayan hər şey;
  • ayırıcı və ya boşluq simvolları - onlar boşluq, nişan (\ t), yeni sətir (\ n) hesab olunur;
  • boşluqdan başqa simvollar.

Funksiya təhlükəli ola bilər.

scanf () yerinə scanf_s () istifadə edin.

(Visual Studio-dan yazı)

Növ və ya format spesifikatorları və ya konversiya simvolları və ya nəzarət simvolları

scanf C təsvirində ən azı "%" işarəsi ilə başlayan ifadələrin sonunda göstərilən format təyinedicisi olmalıdır. O, proqrama adətən klaviaturadan yazarkən gözlənilən məlumat növünü bildirir. Bütün format təyinedicilərinin siyahısı aşağıdakı cədvəldə verilmişdir.

Məna

Proqram simvolun daxil edilməsini gözləyir. Yazılacaq dəyişən simvol tipində olmalıdır.

Proqram tam onluq ədədin daxil edilməsini gözləyir. Dəyişən int tipində olmalıdır.

Proqram eksponensial formada üzən nöqtə (vergül) ədədinin daxil edilməsini gözləyir. Dəyişən float tipli olmalıdır.

Proqram üzən nöqtəli nömrənin (vergül) daxil edilməsini gözləyir. Dəyişən float tipli olmalıdır.

7

Proqram üzən nöqtəli nömrənin (vergül) daxil edilməsini gözləyir. Dəyişən float tipli olmalıdır.

Proqram səkkizlik nömrənin daxil edilməsini gözləyir. Dəyişən int tipli olmalıdır.

Proqram sətirin daxil edilməsini gözləyir. Sətir ilk rast gəlinən ayırıcı simvola qədər hər hansı simvollar toplusudur. Dəyişən sətir tipli olmalıdır.

Proqram onaltılıq nömrənin daxil edilməsini gözləyir. Dəyişən int tipli olmalıdır.

Dəyişən göstəricinin daxil edilməsini gözləyir. Dəyişən göstərici tipli olmalıdır.

Dəyişənə scanf funksiyası tərəfindən cari ana qədər oxunan simvolların sayına bərabər tam dəyər yazır.

Proqram işarəsiz tam ədədi oxuyur. Dəyişən növü işarəsiz tam ədəd olmalıdır.

Proqram ikili nömrənin daxil edilməsini gözləyir. Dəyişən int tipində olmalıdır.

Skan edilmiş simvollar dəsti. Proqram, giriş axınında göstərilən dəstdən simvollar olduğu müddətcə, scanf arasında müəyyən edilmiş məhdud hovuzdan simvolların daxil edilməsini gözləyir.

Sətir simvollarını formatlayın

Ulduz (*)

Ulduz işarəsi (*) təyinat əməliyyatının dayandırılmalı olduğunu göstərən bir bayraqdır. "%" işarəsindən dərhal sonra ulduz işarəsi qoyulur. Misal üçün,

Scanf ("% d% * c% d", & x, & y); // iki tam ədəd arasındakı simvolu nəzərə alma. scanf ("% s% * d% s", str, str2); // iki sətir arasında tam ədədi nəzərə alma.

Yəni konsolda "45-20" sətirini daxil etsəniz, proqram aşağıdakıları edəcək:

  1. "x" dəyişəninə 45 dəyəri təyin ediləcək.
  2. "y" dəyişəninə 20 dəyəri təyin ediləcək.
  3. Və mənfi işarə (tire) "-" "% * c" sayəsində nəzərə alınmayacaq.

Genişlik (və ya sahə eni)

Bu, cari oxu əməliyyatı zamanı oxunacaq simvolların maksimum sayını təyin edən % işarəsi ilə format təyinedicisi arasındakı tam ədəddir.

Yadda saxlamaq üçün bir neçə vacib məqam var:

  1. scanf 20 simvolu saymasa belə, ayırıcı simvolla qarşılaşarsa, fəaliyyətini dayandıracaq.
  2. Əgər girişə 20-dən çox simvol verilirsə, onlardan yalnız ilk 20-si str dəyişəninə yazılacaq.

Tip dəyişdiriciləri (və ya dəqiqlik)

Bunlar giriş üçün gözlənilən məlumat növünü dəyişdirən xüsusi bayraqlardır. Bayraq tip spesifikatorunun solunda görünür:

  • L və ya l (kiçik L) d, i, o, u, x təyinediciləri ilə "l" istifadə edərkən bayraq proqrama long int tipli verilənlərin daxil edilməsinin gözlənildiyini bildirir. e və ya f təyinedicisi ilə "l" istifadə edərkən, bayraq proqrama ikiqat giriş gözləməli olduğunu bildirir. "L" hərfindən istifadə proqrama uzun dublun gözlənildiyini bildirir. "c" və "s" təyinediciləri ilə "l" istifadə etmək proqrama wchar_t tipli iki baytlıq simvolları gözləməyi bildirir. Məsələn, "% lc", "% ls", "% l".
  • h qısa növü göstərən bayraqdır.
  • hh - dəyişənin işarələnmiş simvol və ya işarəsiz simvol dəyərinin göstəricisi olduğunu bildirir. Bayraq d, i, o, u, x, n təyinediciləri ilə istifadə edilə bilər.
  • ll (iki kiçik L) - dəyişənin işarəli int və ya işarəsiz uzun uzun int dəyərinə göstərici olduğunu bildirir. Bayraq təyinedicilərlə istifadə olunur: d, i, o, u, x, n.
  • j - dəyişənin stdint.h başlıq faylından intmax_t və ya uintmax_t tipinə göstərici olduğunu bildirir. Göstəricilərlə istifadə olunur: d, i, o, u, x, n.
  • z - dəyişənin size_t tipinə göstərici olduğunu bildirir, onun tərifi stddef.h-dədir. Göstəricilərlə istifadə olunur: d, i, o, u, x, n.
  • t - dəyişənin ptrdiff_t tipinə göstərici olduğunu bildirir. Bu növün tərifi stddef.h-dədir. Göstəricilərlə istifadə olunur: d, i, o, u, x, n.

Daha aydın şəkildə, dəyişdiricilərlə şəkil cədvəl şəklində təqdim edilə bilər. Scanf C-nin bu təsviri proqramçılar üçün daha aydın olacaq.

Digər personajlar

Formatda rast gəlinən hər hansı simvol silinəcək. Qeyd etmək lazımdır ki, idarəetmə xəttində boşluq və ya ayırıcı simvolların (yeni sətir, boşluq, tab) olması funksiyanın fərqli davranışına səbəb ola bilər. Bir versiyada scanf () ayırıcıdan başqa simvolla qarşılaşana qədər heç bir sayda ayırıcıları saxlamadan oxuyacaq, digər versiyada isə boşluqlar (yalnız onlar) əhəmiyyət kəsb etmir və "% d +% d" ifadəsi buna bərabərdir "% d +% d ".

Nümunələr

Funksiya funksiyasını daha dəqiq düşünməyə və başa düşməyə kömək etmək üçün bəzi nümunələrə baxaq.

Scanf ("% 3s", küç); // konsolda "1d2s3d1; 3" sətirini daxil etsəniz, str scanf-ə yalnız "1d2" yazılacaq ("% dminus% d", & x, & y); // iki ədəd arasındakı "mənfi" simvolları ləğv ediləcək scanf ("% 5", str); // simvollar 5 olana qədər str-ə daxil edilir və simvollar 0-dan 9-a qədər rəqəmlərdir. scanf ("% lf", & d); // ikiqat məlumat daxiletməsini gözləyirik scanf ("% hd", & x); // qısa nömrəni gözləyin scanf ("% hu", & y); // işarəsiz qısa nömrə gözlənilir scanf ("lx", & z); // uzun bir int gözləyin

Yuxarıdakı nümunələrdən fərqli simvollardan istifadə edərək gözlənilən rəqəmin necə dəyişdiyini görə bilərsiniz.

scanf C - yeni başlayanlar üçün təsvir

Bu bölmə yeni başlayanlar üçün faydalı olacaq. Çox vaxt əlinizdə scanf C-nin tam təsviri deyil, funksiyanın necə işlədiyinin təfərrüatları olmalıdır.

  • Funksiya bir qədər köhnəlmişdir. Kitabxanaların müxtəlif versiyalarında bir neçə fərqli tətbiqetmə var. Məsələn, microsoft saytında tapıla bilən təkmilləşdirilmiş scanf S C funksiyası.
  • Formatdakı spesifikatorların sayı funksiyaya ötürülən arqumentlərin sayına uyğun olmalıdır.
  • Giriş axınının elementləri yalnız simvolları ayırmaqla ayrılmalıdır: boşluq, nişan, yeni sətir. Vergül, nöqtəli vergül, nöqtə və s. - bu simvollar scanf () funksiyası üçün ayırıcı deyil.
  • Əgər scanf ayırıcı simvolla qarşılaşarsa, daxiletmə dayandırılacaq. Oxumaq üçün birdən çox dəyişən varsa, scanf növbəti dəyişəni oxumağa davam edəcək.
  • Daxil edilən məlumatların formatında ən kiçik uyğunsuzluq proqramın gözlənilməz nəticələrinə gətirib çıxarır. Proqram sadəcə uğursuz olarsa yaxşıdır. Ancaq çox vaxt proqram işləməyə davam edir və səhv edir.
  • scanf ("% 20s ...", ...); Əgər daxiletmə axını 20 simvoldan çox olarsa, scanf ilk 20 simvolu oxuyacaq və ya çıxacaq, ya da göstərildiyi təqdirdə növbəti dəyişəni oxumağa davam edəcək. Bu halda, scanf-ə növbəti zəng, scanf-ə əvvəlki zəngin dayandığı yerdən daxil olan axını oxumağa davam edəcək. Əgər ilk 20 simvolu oxuyarkən ayırıcı simvolla rastlaşsanız, scanf ilk dəyişən üçün 20 simvolu saymasa belə, işləməyi dayandıracaq və ya növbəti dəyişəni oxumağa davam edəcək. Bu halda, bütün oxunmamış simvollar növbəti dəyişənə əlavə olunacaq.
  • Əgər skan ediləcək simvollar dəsti "^" simvolu ilə başlayırsa, o zaman scanf məlumatı ayırıcı simvol və ya dəstdən simvolla qarşılaşana qədər oxuyacaq. Məsələn, "% [^ A-E1-5]" A-dan E-yə qədər böyük ingilis hərflərindən biri və ya 1-dən 5-ə qədər rəqəmlərdən biri ilə qarşılaşana qədər axındakı məlumatları oxuyacaq.
  • Scanf C funksiyası təsvirə görə dəyişənlərə uğurlu girişlərin sayına bərabər ədəd qaytarır. scanf 3 dəyişən yazırsa, o zaman funksiyanın uğurlu işləməsinin nəticəsi 3 rəqəmini qaytaracaq. Əgər scanf dəyişənlərdən heç birini yaza bilmədisə, nəticə 0 olacaq. Və nəhayət, scanf işləməyə başlaya bilmədi hamısı nədənsə nəticə EOF olacaq ...
  • Əgər scanf () funksiyası öz işini səhv başa vurubsa. Məsələn, scanf ("% d", & x) - rəqəm gözlənilirdi, lakin simvollar qəbul edildi. Növbəti scanf () çağırışı əvvəlki funksiya çağırışının bitdiyi giriş axınının nöqtəsində başlayacaq. Bu problemi aradan qaldırmaq üçün problemli simvollardan xilas olmaq lazımdır. Bu, məsələn, scanf ("% * s") çağırmaqla edilə bilər. Yəni funksiya simvol sətirini oxuyacaq və onu atacaq. Bu çətin şəkildə tələb olunan məlumatları daxil etməyə davam edə bilərsiniz.
  • Scanf () funksiyasının bəzi tətbiqləri simvol dəstində "-" işarəsinin skan edilməsinə icazə vermir.
  • % c spesifikatoru axındakı hər simvolu oxuyur. Yəni ayırıcı simvolu da oxuyur. Siz ayırıcı simvolu atlamaq və istədiyiniz simvolu oxumağa davam etmək üçün “% 1s” istifadə edə bilərsiniz.
  • "c" spesifikatorundan istifadə edərkən, "% 10c" enindən istifadə etməyə icazə verilir, lakin sonra char tipli elementlər massivi dəyişən kimi scanf funksiyasına ötürülməlidir.
  • "%" "İngilis əlifbasının bütün kiçik hərfləri" deməkdir və "%" yalnız 3 simvol deməkdir: 'z', 'a', '-'. Başqa sözlə, "-" simvolu yalnız düzgün ardıcıllıqda olan iki simvol arasında olduqda diapazon deməkdir. Əgər “-” ifadənin sonunda, əvvəlində və ya hər iki tərəfindəki simvolların səhv ardıcıllığındadırsa, o, diapazon deyil, sadəcə defis simvoludur.

Nəticə

Bununla scanf C-nin təsviri yekunlaşır. Bu, kiçik proqramlarda işləmək və prosedur proqramlaşdırmadan istifadə etmək üçün gözəl lazımlı funksiyadır. Bununla belə, əsas çatışmazlıq scanf istifadə edərkən baş verə biləcək gözlənilməz səhvlərin sayıdır. Buna görə də, proqramlaşdırma zamanı scanf C-nin təsviri ən yaxşı şəkildə gözləriniz qarşısında saxlanılır. Böyük peşəkar layihələrdə iostreams istifadə olunur, çünki onlar daha yüksək səviyyəli imkanlara malikdirlər, səhvləri tutmağa və idarə etməyə daha yaxşı imkan verir, həmçinin əhəmiyyətli miqdarda məlumatlarla işləyirlər. Onu da qeyd etmək lazımdır ki, scanf C-nin rus dilində təsviri bir çox şəbəkə mənbələrində, eləcə də funksiyanın yaşı ilə əlaqədar onun istifadə nümunələrində mövcuddur. Buna görə də, lazım gələrsə, həmişə tematik forumlarda cavab tapa bilərsiniz.

C++ proqramlaşdırma dilinin əsaslarını və incəliklərini öyrənmək. Praktik tapşırıqlar və testlər olan dərslik. Proqramlamağı öyrənmək istəyirsiniz? Onda doğru yerdəsiniz - burada pulsuz proqramlaşdırma təlimi. Təcrübəli olub-olmamağınızın fərqi yoxdur, bu proqramlaşdırma dərsləri müxtəlif inkişaf mühitlərində C++ proqramlarını qurmağa, tərtib etməyə və sazlamağa başlamağınıza kömək edəcək: Visual Studio, Code :: Blocks, Xcode və ya Eclipse.

Çoxlu nümunələr və ətraflı izahatlar. Həm yeni başlayanlar (dummies), həm də daha inkişaf etmişlər üçün mükəmməldir. Hər şey sıfırdan ən təfərrüatlarına qədər izah olunur. Bu dərslər (200+) sizə təkcə C++ dilində deyil, həm də digər proqramlaşdırma dillərində proqramlaşdırmanı başa düşmək üçün yaxşı baza/təməl verəcəkdir. Və tamamilə pulsuzdur!

O, həmçinin C++ dilində oyunun addım-addım yaradılmasını, SFML qrafik kitabxanasını və C++ dilində bacarıq və biliklərinizi yoxlamaq üçün 50-dən çox tapşırığı əhatə edir. Əlavə bir bonusdur.

Repost üçün +20 karma və təşəkkür edirəm!

Fəsil № 0. Giriş. İşin başlanğıcı

Fəsil № 1. C ++ Əsasları

Fəsil № 2. C++ dilində dəyişənlər və əsas məlumat növləri

Fəsil № 3. C++ dilində operatorlar

Fəsil № 4. C++ dilində əhatə dairəsi və digər dəyişən növləri

Fəsil № 5. Proqramda kodun icra qaydası. C++-da döngələr, filiallar

C / C ++ Standart Kitabxanası konsola oxumaq və yazmaq üçün bir sıra funksiyaları ehtiva edir (klaviatura və monitor). Bu funksiyalar verilənləri sadə simvol axını kimi oxuyur və yazır.

Proqramlaşdırmada istifadə olunan axın (axın) anlayışı sözün adi, gündəlik başa düşülməsi ilə sıx bağlıdır. Giriş axını suyun (informasiyanın) hovuza daxil olduğu boru ilə müqayisə edilə bilər (kompüter yaddaşı), çıxış axını suyun hovuzdan çıxdığı boruya bənzəyir. Bu borunun mühüm xüsusiyyəti məlumatların bir anda yalnız bir istiqamətdə hərəkət edə bilməsidir. Eyni borudan giriş və çıxış üçün istifadə olunsa belə, bu, eyni vaxtda baş verə bilməz: axının istiqamətini dəyişdirmək üçün onu dayandırmaq, bəzi tədbirlər görmək və yalnız bundan sonra axını əks istiqamətə yönəltmək lazımdır. . Axının başqa bir xüsusiyyəti, demək olar ki, heç vaxt qurudulmamasıdır. Bəzən quruyur, lakin sistem normal işləyirsə bu müddət uzun ola bilməz.

Standart çıxış funksiyası printf ()

printf () funksiyası standart çıxış funksiyasıdır. Bu funksiyadan istifadə edərək simvol sətrini, nömrəni, dəyişən dəyərini göstərə bilərsiniz ...

printf () funksiyasının stdio.h faylında prototipi var
int printf (char * nəzarət sətri, ...);

Uğurlu olarsa, printf () funksiyası çap edilmiş simvolların sayını qaytarır.

İdarəetmə sətri iki növ məlumatdan ibarətdir: birbaşa ekrana çap olunan simvollar və arqumentlərin necə göstəriləcəyini təyin edən format təyinediciləri.

printf () funksiyası formatlaşdırılmış çıxış funksiyasıdır. Bu o deməkdir ki, funksiyanın parametrlərində siz çıxarılacaq məlumatların formatını təyin etməlisiniz. Məlumat formatı format təyinediciləri ilə göstərilir. Format spesifikatoru % simvolu və ardınca format kodu ilə başlayır.

Format təyinediciləri:

% ilə simvolu
% d tam onluq
% i tam onluq
% e x.xx e + xx şəklində onluq ədəd
% E x.xx E + xx şəklində onluq ədəd
% f
% F ondalık üzən nöqtə xx.xxxx
% g % f və ya % e, hansı daha qısadır
% G % F və ya % E, hansı daha qısadır
% o səkkizlik say
% s simvol sətri
% u işarəsiz onluq ədəd
% x hexadecimal ədəd
% X hexadecimal ədəd
%% simvol %
% səh göstərici
% n göstərici

Bundan əlavə, l və h dəyişdiriciləri format əmrlərinə tətbiq edilə bilər.

% ld uzun int çap
% hu qısa imzasız çap
% Lf uzun ikiqat çap

Format təyinedicisində% simvolundan sonra dəqiqlik (onluq nöqtədən sonrakı rəqəmlərin sayı) göstərilə bilər. Dəqiqlik aşağıdakı kimi təyin edilir:% .n<код формата>... Burada n onluq nöqtədən sonrakı rəqəmlərin sayıdır və<код формата>- yuxarıdakı kodlardan biri.

Məsələn, əgər float tipli x = 10.3563 dəyişənimiz varsa və biz onun dəyərini onluq nöqtədən sonra 3 rəqəmə qədər dəqiqliklə göstərmək istəyiriksə, onda yazmalıyıq:

printf ("Dəyişən x =% .3f", x);

Nəticə:
Dəyişən x = 10.356

Siz həmçinin minimum çap oluna bilən kənarı təyin edə bilərsiniz. Əgər sətir və ya nömrə göstərilən sahə genişliyindən böyükdürsə, bütün sətir və ya nömrə çap olunur.

Məsələn, yazsanız:

printf ("% 5d", 20);

onda nəticə aşağıdakı kimi olacaq:
20

Qeyd edək ki, 20 rəqəmi sətrin əvvəlindən çap olunmayıb. Əgər sahənin istifadə olunmamış boşluqlarının sıfırlarla doldurulmasını istəyirsinizsə, o zaman sahə eninin qarşısına 0 simvolunu qoymalısınız.

Misal üçün:

printf ("% 05d", 20);

Nəticə:
00020

Məlumat formatının spesifikatorlarına əlavə olaraq, idarəetmə sətirində nəzarət simvolları ola bilər:

\ b BS, dib
\ f Yeni səhifə, səhifə tərcüməsi
\ n Yeni xətt, xətt lenti
\ r Vaqonun qaytarılması
\ t Üfüqi nişan
\ v Şaquli nişan
\" İkiqat sitat
\" Apostrof
\\ Əks kəsişmə
\0 Null simvol, boş bayt
\ a Siqnal
\ N Səkkizlik sabit
\ xN Onaltılıq sabit
\? Sual işarəsi

Çox vaxt \ n simvolundan istifadə edəcəksiniz. Bu nəzarət simvolu ilə siz yeni bir xəttə budaqlana bilərsiniz. Nümunə proqramlara baxın və hər şeyi başa düşəcəksiniz.

Proqramların nümunələri.

/ * Nümunə 1 * /
#daxildir

əsas boşluq (boş)
{
int a, b, c; // a, b, c dəyişənlərinin elan edilməsi
a = 5;
b = 6;
c = 9;
printf ("a =% d, b =% d, c =% d", a, b, c);
}

Proqramın nəticəsi:
a = 5, b = 6, c = 9

/ * Nümunə 2 * /
#daxildir

əsas boşluq (boş)
{
float x, y, z;

X = 10,5;
y = 130,67;
z = 54;

Printf ("Obyekt koordinatları: x:%. 2f, y:%. 2f, z:%. 2f", x, y, z);
}

Proqramın nəticəsi:
Obyekt koordinatları: x: 10,50, y: 130,67, z: 54,00

/ * Nümunə 3 * /
#daxildir

əsas boşluq ()
{
int x;

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

Proqramın nəticəsi:
x = 10

/ * Nümunə 4 * /
#daxildir

əsas boşluq (boş)
{
printf ("\" Mətn dırnaq içərisində \ "");
printf ("\ nOksigen tərkibi: 100 %%");
}

Proqramın nəticəsi:
"Mətn dırnaq işarəsi"
Oksigen tərkibi: 100%

/ * Nümunə 5 * /
#daxildir

əsas boşluq (boş)
{
int a;

A = 11; // 11 onluq b onaltılığa bərabərdir
printf ("a-dec =% d, a-hex =% X", a, a);
}

Proqramın nəticəsi:
a-dec = 11, a-hex = b

/ * Nümunə 6 * /
#daxildir

əsas boşluq (boş)
{
char ch1, ch2, ch3;

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

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

Proqramın nəticəsi:
ABC

/ * Nümunə 7 * /
#daxildir

əsas boşluq (boş)
{
char * str = "Mənim sətirim.";

Printf ("Bu% s", str);
}

Proqramın nəticəsi:
Bu Mənim xəttimdir.

/ * Nümunə 8 * /
#daxildir

əsas boşluq (boş)
{
printf ("Salam! \ n"); // Çapdan sonra yeni sətir olacaq - \ n
printf ("Mənim adım Paveldir."); // Bu yeni sətirdə çap olunacaq
}

Proqramın nəticəsi:
Salam!
Mənim adım Paveldir.

Scanf () standart giriş funksiyası

scanf () funksiyası formatlaşdırılmış giriş funksiyasıdır. Onun köməyi ilə standart daxiletmə qurğusundan (klaviaturadan) məlumat daxil edə bilərsiniz. Daxil edilən məlumatlar tam ədədlər, üzən nöqtəli ədədlər, simvollar, sətirlər və göstəricilər ola bilər.

scanf () funksiyası stdio.h faylında aşağıdakı prototipə malikdir:
int scanf (char * nəzarət sətri);

Funksiya dəyərin təyin olunduğu dəyişənlərin sayını qaytarır.

İdarəetmə sətri üç növ simvoldan ibarətdir: format təyinediciləri, boşluqlar və digər simvollar. Format təyinediciləri % simvolu ilə başlayır.

Format təyinediciləri:

Scanf () funksiyasından (format təyinedicisi% s) istifadə edərək sətir daxil edərkən sətir birinci boşluqdan əvvəl daxil edilir !! olanlar. "Salam dünya!" xəttinə daxil olsanız. scanf () funksiyasından istifadə etməklə


scanf ("% s", küç);

sonra daxil edildikdən sonra str massivində saxlanacaq nəticə sətir bir "Salam" sözündən ibarət olacaq. FUNKSİYA BİRİNCİ BOŞLUĞUN ƏVVƏLİNƏ SƏTİR DAXİL EDİR! Boşluqlu sətirləri daxil etmək istəyirsinizsə, funksiyadan istifadə edin

char * alır (char * buf);

gets () funksiyası ilə siz tam sətirləri daxil edə bilərsiniz. Gets () funksiyası yeni sətir simvolu (\ n) görünənə qədər klaviaturadan simvolları oxuyur. Enter düyməsini basdığınız zaman yeni sətir simvolu görünür. Funksiya buf-a göstərici qaytarır. buf giriş sətri üçün buferdir (yaddaş).

gets () bu məqalənin əhatə dairəsindən kənarda olsa da, klaviaturadan bütün sətri daxil etməyə və onu ekranda göstərməyə imkan verən nümunə proqramı yazaq.

#daxildir

əsas boşluq (boş)
{
char bufer; // giriş sətri üçün massiv (bufer).

Alır (bufer); // sətir daxil edin və enter düyməsini basın
printf ("% s", bufer); // daxil edilmiş sətri ekranda göstərin
}

Başqa bir vacib qeyd! Scanf () funksiyasından istifadə edərək verilənləri daxil etmək üçün ona dəyişənlərin özləri deyil, parametrlər kimi dəyişənlərin ünvanlarını ötürmək lazımdır. Dəyişənin ünvanını əldə etmək üçün dəyişənin adının qarşısına & (ampersand) işarəsini qoymaq lazımdır. & işarəsi ünvanı götürmək deməkdir.

Ünvan nə deməkdir? Mən izah etməyə çalışacağam. Proqramda bir dəyişən var. Dəyişən öz dəyərini kompüterin yaddaşında saxlayır. Beləliklə, & ilə əldə etdiyimiz ünvan dəyişənin dəyərinin saxlandığı kompüter yaddaşında olan ünvandır.

Necə istifadə edəcəyimizi göstərən nümunə proqrama nəzər salaq.

#daxildir

əsas boşluq (boş)
{
int x;

Printf (“X dəyişənini daxil edin:”);
scanf ("% d", & x);
printf ("Dəyişən x =% d", x);
}

İndi yenidən scanf () idarəetmə xəttinə qayıdaq. Yenidən:

int scanf (char * nəzarət sətri);

İdarəetmə xəttindəki boşluq simvolu giriş axınındakı bir və ya daha çox boşluğu atlamağı əmr edir. Boşluğa əlavə olaraq, nişan və ya yeni sətir simvolu qəbul edilə bilər. Sıfırdan fərqli simvol bu simvolun oxunduğunu və silinməsini göstərir.

Daxil edilmiş iki ədəd arasındakı ayırıcılar boşluq, nişan və ya yeni sətirdir. % -dən sonra və format kodundan əvvəl * işarəsi (format təyinedicisi) göstərilən tipli məlumatları oxumağı əmr edir, lakin bu dəyəri təyin etmir.

Misal üçün:

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

50 + 20 yazmaq i-ni 50, j-ni 20-yə təyin edəcək və + oxunacaq və nəzərə alınmayacaq.

Format əmri oxunacaq ən böyük sahə enini təyin edə bilər.

Misal üçün:

scanf ("% 5s", küç);

giriş axınından ilk 5 simvolun oxunub oxunmayacağını göstərir. 1234567890ABC daxil etsəniz, str massivində yalnız 12345 olacaq, qalan simvollar nəzərə alınmayacaq. Ayırıcılar: boşluq, nişan və yeni sətir - yazıldıqda, bütün digər simvollar kimi istifadə olunur.

Nəzarət sətirində hər hansı digər simvol aşkar edilərsə, onlar müvafiq simvolu müəyyən etmək və keçmək üçün nəzərdə tutulub. Operator tərəfindən 10plus20 simvol axını

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

x-i 10-a, y-ni 20-yə təyin edəcək və idarəetmə xəttində göründüyü üçün plus simvollarını atlayacaq.

Scanf () funksiyasının güclü xüsusiyyətlərindən biri skanset təyin etmək qabiliyyətidir. Axtarış dəsti scanf () funksiyası tərəfindən oxunan simvollarla müqayisə ediləcək simvol dəstini müəyyən edir. Scanf () funksiyası simvolları axtarış dəstində baş verdiyi müddətcə oxuyur. Daxil edilmiş simvol axtarış dəstində görünməyən kimi scanf () funksiyası növbəti format təyinedicisinə keçir. Axtarışlar dəsti kvadrat mötərizə içərisində olan simvolların siyahısı ilə müəyyən edilir. Açıq mötərizədən əvvəl % işarəsi qoyulur. Buna bir nümunə ilə nəzər salaq.

#daxildir

əsas boşluq (boş)
{
char str1, str2;
scanf ("%% s", str1, str2);
printf ("\ n% s \ n% s", str1, str2);
}
Simvollar toplusunu təqdim edək:
12345abcdefg456

Ekranda proqram göstərilir:
12345
abcdefg456

Axtarışlar toplusunu təyin edərkən siz həmçinin intervalı, həmçinin giriş sahəsinin maksimum enini təyin etmək üçün defis simvolundan istifadə edə bilərsiniz.

scanf ("% 10", str1);

Axtarış dəstinə daxil olmayan simvolları da müəyyən edə bilərsiniz. Bu simvolların birincisindən əvvəl ^ işarəsi qoyulur. Simvol dəsti kiçik və böyük hərfləri fərqləndirir.

Nəzərinizə çatdırım ki, scanf () funksiyasından istifadə edərkən dəyişənlərin ünvanlarını parametr kimi ona ötürmək lazımdır. Yuxarıdakı kod yazılmışdı:

char küç; // 80 simvoldan ibarət massiv
scanf ("% s", küç);

Qeyd edək ki, str-dən əvvəl & yoxdur. Çünki str massivdir və massivin adı str massivin birinci elementinin göstəricisidir. Buna görə də & işarəsi istifadə edilmir. Biz artıq ünvanı scanf () -ə ötürürük. Yaxşı, sadə dillə desək, str kompüter yaddaşında massivin birinci elementinin dəyərinin saxlanacağı ünvandır.

Proqramların nümunələri.

Misal 1.
Bu proqram "Neçə yaşın var?:" sorğusunu göstərir və məlumatların daxil edilməsini gözləyir. Məsələn, 20 rəqəmini daxil etsəniz, proqramda "20 yaşınız var" sətri görünəcək. scanf () funksiyasını çağırarkən yaş dəyişəninin qarşısına & işarəsini qoyuruq, çünki scanf () funksiyası dəyişənlərin ünvanlarına ehtiyac duyur. Scanf () funksiyası daxil edilmiş dəyəri göstərilən ünvana yazacaq. Bizim vəziyyətimizdə daxil edilmiş dəyər 20 yaş dəyişəninin ünvanına yazılacaq.

/ * Nümunə 1 * /

#daxildir

əsas boşluq (boş)
{
int yaş;

Printf ("\ nNeçə yaşınız var?:");
scanf ("% d", & yaş);
printf ("Siz % d yaşındasınız.", yaş);
}

Misal 2.
Kalkulyator proqramı. Bu kalkulyator yalnız rəqəmlər əlavə edə bilər. 100 + 34 daxil etsəniz, proqram nəticə verəcəkdir: 100 + 34 = 134.

/ * Nümunə 2 * /

#daxildir

əsas boşluq (boş)
{
int x, y;

Printf ("\ nKalkulyator:");
scanf ("% d +% d", & x, & y);
printf ("\ n% d +% d =% d", x, y, x + y);
}

Misal 3.
Bu nümunə oxu genişliyini necə təyin edəcəyinizi göstərir. Bizim nümunəmizdə sahə eni beş simvoldur. Çox sayda simvol olan bir sətir daxil etsəniz, 5-dən sonrakı bütün simvollar silinəcəkdir. Scanf () funksiyasına edilən zəngə diqqət yetirin. & işarəsi massiv adı adından əvvəl gəlmir, çünki massiv adının adı massivdəki birinci elementin ünvanıdır.

/ * Nümunə 3 * /

#daxildir

əsas boşluq (boş)
{
simvol adı;

Printf ("\ nİstifadəçi adınızı daxil edin (5 simvoldan çox olmayan):");
scanf ("% 5s", ad);
printf ("\ n% s daxil etdiniz", ad);
}

Misal 4.
Bu məqalədəki son nümunə çoxlu axtarışlardan necə istifadə edə biləcəyinizi göstərir. Proqramı işə saldıqdan sonra 2-dən 5-ə qədər rəqəm daxil edin.

/ * Nümunə 4 * /

#daxildir

əsas boşluq (boş)
{
char bal;

Printf ("Reytinqiniz 2,3,4,5:");
scanf ("%", & bal);
printf ("\ nQiymətləndirmə% c", bal);
}

C++ proqramlaşdırma dili

Son yenilənmə: 28/08/2017

C++ proqramlaşdırma dili yüksək səviyyəli, statik tipli, ümumi təyinatlı tərtib edilmiş proqramlaşdırma dilidir və geniş çeşidli proqramların qurulması üçün uyğundur. Bu gün C++ ən populyar və geniş yayılmış dillərdən biridir.

Onun kökləri 1969-1973-cü illərdə Bell Labs-da proqramçı Dennis Ritchie tərəfindən hazırlanmış C dilindədir. 1980-ci illərin əvvəllərində o zaman Bell Labs-da olan danimarkalı proqramçı Bjarne Stroustrup C dilinin genişləndirilməsi kimi C++-ı inkişaf etdirdi. Əslində, başlanğıcda C ++ sadəcə C dilini bəzi obyekt yönümlü proqramlaşdırma imkanları ilə tamamlayırdı. Beləliklə, Stroustrup özü əvvəlcə onu "C sinifləri ilə" adlandırdı.

Sonradan yeni dil populyarlıq qazanmağa başladı. Ona yeni funksiyalar əlavə edildi ki, bu da onu sadəcə C-yə əlavə deyil, tamamilə yeni proqramlaşdırma dili etdi. Nəticədə "C with Classes" C ++ adlandırıldı. Və o vaxtdan hər iki dil bir-birindən asılı olmayaraq inkişaf etməyə başladı.

C ++ güclü bir dildir, C-dən zəngin yaddaş imkanlarını miras alır. Buna görə də, C ++ tez-tez sistem proqramlaşdırmasında, xüsusən də əməliyyat sistemləri, drayverlər, müxtəlif kommunal proqramlar, antiviruslar və s. Yeri gəlmişkən, Windows daha çox C++ dilində yazılır. Lakin bu dilin istifadəsi təkcə sistem proqramlaşdırması ilə məhdudlaşmır. C ++ sürət və performansın vacib olduğu istənilən səviyyəli proqramlarda istifadə edilə bilər. Çox vaxt qrafik proqramların, müxtəlif tətbiqi proqramların yaradılması üçün istifadə olunur. Bundan əlavə, zəngin vizualizasiya ilə oyunlar yaratmaq üçün xüsusilə tez-tez istifadə olunur. Bundan əlavə, son vaxtlar mobil istiqamət genişlənməkdədir, burada C++ da öz tətbiqini tapmışdır. Və hətta veb inkişafında veb proqramlar və ya veb proqramlara xidmət edən bir növ köməkçi xidmətlər yaratmaq üçün C ++ istifadə etmək də mümkündür. Ümumiyyətlə, C++, demək olar ki, hər cür proqramı yarada biləcəyiniz geniş istifadə olunan bir dildir.

C ++ tərtib edilmiş bir dildir, yəni kompilyator C ++ mənbə kodunu maşın təlimatları toplusunu ehtiva edən icra edilə bilən fayla çevirir. Ancaq müxtəlif platformaların öz xüsusiyyətləri var, buna görə tərtib edilmiş proqramları sadəcə bir platformadan digərinə köçürmək və orada işlətmək olmaz. Bununla belə, mənbə kodu səviyyəsində C++ proqramları, cari OS-yə xas olan bəzi funksiyalardan istifadə edilmədiyi halda, əsasən portativdir. Və demək olar ki, bütün ümumi platformalar üçün kompilyatorların, kitabxanaların və inkişaf alətlərinin olması sizə eyni C++ mənbə kodunu bu platformalar üçün tətbiqlərə tərtib etməyə imkan verir.

C-dən fərqli olaraq, C++ proqramı qarşılıqlı əlaqədə olan siniflər və obyektlərin toplusu kimi təqdim edən obyekt yönümlü üslubda proqramlar yazmağa imkan verir. Bu, böyük proqramların qurulmasını asanlaşdırır.

İnkişafın əsas mərhələləri

1979-80-ci illərdə Bjarne Stroustrup C dilinin genişləndirilməsini - "C sinifləri ilə" inkişaf etdirdi. 1983-cü ildə dil C++ adlandırıldı.

1985-ci ildə C++ dilinin ilk kommersiya versiyası, həmçinin rəsmi standart olmadığı halda bu dilin ilk təsvirini təqdim edən “C++ Proqramlaşdırma Dili” kitabının ilk nəşri buraxıldı.

1989-cu ildə bir sıra yeni funksiyaları özündə cəmləşdirən C++ 2.0 dilinin yeni versiyası buraxıldı. Bundan sonra dil 2011-ci ilə qədər nisbətən yavaş inkişaf etdi. Ancaq eyni zamanda, 1998-ci ildə dili standartlaşdırmaq üçün ilk cəhd ISO (Beynəlxalq Standartlaşdırma Təşkilatı) tərəfindən edildi. İlk standart ISO / IEC 14882: 1998 və ya qısaca C ++ 98 adlandırıldı. Daha sonra 2003-cü ildə C++ 03 standartının yeni versiyası nəşr olundu.

2011-ci ildə bir çox əlavələri ehtiva edən və C ++ dilini çoxlu sayda yeni funksiyalarla zənginləşdirən yeni C ++ 11 standartı nəşr olundu. Bundan sonra, 2014-cü ildə, C ++ 14 kimi tanınan standarta kiçik bir əlavə buraxıldı. Və dilin başqa bir əsas buraxılışı 2017-ci ilə planlaşdırılıb.

Kompilyatorlar və inkişaf mühitləri

C++ proqramlarını inkişaf etdirmək üçün sizə kompilyator lazımdır – o, C++ mənbə kodunu icra edilə bilən fayla çevirir, sonra onu işlədə bilərsiniz. Amma hazırda çoxlu müxtəlif kompilyatorlar var. Onlar müxtəlif aspektlərdə, xüsusən də standartların həyata keçirilməsində fərqlənə bilər. C++ üçün tərtibçilərin əsas siyahısını Vikipediyada tapmaq olar. İnkişaf üçün bütün ən son standartları hazırlayan və tətbiq edən kompilyatorları seçmək tövsiyə olunur. Beləliklə, bu dərslik boyu GNU Layihəsi tərəfindən hazırlanmış pulsuz g ++ kompilyatoru ilk növbədə istifadə olunacaq.

Proqram yaratmaq üçün Visual Studio, Netbeans, Eclipse, Qt və s. kimi IDE-lərdən də istifadə edə bilərsiniz.