Ќазаќстан Республикасы
Білім жєне ѓылым министрлігі
“Сырдария” университеті
“Физика-информатика” факультеті
“Информатика” кафедрасы
“СИ программалау тілі” пєні бойынша
050602, 050111 - «Информатика» мамандықтарыныњ
студенттері ‰шін
ЛЕКЦИЯНЫЊ ЌЫСЌАША КУРСЫ
Жетісай-2007 ж
9. ЛЕКЦИЯ САБАЌТАРЫНЫЊ ЖОСПАРЫ
Лекция 1. Тақырыбы: Си программалау тілі туралы т‰сінік
(1 сағат)
-
Си программалау тілі және оның ерекшеліктері
-
Си программалау тілі элементтері
Пайдаланылатын әдебиеттер:
а) негізгі
1. К.Паппас, У.Мюррей “Программирование на С и С++”, Киев, 2000
2. А.Кетков, Ю.Кетков “Практика программирования Бейсик,
Си, Паскаль”, М.: 2001
б) қосымша
3. Шилдт Г. “Теория и практика С++”, Санкт-Петербург, 1996
4. Березин Б.И., Березин С.Б. “Начальный курс С и С++”, М.:1999
1. Си программалау тілі және оның ерекшеліктері
Єзіргі алгоритмдік тілдер ішінде Си программалыќ тілі µте кµп ерекшеліктерге ие кењ тараѓан тілдердіњ бірі есептеледі. Б±л тіл ж‰йелік программалыќ жасаќ (системное программирования ) мєселелерін (трансляторларды µњдеу, операциялыќ ж‰йе , экрандыќ интерфейс, аспаптыќ ќ±ралдар т.б.) шешуде ќолданылатын тиімді универсал алгоритимдік тіл.
Си тілініњ ерекшеліктерініњ бірі єр т‰рлі операциялардан ж‰йелер аралыќ, компютерлер аралыќ программаларды жоѓары дењгейде орындай алады.
Б±л тіл ж‰йелік программалардыњ жасаќшылар (системное программист) ‰шін ассемблер тілін ауыстырѓан тиімді.
Си тілініњ кей бір ерекшеліктеріне тоќталайыќ.
-
Си тілі кейбір тµменгі дењгейлік операцияларды (сонымен ќатар биттер ‰стінде операцияларды) іске асырады. Б±л операциялардыњ кейбіреулері тікелей машина командасыныњ талабына сай келеді.
-
Си тілі айнымалы жєне функциялыќ кµрсеткіш механизмдерін с‰еді. Кµрсеткіштер кейбір айнымалы немесе функциялардыњ (1) машина жадысыдаѓы адрестеріне (саќталѓан) арналѓан айнымалы. Б±л программист ‰шін машина жад адрестерімен тікелей ж±мыс істеу м‰мкіндіктерін береді.
-
Си тілі енгізу–шыѓару операторлары, жадты динамикалыќ бµлу процессорды басќару операторларын, операциялыќ ж‰йелерге арналѓан программаларды басќару м‰мкіндіктерін береді.
Си программалау тілі ењ алѓаш Б.Кернига жєне Д.Ритчи авторлыѓында 70 жылдар Bell Laboratories фирмасы жєрдемінде АЌШ–та жасаќталды. Б±л тіл сол кезде UNIX операциялыќ ж‰йеніњ пайдаланушылары ‰шін ќолайлы тіл болды.
2. Си программалау тілі элементтері
Компьютер пайдаланушы жазѓан программаныњ конструктив базасын си тілі элементтері арќылы т‰сінеді.
Си тілі элементі тµменгі бµліктерден т±рады.
-алфабит
-константалар
-идентификаторлар
-кілтті сµздер (ключевые слова )
-т‰сініктер (коментарий)
Си тілі компиляторы мєтіндік ќатарлар тізбегі арќылы си тілінде жазѓан программаларды бастапќы файл ретінде т‰сінеді. Єр бір ќатар жања ќатар басталысыменен аяќталады жєне ENTER клавишініњ басылуы - ќатар аяќталѓанын білдіреді.
Си тілі компиляторы программаларды ќатарлар тізбегі арќылы есептейді жєне лексема деп аталатын символдыќ топтар арќылы есептелген ќатарларды дамытады. Лексема б±л си тілі компиляторлары ‰шін µз алдына мєнге ие программа мєтінініњ бірлігі. ()операция белгісі константалар, идентификаторлар жєне кілтті сµздер (б±л бµлімде айтылѓан )лексемаларѓа мысал болады. Бµлушілер, мысалы, квадраттыќ жаќша ,фигуралыќ жаќша , шењберлі жаќша ( ), б±рышты жаќша жєне ‰тір де лексемаѓа мысал бола алады.
Алфабит.
Си тілі программасы екі символдар жиынынан пайдаланады: Си тілі символдар жиыны()єріптер,цифрлар жєне пунктуация белгілерінен (си тілі компилятор ‰шін аныќталатын мєнге ие) т±рады.Си тілініњ символ жиынын ќ±райтын синтаксистік символдар конструкциясы бірлестігі Си тілі программасын ќ±райды.
Єріптер жєне цифрлар.
Си тілі символдар жиыны латын алфабиті жєне араб цифрларынан т±рады.
-Латын бас єріптері А,В,С,D,E,F,G,…
-Латын кіші єріптері a,b,c,d,e,f,g,h,і,...
-10-дыќ цифрлар 0, 1, 2, 3,...
Єріптер мен цифрлар константа, идентификатор жєне кілтті сµздер ќ±растыруда ќолданылады.
Си тілі компиляторы латын бас жєне кіші єріптерін єр т‰рлі символ деп есептейді.
Лекция 2. Тақырыбы: С\С++ программалау тілінде алѓашќы программалар ќ±ру жєне олардыњ орындалуы.
(1 сағат)
1. Қарапайым программа құру
2. С\С++тілі компиляторы ќалай істейді?.
Пайдаланылатын әдебиеттер:
а) негізгі
1. К.Паппас, У.Мюррей “Программирование на С и С++”, Киев, 2000
2. А.Кетков, Ю.Кетков “Практика программирования Бейсик,
Си, Паскаль”, М.: 2001
б) қосымша
3. Шилдт Г. “Теория и практика С++”, Санкт-Петербург, 1996
4. Березин Б.И., Березин С.Б. “Начальный курс С и С++”, М.:1999
1. Қарапайым программа құру
Компьютер б‰гінгі к‰нде єр т‰рлі проблемаларды шешуге ќолданылатын ќолайлы машина болып есептеледі. Проблемаларды шешуге баѓытталѓан командалар жиынтыѓы алгоритм деп аталады. Алгоритм проблеманы шешу жолындаѓы орындалатын амалдар тізбегіне айтылады.
Алгоритм деп абстракт терминдермен баяндалады. Компьютерге т‰сінікті болу ‰шін алгоритм компьютер т‰сінетін тілге аударылу керек. Компьютер т‰сінетін жалѓыз тіл б±л машина тілі. Машина тілінде баяндалѓан программалар орындалатын (executable) программалар делінеді. Басќа тілдерде жазылѓан программалар орындалудан алдын машина тіліне аударылуы ќажет.
Машина тілі программистер ‰шін тіке ќолдануѓа µте ќиын. Машина тіліне ењ жаќын тіл б±л –мєліметтер ќоры ‰шін нотация жєне инструкция аттары менен ќамтамасыз ететін ассемблер тілі.
Б±л тіл ќолдану ‰шін ауыр тіл болып есептеледі. Жоѓары дењгейлі тілдер мысалы С/С++ программалау тілі алгоритімдердіњ орындалуына ќолайлы нотациялармен ќамтамасыз етіледі. Б±л програмистерді тµмен дењгейлі терминдерді ойлаудан азат етеді жєне оныњ орнына алгоритмдерге кµњіл бµлуге жєрдем етеді. Жоѓарѓы дењгейлі тілдерде жазылѓан программалар компилер (comiler) деп аталатын трансляторлар арќылы ассембер тіліне аударылады. Компилер істеген ассеблер кодтары кейінірек орындалатын программаѓа айналады.
Төменде С тілінде жазылған қарапайым программа келтірілген.
1. /*
* simple.c
* Cіздің алғашқы программаңыз
*/
2. #include
3. int main()
4. {
5. printf(“Caлем, досым!”);
6. return(0);
7. }
Профессионал программистер әрдайым программаны комментарийлермен (түсінік) бастайды (1). Түсінік /*-мен басталып, */-мен аяқталады. Бұлардың арасындағыларды компилятор оқымайды. Келесі қатар (2) препроцессор директивалары деп аталынатын компилятор командаларының бір түрі. Біздің жағдайда stdio.h библиотекалық файлында сақталынған программаның кодын директива тұрған орынға қою туралы компилятор нұсқау алады. Һ-кеңейтпесімен сақталынған файлдар атау файлдары деп аталады және онда функция прототиптері, әртүрлі тұрақтылар мен идентификаторлардың сипаттамалары бар. Мұндай информацияларды жеке файл ретінде сақтапқою әртүрлі программалардың бұл информацияларды пайдалануын жеңілдетеді.
Директивадан соң (3-7) функция блогы берілген. С тілінің барлық программаларында міндетті түрде main() функциясы бар. Программаның орындалуы осы функциядан басталып, return() инструкциясын шақырумен аяқталады. Int кілттік сөзі (main-ң сол жағындағы) main функциясының қайтаратын мәнінің типін білдіреді. Біздің жағдайда бүтін сан. Return инструкциясындағы 0 мәні программаның дұрыс аяқталғандығының белгісі ретінде қабылданады.
Main() функциясының денесі {} фигуралы жақшалары ішінде жазылады. Мұндай фигуралы жақшалар программада инструкциялар блоктарын ерекшелеп көрсету үшін де кеңнен қолданылады. Мысалы, бұл for циклінің не if шартының денесі болуы мүмкін.
Біздің жағдайда main() функциясының денесі return-нан бөлек, бір ғана командадан тұрады (5); printf функциясының прототипі stdio.h файлында берілген.
Енді С++ программалау тілінде қарапайым программа ќ±райыќ.
-
#include
int main (void)
{
cout<< “hello world\n”;
}
|
-
Б±л ќатар программадаѓы iostream.h файл таќырыбыныњ мазм±нын #include препроцессор директивін µз ішіне алады.
-
Б±л ќатар main аталатын функцияны аныќтайды. Функция нол болуы м‰мкін немесе µте кµп параметрлерге ие болуы м‰мкін. Параметрлер функция атынан соњ жаќша ішінде кµрсетіледі. Жаќша ішіндегі void сµзі main функцияныњ параметрі жоќ екендігін білдіреді. Функция ретурн типіне ие болуы м‰мкін. Б±л єрќашан функциядан алдын жазылуы ќажет. Main ‰шін ретурн типі int (б‰тін сандар). Барлыќ С++ программалары аныќ бір main функциясы болуы ќажет. Программаныњ орындалуы єрќашан main функциясынан басталады.
-
Б±л фигуралы жаќша main функциясы денесініњ басталуын білдіреді.
-
Б±л ќатардыњ басталуын білдіреді. Ќатар мєндерді жасайтын есептеулер этапына айтылады. Ќатардыњ єрќашан н‰ктелі ‰тір жєрдемінде аяќталады. “Hello world\n” сµзін cout шыѓару аѓымына жіберілуіне себепші болады. Сµз (string) бос ‰тір ішіне жазылатын символ дар жиынтыѓынан т±рады. Соњѓы сµз\n жања ќатардыњ басталуын білдіреді. Аѓым енгізу немесе шыѓаруды орындайтын объект есептеледі. сout б л С++ программасында стандарт шыѓару аѓымы. (Стандарт шыѓару кµбінесе компьтердіњ экранына шыѓару маѓынасын береді.) << символы болса, µзініњ сол жаѓындаѓы операндтарды шыѓару аѓымына жіберетін шыѓару операторын білдіреді. Б±л жаѓдайда Cout “Hello world\n” сµзін компьютер экранына жазылуына себепші болады.
-
Б±л фигуралы жаќша main функциясы денесініњ аяќталуын білдіреді.
2. С\С++тілі компиляторы ќалай істейді?.
С++ программалау тілінде жинау (compiling) этап номерлерінен т±рады.
-
С++ препроцессоры программа текстіне оќиды жєне арнайы преп-росессор директиві (мысалы: #include) жєрдемінде инструкцияларды (тапсырмаларды) орындайды. Нєтиже еш бір директивне ие емес программа текстіне µзгереді.
-
Кейін С++ компиляторы оны программа кодына аударады. Компилятор µз (машина немесе ассеблер) кодын µндіретін шын С++компиляторы немесе С кодына аударатын аудармашы болу м‰мкін. Кейінгі жаѓдайда С коды нєтижелері С компиляторы арќылы µз объект кодын істеуге µтеді. Кей кездері нєтиже кітапханаѓа баѓытталѓан программаларѓа арап толыќ орындал-мау да м‰мкін. Мысалы бірінші программада <<операторы ІО кітапханасында жайласќан.
-
Соњында бірлестіруші (linker) оларды кітапхана модулініњ объекті мен бірлестіре отырып, объект кодын толтырады. Соњѓы нєтиже орындалатын файл (executable file) келеді.
1 таблицада С++ трансляторы мен С++ компиляторын ж±мыс (этапы) реті бейнелеген. Практикада барлыѓы µте тез орындалѓандыќтан ќолданушы оны сезе алмайды.
С++ Translator
C Code
C Compiler
C++ Program
C++ Native Compiler
Object Code
Linker
Excutable
C++ Program
Figure I.I. C++ Compilation
Достарыңызбен бөлісу: |