C программалау тілі туралы



Жұмыс түрі:  Материал
Тегін:  Антиплагиат
Көлемі: 16 бет
Таңдаулыға:   
C программалау тілі
1. Программалау тілдерінің даму тарихы
Алғашқы компьютерлер пайда болды соңында Ұлы Отан Соғысының алдымен Америка Құрама Штаттарында, ал кейінірек КСРО. Бұл машиналар өздерін шешуге шектелген сынып есептерді.
Кодтау болды физикалық деңгейде. Алдымен бағдарламаның сақталған арналған перфокартах. Осылайша, процесс жөндеу бағдарламасын дейін өте көп уақыт. Кейінірек пайда болған магниттік таспалар және магниттік дискілер, бұл жеңілдетті міндетін төзімділік.
Соңында 1950 - 1960 жылдары пайда болып, программалау тілдері Fortran(FORmula TRANslation) және Cobol(COmmon Business Oriented Language) тілі-бағдарланған орындау жалпы экономикалық есептеулер.
В 1960-70 жылдары жазылған көптеген бағдарламалау тілдері. Әрбір программист придумывал өз тілін ынтымақтастықтың орнауын армандай отырып, өз аты мәңгі есте сақтау.
1970-ші жылдардың аяғында пайда болды, Паскаль, Модула, Си, олар кеңінен қолданылды.
Басында 1980-ші кеңінен дербес компьютерлер. Шамамен сол уақытта пайда болды тілі C++.
Әрине, C++ ең жақын тілінен С Тілін толық енгізіліп, C++, қалдырылса, барлық мүмкіндіктер тілі ретінде төмен деңгейде орындау үшін ең күрделі және әмбебап бағдарламалар. Басқа шабыт көзі болды, тіл Simula67; жерден заимствованы тұжырымдамасы сынып және туынды сынып виртуалды функциялары.
Атауы тіл C++ туындаған 1983 жылдың жазында. Нұсқаларын белгілі атпен C Сыныптармен пайдаланылады-1980 жылдан. Бастапқыда тілі пайда процесінде бағдарламасын құру событийно-басқарылатын симуляция үшін тамаша жыр еді тілі Simula67 еді, егер пайымдаулар тиімділігі. C Сыныптармен үшін пайдаланған негізгі жобалар бойынша сылтау ғана бағдарламаларында, сыни уақыт бойынша орындау мен көлемі пайдаланылатын жад. C++ алғаш рет пайда болып, топтан тыс автордың шілдеде 1983года, бірақ ол сол кездің өзінде-ақ іс жүзінде ерекшеленген жоқ қазіргі заманғы нұсқасы.
Атауы C++ ұсынылды Риком Масцитти бейнелейді және эволюциялық өзгерістерді тілімен C(++ - белгісі операторының инкрементации тілінде C).
Осылайша, эволюциясын тілдерді көрсетуге болады сызбасында:
Кодтары Ассемблеры Тілдері жоғары Объектілі-бағдарлы және деңгейлі модульдік бағдарламалау
2. Объектілі-бағытты бағдарламалау негіздері:
Объектілі-бағытталған бағдарламалау - бұл ең высокоуровневый түрі бағдарламалау қазіргі уақытта. Мұнда қолдау жетістіктерін, алдыңғы ұрпақтардың қосылған жаңа қасиеттері. Бұл жаңа қасиеттері іске асырады парадигму объектілі-бағдарланған бағдарламалау.
Объектілі-бағытталған программалау C++ мынадай негізгі кезеңдері бағдарламаларын әзірлеу.
Бірінші кезеңі болып табылады бөлу абстракций. Бөлу абстракций талдауды білдіреді пән, оның бағдарламасы жасалады, анықтау мақсатында негізгі объектілер пәндік, олардың қасиеттері арасындағы қарым-қатынастардың объектілері, сондай-ақ ықтимал операцияларды объектілері мен олардың құрамдас бөлігі.
Екінші кезең тұрады объектілерін типтеу және синтездеу абстрактілі мәліметтер типін.
Кезең көздейді анықтау, жаңа туынды типті деректер жиынтығын спецификалық функцияларды немесе операцияларды қолданылатын осы типтегі деректер болатындай мүмкіндігін араластыру немесе взаимозамены әр түрлі типтері.
Үшінші кезең болып табылады объектілік декомпозиция ретінде бөлу подтипов немесе подобъектов және олардың құрамдас бөліктерінің әрқайсысы үшін объектілер типі.
Төртінші кезең білдіреді композиционную иерархизацию объектілерін бөлуді родовидовых және композициялық қарым-қатынастар бақылау объектілері.
Нәтижесінде объектілі-бағдарланған тәсіл жобалау бағдарламаларын әзірлеу процесі бағдарламасын айналады процесі эволюциялық программалау, енгізу үшін қандай да бір бағдарламаға өзгерістер мен толықтырулар енгізу талап түбегейлі қайта қарау құрайтын оның алгоритмдері. Эволюциялық тәсілі бағдарламалау сүйенеді тұтастығын сақтау объектілерін, яғни, бағдарламаға өзгерістер енгізу қозғамауы тиіс ішкі ұйымдастыру, қолда бар онда.
Маңызды қасиеті объектілі-бағдарланған тілдер болып табылады әзірлеу және оларға бағдарламалар бойынша жұмыс істейтін жүйелерінде күрделі параллельді есептеу процестерін, бастапқыда тән техникалық құралдарға есептеу техникасы. Бұл қасиеті сүйенеді тұжырымдамасын белсенді және белсенді емес кезеңінде объектілерді жұмыс істеу бағдарламасы. Бір мезгілде белсенділігін түрлі нысандарын айналады ықтимал есебінен оларды қатаң типтеу және жабық өзгерістер үшін басқа да объектілері.
Бағдарламалау тілі C++ ие барлық негізгі қасиеттері тілдер, объектілі-бағдарланған бағдарламалау және айтарлықтай ерекшеленеді өз тұжырымдамасын базалық тілі C.
Бірнеше принциптер негізінде жатқан тілі C++:
1. Инкапсуляция - бұл бірлестігі туынды типті деректердің жиынтығымен, жұмыс барысында қолданылатын осы түріне бірыңғай сынып. Бұл функциялар енгізілген класс деп аталады әдістерімен сынып, деректер элементтері деректер, ал нақты өкілдері - сынып объектілерін сынып. Жабу деректер мен әдістерін, операция жасау осы деректермен жүреді, осылайша, көрсетуі еді тек белгілі бір объектілерге (бұл жағдайда тек қана объект осы түрлері).
2. Мұрагерлік - бұл қабілеті бір сынып қарызға негізгі қасиеттері, басқа сынып, атап айтқанда, әдістері, сынып және элементтері. Сынып, келесі қасиеттері деп аталады туынды, сынып, ұсынатын өз қасиеттері үшін мұрагерлік -- базалық. Механизмі мұрагерлік иерархиясын құруға мүмкіндік береді сынып, яғни, көп деңгейлі жүйесін сыныптар, байланысты бір-бірімен қатынасы мұрагерлік.
3. Полиморфизм - бұл мүмкіндігін анықтау функциялары, жұмыс істейтін әр түрлі типі бойынша деректер тізімдерімен параметрлер шегінде қандай да бір түрін алгоритмдер. Мұндай функциялар деп аталады, әдетте, виртуалды және жобаланады біраз отбасы аттас функцияларын жұмыс істейтін түрлі типтері. Механизмі, жүзеге асыратын таңдау қандай да бір нақты функцияларды бірі белгілі бір тобының аталады тетігін кеш байланыстыру, өйткені пайдаланылуы мүмкін орындау процесінде дайын.
3. Сыныптар
Орталық ұғымымен объектілі-бағдарланған программалау ұғымы болып табылады сынып. Ол іске асыруда негізгі қасиеттері: инкапсуляцию, мұрагерлік, полиморфизм.
Класс дегеніміз типі анықталған, пайдаланушы. Бұл түрі жиынтығын қамтиды өрістер деректер және функциялар үшін осы өріс.
Сынып жарияланады:
class класс атауы[: public аты базалық сынып]
{деректер өрісі
спецификатор қол жеткізу
функциялары};
Жатқызу айнымалы әлдебір типі деректерді анықтайды жады, выделяемую үшін осы айнымалы және жинағы операцияларды және функцияларды, қолданылатын қосымша айнымалы. Осы принциптерін іске асыру үшін типтерін айқындайтын пайдаланушы көмегімен жүзеге асырылады сынып.
Қол жеткізу Спецификаторы
Бірқатар себептер бойынша орынды болар еді шектеуге элементтеріне деректерді сынып оқушысы. Ең маңызды олардың жатады:
-- шектеу, деректерге қол жетімділікті сынып шеңберімен сол функцияларды, олар енгізілген программист бұл класс, мүмкіндік береді ауыздықтау бағдарламалық қателер іс жүзінде жұмыс басталғанға дейін;
-- сипаттамасы сынып бұл жағдайда пайдаланушыларға мүмкіндік береді сынып астам ғана танысуға жаңа кітапханалар сынып;
-- кезінде шектеу қолжетімділік оңайлатылады түзету бағдарламаларын, себебі оларды өзгерту жеткілікті түзету сипаттамасы сынып оқушылары мен функциялары болып табылатын оның мүшелері салмай өзгерістер орындарды бағдарламасы пайдаланылатын объектілер сынып оқушысы;
-- функционалдық ажырату сынып ж е ықтимал бағдарламалар әзірлеуді пайдаланатын тұжырымдамасын параллель процестер.
public
Осы спецификатором помечается тобы деректер және функциялар қол жетімді басқа да функциялар.
protected
Оларға қорғалған деректер және, мүмкін, қызметтері, қажеттілігі бар болса. Бұл элементтер ғана қол жетімді функцияларға мүшелеріне осы сынып және туынды оған сынып, яғни сынып оқушылары жарияланады өзіне қабылдағыштармен осы.
private
Қызмет етеді тапсырма үшін деректер мен функцияларын ғана қол жетімді функцияларға осы сынып. Бұл жеке деректер.
Әдепкі элементтері болып саналады жеке (private) сынып ашық (public), құрылымдар (сондай-ақ, бірлестіктің жатқызады сыныптары).
Сыныптар жақсы айқындайтын түрлер .h, ал іске файлда сол атымен, бірақ кеңейту .cpp немесе .c. Көбінесе сынып-бірлеп емес, анықталады, ал кітапхана құрылады.
Безендіру үшін мысал қарастырайық сынып оқушысы, құқық координату экранда:
void sety(int ny);
int Getx()
{return x;}
int Gety()
{return y;}
};
Мысалда пайдалана отырып спецификатор public, біз үшін ашық басқа да функцияларды әдістері сипатталған сыныпта.
Анықтау функциялары - мүшелері, сынып ішінде болады сипаттамасын сынып немесе одан тысқары жерде. Бірінші жағдайда функциясы болып саналады встраиваемой. Орнатылатын функция тән деп компилятор C++, обрабатывая сын-қатерлер осы функцияларды, алмастырады бір функцияны шақыру ретінде кіші, ал тікелей объектілік код, тиісті анықтау функциясы. Салдарынан айтқандарына, бағдарламашы тиіс екенін назарға құрамалы функциялары, әдетте, қысқа айқындау. Мысал ретінде келтіруге болады анықтау функциялары Getx (), Gety().
Анықтау үшін функциялары мүше сыныптан тыс сипаттау сынып анықтап, оның қандай бағдарламада кейін класын анықтау мүшесі, ол болып табылады.
void Location :: setx(int nx)
{x=nx;}
void Location :: sety(int ny)
{y=ny;}
Location :: Location (int _x, int _y)
{x=_x; y=_y;}
Операция рұқсат контекст (::) мүмкіндік береді көрсету компилятору, қай сыныптардан принадлежит анықталатын функция.
Аты-сынып жазылады анықтау үшін компилятор бір мәнді анықтады классу принадлежит бұл функция, өйткені функция - мүшелері әр түрлі сынып болуы мүмкін бірдей аттар.
Кезде сынып жүргізіледі нақты бөлу жад объектілері үшін, осы сынып оқушысы, ал құрылады тек жаңа туынды деректер типтері үшін пайдаланылады функциялары мүшелері - сынып оқушысы.
Үшін бастау үшін, нақты объектілерді қандай да бір сынып, бұл нысандар алдымен анықтау. Бұл ретте бағдарламасы қажет аты класс, объект, оның құрылуы тиіс, сондай-ақ аты-объектіні. Әр сынып болуы мүмкін еркін саны.
4. Конструкторлар және деструкторлар
Конструктор деп аталады функция-мүшесі сынып, ол бөледі жады астында деректер өрісі сынып жүргізеді, олардың инициализацию, т. е. салықтар бастауыш маңызы бар қаланың орнында хабарландырулар айнымалы.
Аты конструктордың атымен сәйкес келеді-сынып оқушысы. Мысалы, сыныпта Location конструктор бар келесі түрі: Location (int _x, int _y).
Конструктор қайтармайды ешқандай маңызы бар қаланың, тіпті void.
Аса маңызды қасиеттерінің бірі конструктор болып табылады, оны автоматты шақыру сипаттау кезінде кез-келген объектінің қандай да бір сынып пайдаланатын конструктор, алып тастайды бағдарламашы міндетін уақтылы қадағалау баптандыру жаңадан іске қосылатын объектілерін.
Жалпы жағдайда конструкторлар сынып болуы мүмкін тізім параметрлері кезінде керек болуы мүмкін баптандыру. Бұл ретте, программист міндетті қою тізімі баптандыру сипаттау кезінде әрбір жаңа объект.
Конструкторлар сыныпта көп болуы мүмкін. Бұл жағдайда тетігін іске асыруда шамадан тыс функциялар.
Егер конструктор емес жарияланды, компилятор жасайды конструкторы жоқ, әдепкі параметрлердің.
Хабарландыру объектілерін болады былайша суреттейді:
void main (void)
{Location NK(0,0), KAZAKH(10,10), *PL;
coutKK.Getx(); возвращаемое мәні : 10
PL=&NK;
coutPL-Gety(); возвращаемое мәні : 0
}
Мұнда жариялау кезінде NK(0,0) KK(10,10) неявно конструктор шақырылады.
coutKK.Getx() жүгіну арқылы переменную.
coutPL-Gety() жүгіну арқылы жүріп көрсеткіші.
Конструктор көшірмелерін
{Location A(1,1),B,D=A;
... }
Алдымен объект құрылады D және ол инициализируется мәні объектінің A. баптандыру Үшін қажет анық анықтау конструктор.
Бұл құрушы көшірмелерін ретінде параметр пайдаланылады қарапайым немесе константная сілтеме объект.
Location::Location([const]Location &S)
{x=S. x; y=S. y}
Әрқайсысы үшін объектілерді сынып тазалау кезінде жад компилятором құрылады деструктор әдепкі. Анықталады деструктор былайша: ~ аты. Аты деструктора сәйкес келеді атымен сынып, бірақ символы ~ (тильда) басында.
Деструктор шешеді кері конструктор міндетін, яғни тазартады жады.
Егер құрушы объект сұралатын динамикалық жады немесе файлын ашады, онда жойылған кезде объектіні қарастыру қажет қолданылу тазалау жад және жабу файл. Бұл жағдайда пайдаланушыға анықтау қажет деструктор. Бұл деструктор болады вызываться кезде нысанның көріну аудандары.
Жергілікті нысандар жойылады кезде олар шығып облысы көріну. Жаһандық объектілері жойылады аяқталған кезде.
5. Мұрагерлік
Қолданылатын C++ мұрагерлік - бұл, ол арқылы тетігі бар бір класс алады бермеді қасиеттері басқа. Мұрагерлік иерархиясын құруға мүмкіндік береді сынып, өту жалпы -- ден астам арнайы.
Класс қасиеттері мен мінез-құлқы оның мұраға қалдырылады деп аталады базалық сыныппен.
Сынып, транспондердің атайды деп аталады туынды сыныбы.
Әдетте, процесс мұрагерлік басталып, тапсырмалар базалық класс. Базалық класс анықтайды барлық қасиеттер, олар үшін ортақ барлық туынды оған сынып. Мәні, базалық класс білдіреді ең жалпы сипаттамасы бірқатар сипатты белгілері. Туынды класс транспондердің бұл жалпы шегін қосады қасиеттері, тән тек оған.
Мұрагерлік кезінде, онда бір базалық класс деп аталады қарапайым.
Егер көрсетіледі бірнеше сынып болса, онда мұрагерлік деп аталады множественным.
Хабарландыру келесі түрде көрінеді:
class класс атауы : public аты базалық сынып
Мысалы, class D: public A
{ ... }
Кейін сынып D бар қос нүкте, жөн кілт сөз public және аты-сынып A. компилятора бұл нұсқау, яғни класс D бермеді барлық компоненттері-сынып A. Өзі кілт сөз public хабарлайды компилятор деп, өйткені класс A наследоваться, демек, барлық ашық элементтері базалық класс сондай-ақ, ашық элементтері бар туынды сынып оқушысы. Алайда, барлық жабық элементтері базалық сынып қалады жабық және оларға емес, тікелей кіру туынды сынып оқушысы. Себебі, жабық мүшелері сынып айналуда үшін қолжетімсіз туынды сынып - қолдау инкапсуляция. Егер жабық мүшелері сынып ойынының ашық жай арқылы мұрагерлік осы сынып, инкапсуляция болар еді мүлдем несостоятельна.
Кезінде көп мұрагерлік хабарландыру көрінеді:
class D: public A [, public C]
{ денесін сынып D}
Қарастырайық мысал:
enum Bool
{false, true}; константалар келтіріледі -- int. Олар өзгеретін қадамы бірге тең деп.
class Point: public Location
{protected:
Bool vis;
public:
Point (int _x, int _y);
void Hide();
};
Point::Point (int_x, int_y) : Location(_x, _y)
{vis=false;}
Мұнда сынып Point транспондердің қасиеттері базалық сынып Location.
Мұраға қалдыру және кіруді бақылау
Спецификатор қол жеткізу анықтайды, онда элементтері базалық сынып мұраға қалдырылады туынды сыныбы. Егер спецификатором қол жеткізу мұраға қалдырылған базалық класс болып табылады кілт сөз public, онда барлық ашық мүшелері базалық сынып ашық қалып отыр және производном. Егер спецификатором қол жеткізу мұраға қалдырылған базалық класс болып табылады кілт сөз private болса, онда барлық ашық мүшелері базалық производном сыныпта айналады жабық. Екі жағдайда да барлық жабық мүшелері базалық класс производном сыныпта көлік қозғалысы үшін жабық және қол жетімсіз.
Маңызды түсіну егер спецификатором қол жеткізу болып табылады кілт сөз private болса, дегенмен ашық мүшелері базалық класс айналады жабық производном, олар қалады қол жетімді функциялар - мүшелер туынды сынып оқушысы.
Қол жеткізу өрістер базалық класс производном сыныпта сақталуы мүмкін немесе күшейтілді, бірақ ешқашан мүмкін жеңілдетіледі. Үшін мөлшелері елестету бұл қағида, кестеге назар аударайық:
Қол жеткізу
мұрагерлік
Кіру компоненттерін
базалық сыныпта
Қолжетімділік компоненттерін
базалық класс
производном сыныпта
public
private
protected
public
Жоқ қол жеткізу
protected
public
protected
private
protected
public
Жоқ қол жеткізу
protected
protected
private
private
protected
public
Жоқ қол жеткізу
private
private
6. This көрсеткіші
Функциясы тиесілі сыныбы шақырылады деректерді өңдеу үшін нақты объектіні, бұл функцияны автоматты түрде неявно беріледі көрсеткіші сол объект үшін оның функциясы туындады. Бұл көрсеткіш бар тіркелген аты this және білінбей үшін бағдарламашы (жасырын) анықталған әрбір функциясы сынып былайша:
имя_класса * const this=мекенжайы өңделетін объект;
Аты this болып табылады, қызметтік (түйінді) сөз. Анық сипаттау немесе анықтау this көрсеткіші болмайды және қажет емес. Сәйкес неявным ұйғарымымен this болып табылады константным көрсеткішімен, яғни оны өзгертуге болмайды, бірақ әрбір тиесілі сыныбы функциялары ол көрсетеді дәл сол объектіге, оның функциясы шақырылады. Деп this көрсеткіші болып табылады қосымша (жасырын) параметрі әрбір нестатической компоненттік функциялары. Басқа сөздермен айтқанда, кірген кезде денесі тиесілі сыныбы функциялары this көрсеткіші инициализируется мәнімен мекен-қатар отырған объектінің туындады функциясы. Нысан жолданады көрсеткішімен ... жалғасы

Сіз бұл жұмысты біздің қосымшамыз арқылы толығымен тегін көре аласыз.
Ұқсас жұмыстар
LINQ технологиясының ерекшеліктері мен қолданылуы
ОҚУШЫЛАРДЫҢ АЛГОРИТМДІК ОЙЛАУ ҚАБІЛЕТІН ОҚЫТУ МЕН ОНЫ ЖЕТІЛДІРУ
С++ тілінде диаграмма тұрғызу
Параметрлік программалау есептері
Жадыны динамикалық үлестіру
Java кең таралған программалау тілі
СИ бағдарламалау тілі және жобалануы туралы
Мектепте алгоритмдеу және Паскаль тілін оқыту әдістемесі
C Builder 6 ортасы және оның мүмкіндіктері
Си бағдарламалау тілі
Пәндер