osnovyiprogrammirovaniyanac
.pdfКОМПЬЮТЕРНЫЕ КУРСЫ
Основы
программирования на языке С+ +
Физтех-Колледж при М Ф Т И
Учебное пособие к курсу
Основы программирования на языке С++
Часть I. Издани е третье
Мунтян А.Ю.
Москва 2005
М у н т я н Александр Юрьевич . «Основы программирования на С + + , Част ь I».
Учебное пособие по курсу. © «Физтехшкола» 2005г. Редактор Воробьев А.В. На основе 2-го издания под Изосимовича Ильина.
Вашему вниманию предлагается 3-е издание курса лекций по программированию на языке C/C++, читаемого в Физтех-Колледже. Данный курс включает в себя два семестра. Настоящее пособие рассчитано на один семестр и посвящено изучению i
Хотя преподавание ведется на примере языка C/C++, многие рассматриваемые аспекты важны как для полноценного освоения современной компьютерной техники, так и для программирования вообще независимо от конкретного языка. И изменениями.
|
|
Оглавление |
|
|
|
|
Глава 1. Введение |
|
|
|
|
|
|
Глава 2.Алгоритмы 10 |
|
|
|
|
|
|
Глава 3. |
Графика |
|
|
|
|
17 |
Глава 4. |
Типы данных |
|
|
|
|
24 |
Глава 5. |
Ввод и вывод |
|
данных |
|
|
30 |
Глава 6. |
Условные операторы |
|
|
|
|
37 |
Глава 7. |
Циклические конструкции |
|
|
|
45 |
|
Глава |
8 . Оператор ы |
цикла |
while |
и |
do..while. |
53 |
Глава 9. |
Массивы |
|
|
|
|
60 |
Глава 10.Строги и указатели |
|
|
|
|
67 |
|
Глава 11.Функции |
|
|
|
|
75 |
|
Глава 12.Файлы |
|
|
|
|
81 |
|
Литература |
|
|
|
88 |
«
Глава 1
Введение
|
У в а ж а е м ы й |
читатель! |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
П р и м е н е н и е |
|
к о м п ь ю т е р о в |
во |
всех |
областях |
н а ш е й |
ж и з н и |
возрастает |
не |
только |
||||||||||||||||||||||||
благодаря |
их |
у н и к а л ь н ы м в о з м о ж н о с т я м , |
но |
также |
в |
связи |
с н е у к л о н н ы м у м е н ь ш е н и е м |
||||||||||||||||||||||||||||
р а з м е р о в |
Э В М |
и |
п а д е н и е м |
цен на них. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
|
К о м п ь ю т е р ы , |
|
к о т о р ы е |
25 |
лет |
назад |
занимали |
б о л ь ш и е |
п о м е щ е н и я |
и |
стоили |
||||||||||||||||||||||||
м и л л и о н ы |
долларов, |
|
сегодня |
могут |
быть |
з а м е н е н ы |
к р е м н и е в о й |
м и к р о с х е м о й |
размером |
||||||||||||||||||||||||||
м е н ь ш е |
ногтя, |
с т о я щ е й , |
в о з м о ж н о , всего |
н е с к о л ь к о |
долларов . И р о н и я |
судьбы |
заключается |
||||||||||||||||||||||||||||
в том, |
что |
к р е м н и й |
является |
одним |
из |
наиболее |
р а с п р о с т р а н е н н ы х |
на |
земле |
м а т е р и а л о в : |
|||||||||||||||||||||||||
он |
входит |
|
в состав обычного песка. |
|
Т е х н о л о г и я |
к р е м н и е в ы х |
|
м и к р о с х е м |
сделала |
||||||||||||||||||||||||||
в ы ч и с л е н и я |
|
настолько |
э к о н о м и ч н ы м и , |
что |
во |
всем |
м и р е |
используется |
|
около |
200 |
||||||||||||||||||||||||
м и л л и о н о в |
|
к о м п ь ю т е р о в |
|
общего |
н а з н а ч е н и я , |
п о м о г а ю щ и х |
|
л ю д я м |
в |
бизнесе, |
|||||||||||||||||||||||||
п р о и з в о д с т в е , |
у п р а в л е н и и |
|
и |
л и ч н о й |
ж и з н и . |
За |
н е с к о л ь к о |
лет |
|
это |
число |
легко |
может |
||||||||||||||||||||||
удвоиться . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
П о э т о м у |
так |
высока |
|
п о т р е б н о с т ь |
в |
специалистах, |
у м е ю щ и х |
писать |
компьютерные |
|||||||||||||||||||||||||
Программы |
- ц е л е н а п р а в л е н н ы е |
н а б о р ы |
и н с т р у к ц и й для |
к о м п ь ю т е р а . |
|
|
|
|
|
|
|||||||||||||||||||||||||
|
П р о г р а м м и с т ы |
используют |
разные |
я з ы к и п р о г р а м м и р о в а н и я . |
Н е к о т о р ы е |
и з них |
|||||||||||||||||||||||||||||
п о н я т н ы компьютеру, |
другие |
требуют |
предварительного |
п р е о б р а з о в а н и я |
в |
м а ш и н н ы й |
|||||||||||||||||||||||||||||
код. |
Сегодня |
существуют |
сотни я з ы к о в , |
и |
все |
их условно |
м о ж н о разделить |
на три группы*; |
|||||||||||||||||||||||||||
|
|
|
1. М а ш и н н ы е я з ы к и . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
2. |
Я з ы к и ассемблера. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
3 . |
Я з ы к и |
в ы с о к о г о |
уровня . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
Л ю б о й к о м п ь ю т е р |
может |
п о н и м а т ь |
л и ш ь |
свой |
с о б с т в е н н ы й |
|
машинный |
язык. |
||||||||||||||||||||||||||
М а ш и н н ы й |
|
я з ы к |
- |
|
это |
« п р и р о д н ы й |
язык» |
определенного компьютера . |
Он |
определяется |
|||||||||||||||||||||||||
при |
п р о е к т и р о в а н и и |
|
элементов |
этого |
к о м п ь ю т е р а . |
М а ш и н н ы е |
|
я з ы к и |
в |
общем |
случае |
||||||||||||||||||||||||
содержат |
строки |
|
чисел, |
|
к о т о р ы е |
я в л я ю т с я |
к о м а н д а м и |
к о м п ь ю т е р у |
на |
в ы п о л н е н и е |
|||||||||||||||||||||||||
б о л ь ш и н с т в а |
э л е м е н т а р н ы х |
|
о п е р а ц и й |
(сложение, у м н о ж е н и е , д е л е н и е |
и т.д.). |
М а ш и н н ы е |
|||||||||||||||||||||||||||||
я з ы к и машинно-зависимы, |
т.е. |
каждый |
из |
таких я з ы к о в |
может |
быть |
и с п о л ь з о в а н |
только |
|||||||||||||||||||||||||||
н а к о м п ь ю т е р е |
о п р е д е л е н н о г о |
типа . |
М а ш и н н ы е |
я з ы к и |
т я ж е л ы |
для |
человеческого |
||||||||||||||||||||||||||||
в о с п р и я т и я . |
К |
примеру, |
вот |
программа, |
которая |
складывает |
сверхурочную |
зарплату с |
|||||||||||||||||||||||||||
о с н о в н о й |
и |
|
з а п о м и н а е т результат |
к а к |
общую зарплату: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
+130004277 4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
+1400593419 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
+120027402 7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
Со |
|
в р е м е н е м |
|
стало |
о ч е в и д н о , |
что |
п р о г р а м м и р о в а н и е |
|
на |
|
м а ш и н н ы х |
языкгбс |
||||||||||||||||||||||
с л и ш к о м |
м е д л е н н о |
и |
утомительно для |
б о л ь ш и н с т в а |
п р о г р а м м и с т о в . |
|
Вместо |
строк чисел |
|||||||||||||||||||||||||||
п р о г р а м м и с т ы |
начали |
использовать |
а н г л и й с к и е |
аббревиатуры |
|
для |
представления |
||||||||||||||||||||||||||||
э л е м е н т а р н ы х о п е р а ц и й . |
Эти |
с о к р а щ е н и я |
с ф о р м и р о в а л и |
основу языков |
ассемблера. Для |
||||||||||||||||||||||||||||||
п р е о б р а з о в а н и я |
п р о г р а м м |
|
на |
я з ы к е ассемблера |
в |
м а ш и н н ы й |
|
код |
были |
р а з р а б о т а н ы |
|||||||||||||||||||||||||
с п е ц и а л ь н ы е |
п р о г р а м м ы |
- |
ассемблеры. |
С л е д у ю щ и й |
фрагмент |
п р о г р а м м ы |
на |
я з ы к е |
|||||||||||||||||||||||||||
ассемблера |
также |
|
складывает |
сверхурочную |
зарплату |
(overpay) |
с |
о с н о в н о й |
(basepay) |
и |
|||||||||||||||||||||||||
з а п о м и н а е т |
результат |
как |
общую |
зарплату |
(grosspay), |
но |
он |
более |
п о н я т е н |
по |
с р а в н е н и ю |
||||||||||||||||||||||||
со своим |
м а ш и н н ы м |
а н а л о г о м : |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
L O A D |
basepay |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
A D D |
overpay |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
S T O R E |
grosspay |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
Хотя |
такой |
код |
более |
п о н я т е н л ю д я м , |
он н е п о н я т е н к о м п ь ю т е р у до тех |
пор, п ока не |
||||||||||||||||||||||||||||
будет |
п р е о б р а з о в а н |
в |
м а ш и н н ы й код. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
И с п о л ь з о в а н и е |
к о м п ь ю т е р о в |
резко |
возросло |
с |
|
п о я в л е н и е м |
я з ы к о в |
ассемблера, |
но |
||||||||||||||||||||||||||||||
п р о г р а м м ы |
на |
этих |
языках |
все |
еще |
требовали |
много |
|
к о м а н д |
для |
р е ш е н и я |
даже |
простых |
||||||||||||||||||||||||||||
задач. |
Д л я |
у с к о р е н и я |
|
процесса |
п р о г р а м м и р о в а н и я |
|
были |
|
р а з р а б о т а н ы |
языки |
|
высокого |
|||||||||||||||||||||||||||||
уровня, |
в |
которых |
|
иногда |
достаточно |
н а п и с а т ь |
всего |
один |
оператор |
для |
р е ш е н и я |
реальной |
|||||||||||||||||||||||||||||
задачи. |
П р о г р а м м ы , |
к о т о р ы е |
преобразуют |
|
и н с т р у к ц и и |
на |
я з ы к а х высокого |
уровня |
в |
||||||||||||||||||||||||||||||||
м а ш и н н ы й |
код, |
|
н а з ы в а ю т с я |
компиляторами. |
П р о г р а м м а |
|
расчета |
|
зарплаты, |
н а п и с а н н а я |
на |
||||||||||||||||||||||||||||||
я з ы к е |
в ы с о к о г о уровня, |
может уложиться в одну строчку: |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
grosspay = basepay + overtimepay |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
|
|
Я з ы к и в ы с о к о г о |
уровня |
гораздо удобнее |
для |
п р о г р а м м и с т о в , |
чем |
я з ы к и |
ассемблера |
||||||||||||||||||||||||||||||||
и м а ш и н н ы й |
|
код. |
Н о , |
|
н е с м о т р я |
на |
это, |
|
л и ш ь |
н е м н о г и е |
из |
них |
получили |
|
ш и р о к о е |
||||||||||||||||||||||||||
п р и м е н е н и е . |
С + + |
- |
один |
из |
наиболее |
м о щ н ы х |
и |
наиболее |
р а с п р о с т р а н е н н ы х |
я з ы к о в |
|||||||||||||||||||||||||||||||
в ы с о к о г о |
уровня, |
это |
я з ы к , |
на |
к о т о р о м |
н а п и с а н о б о л ь ш и н с т в о |
самых п о п у л я р н ы х |
пакетов |
|||||||||||||||||||||||||||||||||
п р о г р а м м . И |
не |
остается |
с о м н е н и й |
в |
том, |
что |
С + + |
останется |
|
с а м ы м п о п у л я р н ы м |
я з ы к о м |
||||||||||||||||||||||||||||||
п р о г р а м м и р о в а н и я . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
П о ч е м у же С + + ? |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
П р о г р а м м ы на С + + легко |
переносить из о д н о й п р о г р а м м н о - а п п а р а т н о й с р е д ы в |
||||||||||||||||||||||||||||||||||||||
другую. |
Это |
|
значит, |
что |
|
если |
при |
н а п и с а н и и |
п р о г р а м м ы |
не |
используются |
б и б л и о т е к и , |
|||||||||||||||||||||||||||||
з а в и с я щ и е от к о н к р е т н о г о |
к о м п и л я т о р а , |
или |
о п е р а ц и и , |
э ф ф е к т и в н о с т ь |
которых |
зависит во |
|||||||||||||||||||||||||||||||||||
м н о г о м |
от |
о с о б е н н о с т е й |
|
твоего |
к о м п ь ю т е р а , |
то |
твоя |
п р о г р а м м а |
будет |
везде |
работать |
||||||||||||||||||||||||||||||
о д и н а к о в о п р а в и л ь н о . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
Функциональная |
|
расширяемость. |
П р о г р а м м и с т |
и м е е т |
в о з м о ж н о с т ь |
в н о с и т ь |
|||||||||||||||||||||||||||||||||
свои д о б а в л е н и я |
|
в |
я з ы к , |
что |
|
значительно |
р а с ш и р я е т |
в о з м о ж н о с т и |
при р е ш е н и и |
самых |
|||||||||||||||||||||||||||||||
р а з н о о б р а з н ы х |
задач. |
С + + |
рассчитан |
на |
р а с ш и р е н и е |
|
по |
своему |
замыслу, |
|
п о с к о л ь к у |
||||||||||||||||||||||||||||||
содержит |
н е б о л ь ш о е |
число |
операторов . С а м о е важное |
|
в |
программах |
на |
С + + заключено в |
|||||||||||||||||||||||||||||||||
ф у н к ц и я х , |
а я з ы к |
сам |
по |
себе |
не |
имеет |
других внутренних |
|
ф у н к ц и й , |
к р о м е |
о с н о в н о й |
||||||||||||||||||||||||||||||
ф у н к ц и и |
( ф у н к ц и и |
main) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
П р о г р а м м и с т а м |
|
о с о б е н н о |
н р а в и т с я |
краткость |
выражений, |
к о т о р ы м и |
в |
С + + |
|||||||||||||||||||||||||||||||
кодируются |
|
алгоритмы . |
|
|
Б о л ь ш и н с т в о |
|
операторов |
|
я з ы к а возвращают |
|
|
н е к о т о р ы е |
|||||||||||||||||||||||||||||
з н а ч е н и я , что |
позволяет |
представлять |
в ы р а ж е н и я в |
краткой |
ф о р м е . |
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||
|
|
С + + |
о б е с п е ч и в а е т |
ф о р м и р о в а н и е |
эффективного |
машинного |
кода п р о г р а м м ы , |
||||||||||||||||||||||||||||||||||
что |
достигается |
его |
п р и в я з к о й |
|
к о с о б е н н о с т я м |
архитектуры |
Э В М . |
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||
К р а т к а я и с т о р и я я з ы к а С + + |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
Я з ы к |
С |
был |
создан |
в начале 70-х |
|
годов Д э н н и с о м |
Р и т ч и , |
к о т о р ы й |
|
работал в |
|||||||||||||||||||||||||||||
к о м п а н и и Bell |
Telephone |
|
Laboratories. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
|
|
С |
был |
|
разработан |
|
как |
я з ы к |
для |
п р о г р а м м и р о в а н и я |
в н о в о й |
|
по |
тем |
в р е м е н а м |
||||||||||||||||||||||||||
о п е р а ц и о н н о й |
системе |
Unix . |
ОС |
Unix была н а п и с а н а на я з ы к е |
|
ассемблера для |
Э В М |
PDPr - |
|||||||||||||||||||||||||||||||||
7 |
и |
п е р е н е с е н а |
затем |
|
на |
P D P - 1 1 . |
На |
я з ы к |
С |
|
оказал |
з н а ч и т е л ь н о е |
в л и я н и е |
его |
|||||||||||||||||||||||||||
п р е д ш е с т в е н н и к , |
|
я з ы к |
В, |
с о з д а н н ы й |
К э н о м |
Т о м п с о н о м , |
|
к о т о р ы й , |
|
в |
свою |
очередь, |
|||||||||||||||||||||||||||||
является |
последователем |
я з ы к а |
|
B C P L . |
Я з ы к |
B C P L |
|
|
был создан |
в |
1969 |
г. |
|
М а р т и н о м |
|||||||||||||||||||||||||||
Р и ч а р д с о м |
|
в |
|
|
р а м к а х |
|
п р о е к т а |
|
"Комбинированный |
|
|
|
язык |
|
программирования" |
|
в |
||||||||||||||||||||||||
К е м б р и д ж с к о м университете в Л о н д о н е . |
Вскоре Unix |
была п е р е п и с а н а на я з ы к е |
С + + , |
и в |
|||||||||||||||||||||||||||||||||||||
1974 - |
75 годах |
ОС |
Unix |
|
ф и р м ы |
Bell |
Laboratories стала |
п е р в ы м к о м м е р ч е с к и м |
продуктом, |
||||||||||||||||||||||||||||||||
р е а л и з у ю щ и м |
идею |
о |
том, |
что |
о п е р а ц и о н н а я |
система |
|
может |
быть |
у с п е ш н о |
н а п и с а н а |
на |
|||||||||||||||||||||||||||||
я з ы к е |
в ы с о к о г о уровня, |
|
если |
этот я з ы к является достаточно |
м о щ н ы м и |
г и б к и м . |
|
|
|
|
|||||||||||||||||||||||||||||||
|
|
В |
1978 |
|
|
г. |
|
Б р а й а н |
|
К е р н и г а н |
и Д э н н и с |
|
Ритчи |
н а п и с а л и |
книгу |
"Язык |
|||||||||||||||||||||||||
программирования |
|
|
С". |
Эта |
|
работа, |
которая |
в |
|
своем |
кругу |
называлась |
"белой |
к н и г о й " |
и |
||||||||||||||||||||||||||
" K & R " |
- |
в |
остальном |
|
м и р е , |
|
стала |
стандартом |
о п и с а н и я |
я з ы к а |
С. |
На м о м е н т создания |
|||||||||||||||||||||||||||||
"K&R" |
существовали |
к о м п и л я т о р ы я з ы к а |
С для Э В М |
P D P - 1 1 , Interdata 8/32, |
Honeywell |
||||||||||||||||||||||||||||||||||||
6000 и |
I B M |
370. |
|
В |
д а л ь н е й ш е м этот |
список |
был п р о д о л ж е н . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
В к о н ц е |
|
70-х |
начали |
п о я в л я т ь с я т р а н с л я т о р ы |
С для м и к р о Э В М на |
процессорах |
||||||||||||||||||||||||||||||
8080 и |
Z80 |
с о п е р а ц и о н н о й |
|
системой |
С Р / М . Скотт Газери |
и Д ж и м |
|
Гибсон |
разработали |
|||||||||||||||||||||||||||||
и |
пустили |
в |
|
продажу |
|
Tiny - C |
( " К р о ш е ч н ы й |
С") |
- и н т е р п р е т а т о р , |
о с н о в а н н ы й |
|
на |
||||||||||||||||||||||||||
п о д м н о ж е с т в е |
я з ы к а . |
Его |
и н т е р а к т и в н а я среда |
п р о г р а м м и р о в а н и я |
очень |
похожа |
на |
ту, |
что |
|||||||||||||||||||||||||||||
имеет |
ч р е з в ы ч а й н о |
п о п у л я р н ы й |
т р а н с л я т о р |
Basic |
ф и р м ы |
Microsoft. |
|
В |
1980г. |
Рон |
К э й н |
|||||||||||||||||||||||||||
создал |
|
|
свой |
к о м п и л я т о р |
Small-C |
("Малый С") |
для ОС |
СР/М |
и |
м и к р о п р о ц е с с о р а 8080. |
||||||||||||||||||||||||||||
К о м п и л я т о р |
Small - C, |
о с н о в а н н ы й |
|
на |
п о д м н о ж е с т в е |
я з ы к а |
С, |
был |
н а п и с а н |
на |
самом |
|||||||||||||||||||||||||||
S m a l l - C . |
П р о б л е м а |
курицы |
|
и я й ц а |
была решена, |
когда |
К э й н создал первую версий) |
|||||||||||||||||||||||||||||||
к о м п и л я т о р а |
на основе интерпретатора T i n y - C . Затем Small-C методом раскрутки создал |
|||||||||||||||||||||||||||||||||||||
самого |
|
себя, |
|
когда |
К э й н |
вместе |
с |
другими, |
используя |
р а н н и е |
версии |
к о м п и л я т о р а , |
||||||||||||||||||||||||||
сделал |
более |
с о в е р ш е н н ы й |
к о м п и л я т о р . |
Small-C |
к о м п и л и р у е т и с х о д н ы й |
модуль |
на |
я з ы к е |
||||||||||||||||||||||||||||||
С + + |
в |
|
модуль |
на |
я з ы к е ассемблера |
п р о ц е с с о р а |
8080. |
Следует |
отметить, |
что |
К э й н |
|||||||||||||||||||||||||||
предоставил |
свой |
|
к о м п и л я т о р |
и |
его и с х о д н ы й |
текст |
в |
о б щ е с т в е н н у ю |
собственность . |
|
|
|||||||||||||||||||||||||||
|
|
П р и м е р н о |
в это |
же |
время |
Лео |
З о л м а н представил |
|
свой |
к о м п и л я т о р |
B D S - C |
для |
||||||||||||||||||||||||||
С Р / М , |
также |
о с н о в а н н ы й |
на |
п о д м н о ж е с т в е |
я з ы к а С . |
Д о с т о и н с т в а м и |
этого |
|
к о м п и л я т о р а |
|||||||||||||||||||||||||||||
были |
в ы с о к а я |
скорость |
и |
в о з м о ж н о с т ь |
совместной |
к о м п о н о в к и п е р е м е щ а е м ы х |
объектных |
|||||||||||||||||||||||||||||||
модулей |
в загрузочном модуле. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
Вскоре |
после B D S - C |
были |
с о з д а н ы |
к о м п и л я т о р ы , |
п р е д н а з н а ч е н н ы е |
для С Р / М |
и |
|||||||||||||||||||||||||||||
о с н о в а н н ы е |
|
на |
|
п о л н о м |
|
м н о ж е с т в е |
|
я з ы к а |
С . |
|
Это |
|
дало |
|
импульс |
р а з в и т и ю |
||||||||||||||||||||||
п р о г р а м м и р о в а н и я |
на |
С + + для |
м и к р о Э В М . |
В |
1981 |
г., |
|
в связи |
с |
созданием |
|
I B M |
P C , |
в |
||||||||||||||||||||||||
м и р е |
м и к р о Э В М |
был |
сделан |
з н а ч и т е л ь н ы й скачок вперед. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||
|
|
П о с л е |
п о я в л е н и я |
I B M |
PC |
стали |
п о я в л я т ь с я |
и |
к о м п и л я т о р ы |
С |
для |
этой П Э В М . |
||||||||||||||||||||||||||
Н е к о т о р ы е |
к о м п и л я т о р ы |
были |
получены |
путем |
п р е о б р а з о в а н и я |
соответствующих |
||||||||||||||||||||||||||||||||
к о м п и л я т о р о в для |
п р о ц е с с о р а |
8080, другие |
были |
р а з р а б о т а н ы |
с п е ц и а л ь н о |
для |
I B M |
P C . |
||||||||||||||||||||||||||||||
В н а с т о я щ е е |
|
время на |
р ы н к е |
п р е д с т а в л е н ы более |
двух |
десятков |
к о м п и л я т о р о в я з ы к а |
С |
||||||||||||||||||||||||||||||
для |
I B M |
P C . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
В |
1983 |
г. |
А м е р и к а н с к и й |
Институт |
Стандартов |
(ANSI) |
с ф о р м и р о в а л |
Т е х н и ч е с к и й |
||||||||||||||||||||||||||||
К о м и т е т |
X3J11 |
|
для создания |
стандарта |
я з ы к а |
С. |
С т а н д а р т и з а ц и я |
будет |
р а с п р о с т р а н я т ь с я |
|||||||||||||||||||||||||||||
не |
только на я з ы к , |
но |
и |
|
на |
п р о г р а м м н у ю |
среду |
к о м п и л я т о р а , |
а |
также |
на библиотеку |
|||||||||||||||||||||||||||
стандартных |
ф у н к ц и й . |
В |
работе |
к о м и т е т а |
участвуют |
представители |
|
о с н о в н ы х |
фирм |
- |
||||||||||||||||||||||||||||
п о с т а в щ и к о в |
к о м п и л я т о р о в |
С, |
в |
том |
числе |
и |
для |
I B M |
P C , |
а также м н о г и е |
другие светила |
|||||||||||||||||||||||||||
из |
м и р а |
п р о г р а м м и р о в а н и я |
на |
я з ы к е |
С . |
У с и л и я |
комитета |
X3J11 |
п р и в л е к л и |
в н и м а н и е |
||||||||||||||||||||||||||||
средств |
массовой |
и н ф о р м а ц и и . |
П р е д л а г а е м ы й |
стандарт |
был |
о п у б л и к о в а н для |
того, |
чтобы |
||||||||||||||||||||||||||||||
все |
з а и н т е р е с о в а н н ы е |
с т о р о н ы |
могли |
о з н а к о м и т ь с я с |
н и м |
и |
внести |
свои |
п р е д л о ж е н и я . |
|||||||||||||||||||||||||||||
П о с к о л ь к у б о л ь ш и н с т в о |
п о с т а в щ и к о в |
к о м п и л я т о р о в |
для |
|
IBM |
PC |
|
участвуют |
в |
работе |
||||||||||||||||||||||||||||
комитета |
ХЗ |
Л 1 , |
то |
р а з р а б а т ы в а е м ы е |
и м и н о в ы е |
версии |
к о м п и л я т о р о в будут |
в |
рамках |
|||||||||||||||||||||||||||||
этого |
стандарта, |
( к о м п и л я т о р |
Borland |
С |
3.1 |
для |
IBM |
|
PC |
п о д ч и н я е т с я |
|
б о л ь ш и н с т в у |
||||||||||||||||||||||||||
т р е б о в а н и й стандарта |
на я з ы к |
и |
библиотеку) . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
Я з ы к |
С + + |
является |
|
о б ъ е к т н о - о р и е н т и р о в а н н ы м |
|
р а с ш и р е н и е м |
я з ы к а |
С |
|
ж, |
||||||||||||||||||||||||||
п о д ч и н я я с ь |
стандарту |
A N S I |
С, |
|
дает |
разработчику качественно |
н о в ы е |
|
в о з м о ж н о с т и |
при |
||||||||||||||||||||||||||||
р е ш е н и и |
самых |
р а з н о о б р а з н ы х |
задач. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Р а б о т а в |
B o r l a n d С + + 3.1 |
|
|
|
И н т е г р и р о в а н н а я среда |
Borland |
С + + |
3.1 представляет собой текстовой редактор со |
|
в с т р о е н н ы м |
к о м п и л я т о р о м . В |
верхней |
части |
экрана располагается м е н ю . В м е н ю File есть |
следующие |
о п ц и и : |
|
|
|
•New - создание нового файла;
• |
Load - загрузка ранее сохраненного файла; |
|||
• |
Save |
- |
сохранение |
текущего файла; |
• |
Save |
as |
- сохранить |
под н о в ы м и м е н е м ; |
•Quit - выход.
|
Здесь |
и далее |
п е р е ч и с л я ю т с я |
не |
все о п ц и и , |
а |
только те, к о т о р ы е |
бывают о с о б е н н о |
||||||||||||||
п о л е з н ы н а ч и н а ю щ и м |
п р о г р а м м и с т а м . |
П р и |
выборе |
пункта |
N e w создается |
|
новое |
о к н о , |
||||||||||||||
п о к а з а н н о е |
на |
р и с у н к е . |
|
У |
окна |
есть |
н е к о т о р ы е |
атрибуты. |
А и м е н н о : |
|
имя |
|
файла, |
|||||||||
обрабатываемого в окне (для нового |
файла будет н а п и с а н о N O N A M E 0 0 . C P P ) , |
п о р я д к о в ы й |
||||||||||||||||||||
н о м е р |
о к н а |
(окно м о ж н о |
выбрать, |
нажав клавишу Alt + этот |
н о м е р ) , м е с т о п о л о ж е н и е |
|||||||||||||||||
курсора (номер строки |
и |
столбца) . Также |
и м е ю т с я |
вертикальная |
и г о р и з о н т а л ь н а я |
полоса |
||||||||||||||||
п р о к р у т к и . |
В левом верхнем углу - |
м а р к е р закрытия окна (окно также |
м о ж н о |
закрыть, |
||||||||||||||||||
нажав |
Alt |
+ |
F3). |
О д н о в р е м е н н о на |
экране могут |
находиться |
н е с к о л ь к о |
о к о н , но |
только |
|||||||||||||
одно |
из |
них может |
быть |
а к т и в н ы м . |
Оно |
обрамляется д в о й н о й |
р а м о ч к о й , |
а |
н е а к т и в н ы е |
|||||||||||||
окна - о д и н а р н о й . П е р е к л ю ч е н и е между о к н а м и происходит при |
н а ж а т и и |
F6. |
С п о м о щ ь ю |
|||||||||||||||||||
м а н и п у л я т о р а м ы ш ь |
м о ж н о |
и з м е н я т ь размеры |
окна |
(взявшись за |
п р а в ы й |
н и ж н и й |
угол) и |
|||||||||||||||
п е р е м е щ а т ь |
окно |
по |
экрану |
( в з я в ш и с ь |
за двойную |
рамочку), |
разворачивать |
на весь |
экран |
|||||||||||||
(правый |
верхний |
маркер |
или |
к л а в и ш а |
F5) |
и |
восстанавливать |
до |
п е р в о н а ч а л ь н о г о |
размера |
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
в |
п о в т о р н ы м |
нажатием |
на м а р к е р . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
Маркер |
закрытия окна |
|
|
|
Имя файла в окне |
|
|
Номер окна |
|
Изменение |
||||||||||||
|
|
I |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
размера о к н а |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Для активного |
окна |
|
|
|
двойные |
линии, |
для |
|
|
неактивного - |
оди¬ |
|
|
|
нарные |
|
|
|
|
Текущий |
номер |
|
|
|
строки и |
столбца |
|
|
|
|
Маркер |
местоположения |
|
|
|
фрагмента текста в окне |
|
|
|
1:1: |
|
|
Если |
файл |
модифици¬ |
Перемещение текста влево |
|
рован, |
то |
здесь будет |
|
|
располагаться |
звездочка |
|
|
Перемещение текста вверх
Маркер местоположения текста в окне
Поле, соответствующее общему вертикальному размеру текста в окне
Перемещение текста вниз
Поле, соответствующее общему горизонтально¬ му размеру текста в окне
Перемещение текста вправо
Д ля |
запуска |
к о м п и л я т о р а |
(если |
удачно |
п р о ш л и п р е д ы д у щ и е |
д е й с т в и я ) |
и само |
|
п р о г р а м м ы |
достаточно нажать |
Ctrl + |
F 9 . |
П о я в и т с я |
о к н о , о т о б р а ж а ю щ е е |
процес |
||
к о м п и л я ц и и . Если |
о ш и б о к нет, |
то сразу же будет запущена |
п р о г р а м м а . |
Если есть |
о ш и б ю |
то в н и ж н е й части экрана п о я в и т с я еще одно о к н о с п е р е ч и с л е н и е м всех встретившихся о ш и б о к и указание
Загрузить |
н о в ы й |
файл |
|
м о ж н о , |
нажав |
|
клавишу |
F 3 . |
Для |
сохранения |
файл, |
|||||||||||
(рекомендуется |
это |
делать |
п е р и о д и ч е с к и ) |
|
используется |
клавиша |
F2 . |
П р и |
первоА |
|||||||||||||
с о х р а н е н и и Borland |
С + + |
3.1 |
п о п р о с и т |
вас указать |
имя файла и |
место, куда |
вы хотите ег< |
|||||||||||||||
сохранить . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
В с т р о е н н ы й |
т е к с т о в ы й |
редактор |
позволяет работать с |
блоками |
и н ф о р м а ц и и . Ч т о б ь |
|||||||||||||||||
задать блок, нужно, удерживая клавишу Shift |
с п о м о щ ь ю |
клавиш |
у п р а в л е н и я курсором |
|||||||||||||||||||
выделить |
н у ж н ы й |
текст. Далее, |
с |
блоком |
м о ж н о делать следующие |
вещи |
(см. также м е н к |
|||||||||||||||
Edit): |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
К о п и р о в а т ь в буфер |
обмена |
(Ctrl + |
Ins); |
|
|
|
|
|
|
|
|
||||||||||
|
Вставить из буфера (Shift + Ins); |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
Вставить в ы д е л е н н ы й блок текста(СШ |
+ К + С ) ; |
|
|
|
|
|
|
|
|
||||||||||||
|
Удалить |
из |
текста п р о г р а м м ы |
(Ctrl |
+ |
D e l ) . |
|
|
|
|
|
|
|
|
||||||||
Ч т о б ы получить о п и с а н и е |
ф у н к ц и и , |
необходимо подвести |
к этой |
ф у н к ц и и |
курсор |
|||||||||||||||||
и нажать сочетание клавиш Ctrl + |
F 1 . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
Ч т о б ы удалить |
целую |
строчку, |
н е о б х о д и м о |
нажать |
Ctrl |
+ |
Y. |
П р и н е п р а в и л ь н ы х |
||||||||||||||
действиях |
(случайно |
что - то |
было удалено) |
м о ж н о отменить |
п о с л е д н и е |
и з м е н е н и я |
с |
|||||||||||||||
п о м о щ ь ю |
к о м б и н а ц и и Alt |
+ |
Backspace. |
Для |
п о в т о р е н и я о т м е н е н н ы х |
д е й с т в и й : Shift + |
Alt |
+Backspace.
Первая |
программа |
|
|
Задача п р о г р а м м ы - вывести |
на экран строчку « Hello world !!! ». |
||
Запустите |
и н т е г р и р о в а н н у ю |
среду |
Borland С + + 3.1, создайте н о в ы й файл и наберите |
следующий |
текст: |
|
|
Текст п р о г р а м м ы н а С + + |
|
||
/* |
Моя п е р в а я п р о г р а м м к а |
*/ |
#i n c l u d e < s t d i o . h >
v o i d m a i n ( ) |
/ / н а ч а л о |
|
p r i n t f ( " H e l l o |
w o r l d ! |
\ n " ) ; |
|
/ / к о н е ц |
|
О т к о м п и л и р у й т е |
ее и запустите. |
На экране п о я в и т с я надпись |
"Hello |
world!", но к а к |
только п р о г р а м м а будет |
в ы п о л н е н а до |
п о с л е д н е й строчки, на экране |
в н о в ь |
п о я в и т с я окно |
Borland |
С + +. |
Ч т о б ы |
увидеть |
результат |
в ы п о л н е н и я |
п р о г р а м м ы , |
н е о б х о д и м о |
нажать |
|||||||||||||||||||||||||||||||
сочетание к л а в и ш AU + F 5 . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
Р а с с м о т р и м |
программу |
п о с т р о ч н о . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
П е р в а я |
строчка |
заключена |
|
в с к о б о ч к и |
|
вида |
|
/* |
|
|
|
*/. |
|
Это |
так |
|
н а з ы в а е м ы й |
||||||||||||||||||||||
комментарий. |
|
|
К о м м е н т а р и и |
|
н и к а к |
|
не |
влияют |
|
на |
работу |
|
п р о г р а м м ы |
и |
используются |
||||||||||||||||||||||||
только для |
п о я с н е н и я |
|
исходного кода. |
В |
д а н н о м |
случае |
в |
к о м м е н т а р и и |
з а п и с а н о |
н а з в а н и е |
|||||||||||||||||||||||||||||
п р о г р а м м ы . |
Существует |
еще |
одна ф о р м а |
записи |
к о м м е н т а р и е в . |
Если |
в |
тексте |
п р о г р а м м ы |
||||||||||||||||||||||||||||||
встречаются подряд два символа //, |
то |
все, |
что |
располагается |
до |
к о н ц а строчки, |
считается |
||||||||||||||||||||||||||||||||
к о м м е н т а р и е м . В |
н а ш е й п р о г р а м м е |
слова |
«начало» |
и |
«конец» я в л я ю т с я |
к о м м е н т а р и я м и , <и |
|||||||||||||||||||||||||||||||||
к о м п и л я т о р не п р и н и м а е т их во в н и м а н и е . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||
С л е д у ю щ а я |
строчка |
будет выделена |
зеленым |
цветом . |
|
Слово |
include |
в |
переводе |
с |
|||||||||||||||||||||||||||||
а н г л и й с к о г о |
|
я з ы к а |
значит |
«подключить». |
В п р о г р а м м е |
будет |
и с п о л ь з о в а н а |
|
ф у н к ц и я |
||||||||||||||||||||||||||||||
printf(), о п и с а н и е к о т о р о й |
находится |
в |
файле |
stdio.h |
- стандартной |
б и б л и о т е к е |
ф у н к ц и й . |
|
|||||||||||||||||||||||||||||||
П р о г р а м м ы |
н а |
|
С + + |
содержат э л е м е н т ы , |
н а з ы в а е м ы е |
ф у н к ц и я м и . |
О н и |
п р и з в а н ы |
|||||||||||||||||||||||||||||||
в ы п о л н я т ь э л е м е н т а р н ы е |
о п е р а ц и и |
при |
работе |
|
п р о г р а м м ы . |
Очистить |
э к р а н , |
вывести |
|||||||||||||||||||||||||||||||
строку, нарисовать на |
экране круг |
и |
м н о г о е |
другое |
- |
все |
это |
делают |
ф у н к ц и и . |
Пользуясь |
|||||||||||||||||||||||||||||
н а б о р о м операторов |
С + + , |
|
Вы |
можете |
сами |
создавать |
|
такие |
ф у н к ц и и , |
но |
большая часть |
||||||||||||||||||||||||||||
п р о г р а м м и с т о в |
н а |
С + + |
пользуется |
уже |
|
заранее |
|
с о з д а н н ы м и |
ф у н к ц и я м и |
и з |
библиотек |
||||||||||||||||||||||||||||
стандартных |
|
ф у н к ц и й . |
И |
вправду, |
|
зачем |
тратить |
время |
на |
|
р е ш е н и е |
задач, |
к о т о р ы е уже |
||||||||||||||||||||||||||
р е ш е н ы |
р а н ь ш е ? Для |
|
того |
чтобы иметь |
в о з м о ж н о с т ь |
использовать |
эти |
ф у н к ц и и |
в своих |
||||||||||||||||||||||||||||||
программах, |
н е о б х о д и м о |
с о о б щ и т ь |
к о м п и л я т о р у , |
в |
каком |
ф а й л е - б и б л и о т е к е |
они |
о п и с а н ы . |
|||||||||||||||||||||||||||||||
Если |
|
нужно |
|
|
п о д к л ю ч и т ь |
другие |
б и б л и о т е к и , |
н а п р и м е р , |
|
математическую, |
в |
||||||||||||||||||||||||||||
к о т о р о й содержатся |
|
|
о с н о в н ы е т р и г о н о м е т р и ч е с к и е |
ф у н к ц и и , |
|
о п е р а ц и и |
в о з в е д е н и я |
в |
|||||||||||||||||||||||||||||||
степень, |
и з в л е ч е н и е |
|
|
а р и ф м е т и ч е с к о г о |
квадратного |
к о р н я |
|
и |
т.д., |
|
то |
нам |
н е о б х о д и м о |
||||||||||||||||||||||||||
н а п и с а т ь следующее: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
# i n c l u d e |
|
< m a t h . h > |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
m a t h . h |
- |
имя |
|
файла, |
в к о т о р о м |
о п и с а н а |
стандартная |
м а т е м а т и ч е с к а я |
библиотека . |
||||||||||||||||||||||||||||||
С т а н д а р т н ы х |
библиотек |
в C / C + + |
очень |
м н о г о . |
Мы |
будем |
з н а к о м и т ь с я |
с |
н и м и |
по мере |
|||||||||||||||||||||||||||||
изучения |
новых |
ф у н к ц и й . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
Далее |
идет |
следующая к о н с т р у к ц и я : |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
v o i d m a i n ( ) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
{ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Это |
ф у н к ц и я |
main(), |
которая |
присутствует в л ю б о й |
п р о г р а м м е |
на |
C / C + + , |
и и м е н н о |
|||||||||||||||||||||||||||||||
с нее н а ч и н а е т с я |
в ы п о л н е н и е п р о г р а м м ы . |
Тело |
ф у н к ц и и |
main() |
о г р а н и ч е н н о |
ф и г у р н ы м и |
|||||||||||||||||||||||||||||||||
с к о б к а м и . |
|
Внутри |
них |
з а п и с ы в а ю т с я |
операторы |
п р о г р а м м ы . |
В н а ш е м |
случае |
|
записана |
|||||||||||||||||||||||||||||
ф у н к ц и я |
вывода |
на |
|
|
э к р а н |
- ф у н к ц и я |
|
printf(). |
|
Отличительной |
чертой |
всех |
|
ф у н к ц и й |
|||||||||||||||||||||||||
является |
н а л и ч и е |
круглых скобок . Внутри них |
|
з а п и с ы в а ю т с я |
п е р е д а в а е м ы е |
|
ф у н к ц и и |
||||||||||||||||||||||||||||||||
п а р а м е т р ы . |
|
Здесь |
мы |
|
передаем |
строку |
текста. |
Строка |
|
должна быть |
заключена в |
д в о й н ы е |
|||||||||||||||||||||||||||
к а в ы ч к и |
и |
|
может |
содержать |
внутри |
себя |
|
л ю б ы е |
с и м в о л ы |
(в |
том |
числе |
и |
буквы |
русского |
||||||||||||||||||||||||
а л ф а в и т а ) . |
|
В |
строке, |
которая |
передается |
ф у н к ц и и |
|
printf(), |
есть |
символ, |
к о т о р ы й |
не |
|||||||||||||||||||||||||||
выводится |
на экран |
|
|
-"\п". |
|
Это |
у п р а в л я ю щ и й |
символ . |
Его |
|
цель |
- |
перенести |
курсор |
на |
||||||||||||||||||||||||
новую строку, |
после |
|
того |
как будет |
напечатано |
|
«Hello |
world!». |
|
|
|
|
|
|
|
|
|
|
|
О б р а т и т е в н и м а н и е , чт о после функции ставится точка с запятой.
ь