Download as pdf or txt
Download as pdf or txt
You are on page 1of 96

с++

! с++ вш||оег
Ёавчальний пос|бник

3-то видання
|]|}!( :111.!)71}::7
у/[1( {;}'} ! .:! Розд1л 1
|'ь,1
мовА пРогРАмувАння [++
Реколсен0овано !у['н!с7перс!пво!п осв'/пш [ наукш !кра[нц
я!с на'вчальнш1 пос!бнцк ал,'{ стпу0ентп1в не!т[ехн'чнцх
спещ1альнос/пе[[ вшщшх новч('][ьнцх зокла0[в
$ 1. основн] поняття
(}1шспъ в|0 09.07.2003р' ]Ф 14/18'2'1214\
^'{ону 1. ётандарт 1у[ови. $ову програту[ування [++ на початку
Рещензет+тпш: |}Ф_х рок|в створив Бьяртн| 6трауструп на баз! популярно|
д.(э.-м.н., професор 1(оленюк [!. !. ()еред профес|онал|в-програм!ст!в мови 6, яку ро3робив ,{ен1с
А.ф.-м.н., професор о€ вула '$. [- |)|'гч!. }1ова одерэкада на3ву в!д € та операц![ |нкре:шенту (++)'
||изначено[ лидде у н!й. 1ака операц|я зб|льтттуе 1{а одиниц}о
:}1|дчент1я зм!нно!, до яко| !! застосову:оть.
€"]** е роз1ширенням мови €. Фкр!:ш стандартних ко1\(анд'
|линський я. м., Анох!н Б. €., Ряэ*ссьтса в' А' <'поди ув|йш:ли засоби. дл$ о6'ектно-ор!ентованого й узагальне-
г 54 с++ ! 6"++ Бц!16ег. навч. пос|бн. 3-те вид. -.[[ьв!в: €11[ !!()['о шрограмування. с++ _ це пер1па у св!т| штова о6'октно*
\92 с. с>1т1онтованого програ:иуванття' суть якого полягае в об'еднанн|
|линський, 2006. - /(1||{их та алгоритм1в |х опрац1овання у едине ц|ле.
!Бвш 966-2934-02-2
1,/загальнене програмування' яке тако}к п!дтриштуетьея :т[о_
1|и;*.п:тд теоретичних в!домостей про с++ | €** 8ш||6ег супровод-
:г<>го €**, _ це ще один спос|6 програш:ування' де код програ-
)!(у{.,|'!'()'! :]начно1о к{льк!стто приклад|в зразками розв'язування типових |
не поступа_
ми створ1о}оть не3а.,техсно в!д типу да}1и*, 14Ф суттево' 11апри-
!!1!!!|!1!.,| 1'!|их 3адач. 3а повното[о подання тиатер!алу книн{ка
|т:див!_ |(']|пд' для 3адач упорядкування даних, об'еднання списк!в тотцо.
(1,|'!,(]'! !|(.|})е]1 !нтпишти видан11ями. Аля орган|зац|! ефективно|
шроведення 1]рактичних занят'ь
Фск|льки €** о ро3т11иренням мови 6, то вс| проц)аш|и' окла-
роботи студент!в, п!.дготовки |
7ц:тг! тиовото €, коректно тра]{сл1о}оться комп|лятора1ди 6**, тотшу
71у::.;:п,::<>|
о багатовар!антший зб|рник 3адач.
::ц; б|б"тг|отеки, як| нале}1сать до складу шлови 6, € тако}к 1 в ё*+.
!}()/1()
()риг|нальна апро6ована пдетодика опанування основами тиови 6}*
!. ] ! 1!

зру{ним '1'екст будь-яко! проц)а]ши окладаеться з ко1иа]ц, опис!в з:ш|н-


1 с:,:':гс>реттття проект!в у 6++Рш|16ег зробить навчання доступнип{'
,|,1! 1!})1{()м{|им. |[ризнавений для студент1в р|зних напря:ик1в п|дготовки. !|]|х' сталих' прие.щ1ань б|6л!отек то|цо. 1акий текст часто на3и*
|!1|[0ть про2ро]у1нцлс ко0оло. |1рограмний код необх!дно переклас-
'|'|1 ||а внутр!тшнто ш{ову комп'}отера, тобто створити матшинлтий
пс. ;,,:цц. !,ло операц|то вико}1уе тсо лоп]лятпо
р ]у'овш про2р ал[у воння.
! ,1 04 000000 00 2
ББ!{ 32'973я7 .11'ля комп':отер|в р|зних клас!в, а тако}к для р!вних опера-
!'
2006 :ц!{!тпих систем створено багато комп|лятор|в тиови 6**. Ёа-
}ц.| :::т:л:;и ||рограмних продукт|в с 3ареестрованими товарними !|[)||!{лад' Ат&т Ре1еаве 3.0 с++ (викориотову€ться операц|й_
!у!,!! )!(!1м п: тг!71т:с>:;|71;лих ф1рм. ||()[() системото {_}п!х), ?шгБо €**, Бог1ап0 6++ 3.1 (для 1!1$
!!г;: пс:: !!:!(),!'и|1д г1|е| тсниэкки не мо}ке 6ути в!дтворена у экодн!й !)()|]), Бог1ап0 €++ Бш!10ег (в{зуальне програш|ування у\[|п_
бёз дозволу
1|)''!!!!| ! {)у.,1|, 1!:сг:ми;;:'ц<:обами' зокре}да ксерокоп|.к;ваннятул, с!сгтмн), ]!1е{го'цмег}св 6о6е'\['агг|ог, $утпап1ео €** (викориото-
!||!]!.1!!!!!!!!,,!,!}]!. !!1;:;:то |||! ви.цання кни}кки в Рос|] 1{але)1сить видавничому
_€анкт_|{етер6ург--$иев). ! !у( :'|'|'сл ттд ко:шп':отерах ф!рми 1!1ас|п!овБ).
!! 1 | |!1 \,,./ [. 1 | ! !( |т :с |:':' + ( й <><: :с п;п'

| |.1 |!ш |)(!(} з!):}.|-()2-2 @ [линський $'. м., 2006


!|1;с::'р::ми, складен| ш[ово}о €*+, е штоб|льни:ци, тобто :шо- бгеа& ехр!|с!! рг!ма!е (пгош
са5е
э:су'л':, бу';'и виконан| на ко:у|п'}отерах р!зних виробник1в | в р|з- са{сп
ех[егп рго|ес|е6 !гу
||оа( рць!!о |уре0е|
!!!|х с>::с-'р:тц|йних систеш|ах' 3авдяки ному €** е особливо с1':аг {ог ге9!$|ег 1урепагпе
,(ля узгод'{сення вс|х реал|зац|й мови у 1990 ро-
||()!!у..'!'|р}{ото. с|азэ [г!епё ге1цгп цп!оп
сопэ|
:1! Американський |нститут нац|ональних стандарт!в (Аш$1) соп!.пце
9о!о э!':ог| цп5!0пе6
!' з!9пе6
(:'['|]()рив копд|тет для прийняття стандарту ш[ови €**. |{|зн!:пе 6е'ац![ !п[!пе
у!г|ца!
э!:ео! уо|0
п:1,,г1тлов!дна копт|с|я була створена й у 1!1|экнародн|й орган|зац|| 6е!е|е |п| 5!а|[с уо|а|!!е
ао |оп9
с:т'андарт|в (1$о). 1-{1 дв| орган|зац|!, як! називатоться 1$о/Аш81' 5[гцс| ш1т!!е

у 1998 роц| виробиди остаточний м|хснародний стандарт для 3. .(ирективи препроцесора. 1репроцесор
с++. у книэтсц| мова розглядатиметься зг|дно 1з стандартошт - це програ1ша'
''тка опрацьовуе дире|стиви. [шректпшвш препрочесор(' *
{$о/Аш$1. ще
!(опданди тсош:п|.ттятора в|дпов|дно| мови програмування'
як1 ви_
2. Алфав!т 1 клточов! слова. ]!1ови програ}{ування, як | !{о1{у|оться на початку кошлп|ляц|| програми.
_ наб|р допустимих сиптво_ .(ирективи мови
роз:шовн!, ма}оть власний алфав|т () 1-* почина!оться 1з
сиштволу #. Розглянемо дек|лька тип!в
.:т|в. Алфав|т тиови 6++ складаеться 3:
ди-
})октив.
. великих | тцалих л|тер латинського алфав|т}] ''А'', ..., !шректпшво Апс1цёе означае' що до програми необх1дно
ъ' а'...' 7| !|ри€днати програ]\[ний код |з зазначеного п|сля не:
. цифр 0, 1, ..., 9; Ф айли, як| приеднутоть
директиво}о
файлу.
#|пс!ш0е,,''"",''.''',",
о сшец|альних символ|в:''' ( ) [ ] { } < } ., 1 : ? | - * + - с|лойло ;шш зоео пов к1в (}теа6ег-фа йлатли,
б|бл|отека]ии' модул'|-
: / \ ! # о/. $ & - ^ @ та символу п!дкреслення _' ми)' ]/ таких файлах зазвичай оголо11]у!оть стал|
й з:и|нн!, за_
11рогратии склада!оться 1з синтаксичних конструкц|й, як| |'олов1{и (сигнатури)
функц|й тощо.
!!|!:]ива}оться колоа,ш0о;шш (|татхт\ назви _ оператори, вказ|вки, |||'с| стандартн| команди та с}эункц|[
мови €++ визнаненн! у
1лс:,пс:::лтя). }{отианди будутоться з лексё;ш
_ непод!льних еле1шен_ с|;айлах заголовк1в. 1{об при€днати 1шодуль
до програ1ии ко-
';'!:: мс>гзи: сл!в, нисел, сиштвол|в операц|й. |)истувача' директиву прег{роцесора необх!дно зазначити на
().::ова под|ля:оть на кл1очов| слова й |дентиф|катори. !0ен- !|()т{атку програ}!и так:
опосл,с!л1.осогп<;р - це на3ва (|шх'я), яку користувач надае об'ектам,
#!пс!цёе <назва файлу.розширення>
||1|!!|)!!|(.,!1}]1, з:и!ннитш' сталиш[' функц|ям. ]/с| слова ш!о}куть
(:!с.,||!,/[!!1'].!()'| 3 рядкових чи прописних л|тер англ|йського алфа- ::бо так:
гл|':'м, :цп:с|.л1>, {1 т0ко}к м|стити сиш!вол п!дкреслення. 1дентиф|ка_
'!1)|) ;!!!!})|с,/{]! |[о(!инаоться в 6укви а6о |з сишхволу п|дкреслення.
-[. Фднаков| за зм|стом мал! та велик! л!тери у
3азвичай ус! стандартн! б1бл!отеки
!!сат1сзса.псс,лстоя

мс::з! () 1+ вва)катоться р1зншмш символа1ии. Ёаприклад, !мена розм|щен|


!шс1,0пп середовища €**. )/ такоплу випадку у т:атгтц!
1!! у [',1 :: :с: 1'1! !пупа1пе позначатоть р1зн1 об'екти.
г : на3ва с}ай.тпт с
!|1!раштетро1и директиви, |! 3а3нача}оть
у кутових ду)к]{ах .__|}а.-
!!]!:''
наприклад
словш]'1ш. |}од;и ;*икористову}оться для написання котшанд. 3м|-
#|пс|цое <па1Б.[.т>.
ни'|'и |||)].![]|!1](1е!|!{'1 кл}очового слова у програм! не моэкна.
Фсновгг| п{.;тлс),лс>:;[ слова :цови €++: _ [тсщо эк потр|бний файл розм!щений не т:а:тг1| тшс[1]-
!)]4' :'о на3ву файлу |з зазначенням 1шляху у
а5п 6оць!о гпц.аь!е 51ш!!сь "...". 1{априклад' пиш]уть у ла11|{ах
аш|о е!зе пеуу |егпр|а1е якщо деякий файл }1уБ|б.Б е у папц| в!ш8
боо! епц|т орега1ог !}:!з !!1! /циску 6:, то тре6а писати
так:
#!пс!ц6е''0:\э1ш0\|т,4у8!б.|,,'
заголов- м <}|гурних
:]оува)!се}!ня2' 8г!дно з| стандартом 1$0/А$$1 файли духсках { }.
:с|в у директив! #|пс!ш{е прийнято
з&писув8ти 6ез розптирення' Розглянемо програму' у ре3ультат! виконання яко| на
мови 6' як! вико_ (}|{ран буде виведет[о пов!домленн'|: ||рив!т, студенте! я с++!
!!1}1!риклад *йс|ц6е<па1п>' файл*т заголовк!в
почив&1оться з л!тери с' на-
ристову1оться у 6**_програмах' моя перц!а про2рама мовою с++
,''р'*'''д *1пс:ц6е <сз16!о>' 1{я моэтслив!сть реал!вована у
сг{ас_ //
#|пс!ш0е <!о91геап.п>
них комп!ляторах мови' !п| па!л()
зна1!е1{1{я' по-пер1ше' вона
!шректпшвс #ёе|!пе мае подв!йне
{
соц1 << '' [рив!т, студенте! я с++!";
мо)ке задати стале з}{ачекня (оголотшуе
сталу)' Ёаприклад' як_ .е{шгп 0;

ш1о у програм! задано #6е'|пе }'! 25,


то ]"| п!д час виконання прог- )

вона дае 3могу описати


рами 1шати1!!е 3вачен|1я 25' |{о_друге, Розглянеш:о елементи програ1ии. )[' пертпо]у[у рядку е ко-
_ коротк! команди (переознани']]и командтт\ нтг 3апи_ м(}}{тар. 7€оэшентпор _ це фрагмент тексту програми' який слу-
'.*р,",
сати функц|!, наприклад' так: |'ус для по'1снення при3начення програми чи окрепдих команд
- -
*6е|]пе в(а, б' с) (ь) (ь) - { (а) " (о))' ! гле вплива€ }та вико1!ання команд. його запису1оть так: //текст
за:и|сть кома:{ди коментарю або так: /* текст коментарю "/. )[' пертшому випадку ко-
1епер окр!зь для обнислення даскрттлш!на!тга
0=Б*б_4*а*с м()1[тар тшае бути або у к|нц| рядка' а6о единим у рядку.

мо)кна 3аписувати /\ругий спос!б б|ль:ш ун!версальний: ко]шентар ш|о}кна 3&пису-


пт:п'ги будь_де' не ро3рива1очи лексем.
6 = 9(а, б,с).
#6е{пе' Ёащ>иклад' ,{иректива *|пс!цёе <!оз1геап.[> ш|д'еднуе б!бл!отечний файл
[шректпльв@ *|.|псе' скасовуе д|:о директлтви !с:н[геагп.}:. 6аме у щьому файл| описан! функц||, як! да1оть
- - -
#6е||пе о(а'б,о) (ь) (ь)_ 4 (а) (с))
*цп6е| о
]]могу виконувати операц|| введення-виведення даних.
#6е!!пе 0(а,ь,о) ((а) " (ь)' (с)) ,|{ал| у програм! 3апис&гт& обов'язкова функц!я гпа|п(). $л:о_
Ретпта директив описан! у $ 17' !!()!]е слово !п| означае, що функц1я па!п() повертатиме у точку

4. !|ерппа програма. 6уттевото особлив!от:о мови €**


по- |!|1[(лику результат ц!лого типу.
програми склада1оться з [(онструкц|я соц| << забезпечуе виведен!{я на екра1{ мон1-
р|вняно в !нтшими ш!овами о те' що го- ':х>1>:: пов!до1\[лення
,,||рив!т, студенте! я с++|''.
в !нтпих мовах'
функц!й, як! в!д!гра1оть роль п!дпрогра:ш _ це функ- 1{о:шанда ге1цгп олугу€ для виходу з функц!! па!п(). 9исло-
ловшо яка мае бути у ко}кн|й програм|'
футотсч1*, ::пай пара:иетр п!сля ге|цгп е ре3ультатом (внанення:и) функц||
:1!.я вигляду (у пц!й програш:| _ 0).
па!п(то!6) 3оувоэсення 3. Функц!то тпа!п() мо'!сна 3астосувати так:
{
}!ло функц!т 3 командою ге|цгп 0; уо1ё па!п()
{
)
т!ло функц!|;

-- 3о2оповок фуютвч[[' }{лточове слово уо.6 означае' що


]
,лц, гпа!п()
с|;мгггспц|я не 3алепсить в|д параметр!в' його ваписувату! не [ака функц|я навиваеться функц|ето па!п() типу мо!ё. Бона не

,,[',,:,'опз;{ово. Функц!1о 3 параметра1ши роаглядатимемо


ния(че' поверта€ у програму }кодних 31|ачень' тому команду ге1цгп пи-
сати !{е треба.
9 'п'|':г! с|;уплкц1| ш|!стяться команди та виклики 11'ш1их функц!й'
в!докремл1о1оть символом '';'' (крапка |;. 3агальпа структура програми. }{айпрост!тша програ1ша
!(1спм;пг:71гп о71тту в!д одно|
;1 !((!|!|()!()). 1с:псст функц|! зак!няуеться ком811до1о повер}1ення м()[}()|о6** мае такий вагальний вигляд:
].1|]!]]!. '|'1.::<> с|:утппстд!! (ус! команди п!сля 3&головка')
эаписуеться

6
8кщо 3начення деяко! величи:!1и (даного) не з:у:|н:овати-
// коментар! меться 1тротягом виконання ус|е| програми' то таке дане варто
#!пс!ш6е <назва б!бл!отенного файла> ;}|1дати як сталу (константу, сопэ|). !'е мо:кна 3робити так:
мо!ё гпа!п()
{ соп$| <на3ва сталот 1> = <3Ё39@Ёня сталот 1>;
<т!ло функц![>;
) ::бо так:
соп5| <тип> <на3ва сталот 2> = <3Ё39€}!ня стало1 2>;
3оуваэюення 4. Би вхсе 3на€те' що в кутових дух(ках < > 3аписутоть
з1{ачення параметра директиви' як! у програм! прогц;скати не мо}к- €талу 2 називатоть !пшпованок) стало[о. за 3а1иовчуванняш|
на. 1{р!м цього' у кугових ду}*{ках опис}ватимемо словами загальн! сп.ала налеэ{сшт[ь 0о ц1поао т/[шпу. |[|д нас виконання
|!.!!,слова
конструтсц|! мови, запт1сть ятсих у реальн1й проц>а:и| будуть конк- ![рограми 3начення сталих 31у||н1овати не ]шо?!сна,.
ретн! команди- } цьому ра51 у процрам! кутов!' ду}кки не пиштуть'
1рсокла0 7. Фголосиш|о три стал|
3азвичай складн|1ш| програми м|стять 3начну к!льк|сть соп5| у;к 20' г!з1 = 176;
=
с|;утткц|й та додаткових елеш!ент|в. тош|у у загальному випадку соп5|'!оа|9=2'7&;
6** такий вигляд:
,(ля стало| д задано тип * {|оа| | значення 2,78.
[![)огра1\1а 1иовото тиае
коментар!
3ауваэюення 5. у с++ е так! стандартн! стал!: число п с стало!о
#!пс!цёе <назва б!бл!отенного файлу 1>
м-Р1, п / 2 -м-Р1-2, п / 4 _ м-Р1-4, 7|п - \0'.!'Р|, |"[; -
*:пс:цсе <назва б!бл!отенного файлу \|>
<!нш! дирекгиви препроцесора>
м-1 8@втР1 тощо. {| стал! мо)кна безпосеродтгьо 1]и!{орис1'о-
вувати у програм|, заздалег!дь п!дклтонивш!и моду.пь пта[1т.}':.

.''',''""', глобальних зм!нних>, !ан|, як1 п!д час виконання програш1и ш!о?куть набувати
<оголошення глобальних сталих>; |х оголо1шу]оть так
<оголошення та створення функц!й користувача>;
1;|зних 3начень' на3ива1оть ся 3 ]'1,]ннш ;шш. :

<тип зм[нних 1> <список зм!нних1>;


..'' р-.у,'''ту функц!|> па!п(опис формальних параметр!в)
(
<тип 3м!нних \|> <список 3м!нних ш>;
<оголошення локальних зм!нних>;
<оголошення локальних сталих>;
<команди>;
Б.тлетшенти списк|в запису}оть чере3 кош!у. Ё1априклад,
)
:гм |нн! оголо1шу}оть так:
!п1 а, с; {!оа| б' 0' :; сБаг ш;.
Розр|знятоть глобальн| та локальн! дан|. [ан!' ви3начен'
тут називатимемо глобальними' а дан1' як1 3м|нним мо)кна 3адавати початков| значення в!дразу п1д
/\.'1'{ т]с|х с}ункц|й' |!!!с оголо1шення.
!} |{ |{() ристову1оться ли1пе в окремих функц|ях чи блоках, - [9- [е називаеться 1тэ1щ1ол|защ1сто даних. на-
!!|)иклад' 1|оа! б' 0 = 2'5, а = 4; с}:аг ш ='1';.
!'т|иш|и.
!с1|.|!
Фт}ке, у 3агально1у1у випадку зшт|нн| одного типу оголот1!у_
6. €та.тп1 та 31и!пн!. 3ти|нна чи стала - це пойменоват{а д|_ |()'|'!) так:
|! 1|!!!(1! о11о[)ати|]но1 патш'ят| ко1ип'|отер&, А€ збер|гаеться 3на- <тип зм!нних> <назва зм!ннот 1> = <38?9€ЁЁ9
'!(.!! ! !.'! 7цс:.ггпсо| 1}еличини.
<на3ва зм!нно1 ш> = <3начення \>,
]}м!птт:! | ста.тт| (|х прийнято на3ивати да11ими) ш|а]оть так|
<список !нших зм!нних>;
|!,!1|(:,|'||!!()(:1,! : т:пзву (|м'я), значення' тип. на3ву дае програтш!ст.
/(.::я: 1;с;бтсгги з даг[иш|и сл|д 3аре3ервувати певний
обсяг опе- 3апитання
;г;:'г,:::т!;с:'[ ::::м''тч.! 1{о]шп'тотера' де збер!гатип1уться
|хн! значен- 1. 3 чого складаеться алс}ав|т мови?
!!1! '|'с;му :г<:! 71::т:|, *ттс1 використову1оться у програм!, потр|бно 2. тт1о таке кл1очове слово? *{к| ви 3на€те клто.тов| слова?
:, т' :.;г'; : п. :,! 7ц:, )|
:: (!()1|1'и (оголосити), оск|льки ко1шп|лятор ро3под!-
| !

||!|{ |!'!м'т:'г':, :т:'!71:;<) ;! о!1исаш1и.

0
!1
3. [[!о таке препроцесор? 1ршкла0.1. Фголосимо три 3м|нн| ц!лого типу:
4. [[!о таке директива препроцесора? .[[к! ви знаете директиви?
б. |![,о таке файл заголовк|в? |п| х, у; 5ьоп |п| 2;
Фпитш!ть 3агальну структуру проц)ами.
(!.
.- 1|(о таке коментар?
1{а етап1 комп!ляц|! для 3п['.нних )€, !, 2 буде надаЁо пев_
8. тт\о таке стала? гтий обсяг оператив1то! паш:'ят!.
9. |т1,о таке зм1нна? }{адати 3начен!!я цим з:ш!нни1ш 1![о}!сн& 1|а етап! виконання
10. *[к оголосити зм!нну? ||рограми 3а допомого1о команд присвое}{ня' наприклад' так: х
8прави = 157; у = -68; а = 15;' ! дйянку пам'ят!, надану для зтш!вно! *, буде
;!!)шесено число 1б7, для у _ -68, а для 2 _ |б.
3а зразком пер:по! проц)ами 3 тексту склад1ть | виконайти програ-
ми виведент*я на екран: |[|д тас викот{ання програ1![и 3наче'1вя з:ш!вних мо}кна
а) в!домостей про оебе; б) розкдаду вапять у понед!лок; в) ватшо! :зм1нтовати. Ёаприклад' ко1у[анда присвоон}1я х = 2003 3анесе у
адреси; г) !м|тац!! д!алогу м|:к користувачем | системо|о. :;!дпов!дну для зтш!.нно[ * д|лянку пам'ят! число 2003 (попе-
[)едне зт1ачення 157 вилутаеться автоматинно).
[1ршкла0 2. (тал1 ц|лого типу 1у[оэт{!та оголосити так:
$ 2. типи дАних оопэ| !п| а = 145;
1. [и:шд даппх. )й'с| дан!, як! беруть участь у ро3в'язуванн{ соп5| |оп9 !п1 б = 365978.
3ацач|' ретельно класиф!ку|оть 8а типа1ши. тип визначае допус- 3начення даних а та 0 у програм| зтш!нтовати не 1шо}кна.
тим! 3начен11я да}{ого: операц!?, як! мохсна над 1{им викон)|вати'
3. А1йоЁ ти.1и. .(1йсн| типи описан1 в та6л. 2.
й обсяг оперативно! па'ш['ят!' який резервусться для нього.
?аблшцл 2. /11сн1 гпшпш'
3аувоэтсення 1. Ф6сяг мо)*се вале'кати тако}к в!д р!зновиду опе_
Фбсяг,
рац!йно1 системи комп'к;тера. Ёазва типу значень
байт|в '{1апазош
Бизначити' який обсяг па1ш'ят| комп|лятор надае да}1ош{у {!оа| 4 *3.41оа8 ...13.41Ф8 : 0
1'()|'о чи |нтпого типу' 1!!о'кна з& допо1у!ого!о ко1у!анди $!аео{(<на3- {оцБ!е 8 +1.71о308 ... +1.71Фо8: Ф
ва типу>). 1{априклад' ко:у!&нда соц| << в|:ео|(э[оЁ !п1) виведе на 6оцБ|е 10 +1.181о4932 ... *1.181Ф932 . 0
()|(рон 1шогт!тора цифру 2. |7е означа€' тцо да|!е типу эбой !п|
3аувоэлсеюня 2. ! десяткових числах ц!ла ! дробова частини
:з:лймае у па1ш'ят! комп']отера 2 6айтп. висла в!докремл1о1оться кр8пко!о.
9 табл. 1, 2 наведен! навви основних числових тип|в, о6- [рсскла0 3. Розглянемо фрагмент програ:\[и
сяги пам'ят!, як| ре3ерву1оться для ек3емпляр!в даних цих
{!оа| [, Р! = 3.1415926; ёоцБ!е у = 365.976;
'|'и1|!в' | д|апазони допустимих ан&че:{ь даних. соп5| 23.4;
ш= -12' !': =
9ислов! дан! под!ля1оть на ц!лотисельн! (ц1л1) та д|йсн!. '|оа|
?ут оголо1ше11о дв| зм!нн1 (и' $) типу {!оа| ! з:и|нну 1.' типу
2. !||л| типи. 1_[!л| типи описан!. в табл. 1. (ошб|е, а тако'х ста]1! у; = _12; |'; = 23.4 типу [|оа1.
[аблшцл 1' !ан! ц|лочцсельнцх тпцп1в [|йсн! числа 1шоэ*сна 3апиоувати у формат! з ф|ксовано|о
[[пзва типу Фбсяг, !с|)ппко1о' наприклад -2.3,5.0041 , або у шоупово{шу форлвотп| (у
,(!апазон дощ/стп}!их оц&чень
6айт!в с|х;рмат! з рухомо:о крапкою)' наприклад, 4.2е+2 (це е нисло -
'.|'1\|, 3.27е-3 (це е 0'00327).
!п|
2а6о4 -82т68 ...32761 а6о
-2147 48в648 ... 21 47 4в3647 3апис пе + п' означае 1ино'1(ення чисда п на 10 у степен|
аьог| !п[ 2 -82768 ...32767 | па, тобто 3а о3начення]\д
!9по0
шпа!6 в[оЁ !п|
2а6о4 0 ... 65535 або
о ...4294967295 пе*п1:п.7о!,п
!с;:т9 1!п! -*- 4 -2147 483648 ... 2147 48864'{
[

''*"
!9::о0
с:::в!с !оп9 |п[_ 4 о ..- 429496729б {3гтак 1шохсна не 3а3начати' 8нак ''_'' |1исати обов'я3ково.

!0 11
4. €итшвольний тип (с}:аг). €имвольний тип _ це 1цно}кина 3апитання
с:г:мт;<лл|в кодово| таблиц| комп'1отера А$€11. (ш;пволъ'гт,а 1" 1]1о таке тип даних?
с,'.ьл& - це оо!|.н си1цвол (1 байт), узятий у лапки на зра3ок 2. ,{к| ви 3|{аете тити даних?
;п::с;<'т'рофа, або нисло у 8-, 10- чи 16-й систепт| числення' яке € 3. 8к1 ви знаете чиолов1 тили даних?
!с(),/\()ш| сиш1волу у таблиц| А$с11.
4. 8к| ви знаете ц!лонисельн1 тптти даних?
5. ,{к! ви зна€те типи даних для д|йсних чисел?
[!рськла0 4' Розг.т:янемо о1тиси сиш|вольних зти|нних, де 6. } яких фортиатах мо}кна записати д|йсне число?
:зм|ллнитц п1, п2, п3 | п4 надамо 3начення ./|атинсько| л!тери 'А' 7 . 8к| значення мають числа 12.бе1-, |2.5е-2, 0.\2бе4, 125е-3?
(!отир}да способатци: в. .[к1 значення ма1оть числа 8.5е-1 , 92.5е2, -0'4бе3, -4е-2?
сьаг п1 = 'А', п2 = 0101' п3 = 65' п4 = 0х41
'. 9. 3 чого утворк)оться символьний тип?
10. Ёк одер)*{ати на екран| А8611-код символу?
9исло 65 - це десятковий код си1цволу'А', 101 - в!с|пдко- 11. 3 яких даних склада€тьоя лог|чний тип?
вий, 4| - тш|стнадцятковий. Ба початку останн!х двох код|в ']'2. $.к
утворити тип даних користувана?
('| 01, 41) 3апису1оть преф!кси ''0" чи ''0х" в|дпов|дно.
Бправи
1ръокло0 5. Розглянешто спос!б ви3начення десяткового 1. Фпитц!ть: а) дв1 зм!нн| х та а ц|лого типу;
б) дв! зти|нн! д|йсного
А$€11-коду деякого си1цволу' наприклад 'А': т'::г:у;в) дв| зм|нн! си:!|вольного типу. |[ро!н!ц|ал!зуйте описан!. зпт!нн|.
сБагс=,А,; !п[п=с;. 2. бтвор|ть тип даних користувача с|па, знанення1!!и да1{их якого €
:;с'пз171'омн! ц|л! нисла. .[кому д!апазону мо}1{уть нале'кати знат{о11т1я
3ти|нна п на6уде значення 65. ,|'1|!! |']х описаного типу?
3. 8к! значення мохсуть набувати' зм|нн1 типу !а9а, якщо 1уре0е|
5. .}|ог!чний тип (Боо!). .1|ог|чний тип характери3уеться дво1\[а ;:::ь!9пеё !оп9 !п| !а9а?
.}}1аченняпди даних: {а!зе (хибн1сть) | 1гше (|стина). Ёаприклад' 4. Фпитп!ть тип користувана ба!апэ |з допуститии1ии значеннями
боо! б = |гце. 3шт|нн1 щього типу зайплатоть 1 байт у падд'ят| котц- /!]||!!|х з д|апазону втд *32 000 до 32 000.
:;'потера. } 6++ значення зшл]нних типу !п| ш!о}тсна асоц|1овати з
.;:<>г'[.тними значеннями: нулто в!дпов|дае 3начення {а!зе, ус|м |н-
|!!|{м числа:\д - 1[ше' $ 3. пРисвоення
3ауваэкиплФ, 1{Ф не вс! комп1лятори п1дтриму}оть тиш да- 1. [1роста програ]ша. |{рограпла - це посл|довн|сть ко1ианд'
::г':х боо!. 1ошту, перед тиш! як його використовувати, варто з'я- ;|/! ][опош!ого}о яких 3апису!оть алгоритпд розв'язування конк-
(:у!]:]ти 1у1о)кливост! котшп|лятора. 3адач|.
1;с,':'гло|

6. €луалсбове слово то1ё. 6луэтсбове слово мо1ё допису1оть до {|о0очо .1 (про пряплокутний трикутник). [1ехай 3адано ка-
::;::;;; с|;утткт1|й, як! не поверта1оть 3начення у точку виклику '|'(,'|'![ пряш|окутного трикутника а: 3, ь : 4, 3найти периш!етр
::[|с> 71с> с|тункц|й без паратиетр1в. | !!']!()!цу трикутника.
| | про2рама [ршкугпншк1
!. '|'иппи !{ористувана. }(р|тш вище описаних стандартних ,,|пс!цое <!оз1геап.б>
#.пс!ц6е <па1ь.п>
:':т:: !;т /\11||их' 1уто}1{|{а створ1овати типи |сористувача
мо!ё па!п()
!

! ,ур:6-{.'''"'"'у, ." {
!п|а=3,ь=4'с'р,5; // 3а0асмо 0ов>кцнц с[пор!н
с=з9Ё(а"а+б"б)
!

/| @бчцслюемо е!погпенузу
||1лсолс'тссл|) 6. Фт:итпешло тип }<!!!<!э1 для 1то3начення коротких р=а+ь+с; / / Фбчцслюемо пер[1ме(пр

!! !,! || \ /1![|! !|х


э=а-б/2; |/ @бнаолюемо ллощу
бс-.з зтт:ттсу: сош! << |!р
/| 3цвоёцмо 3начення перцмегпра
=|| << р<< "\п'';
!у1гс:<|о| ш::з!9пе6 з!.:ог! !п| (!!&!э1;. соц1 << "5 = " << з << "\п"; // гпа площ! на екран
соц[ << ''8иконав (вак|н Б."
1!м;::г;! (к!!1' |<|!2) тдього типу у програм| мо)кна оголосити
)
! |1 !1 !,;!!,;',! !,п! |
' }<:!1);

!, 13
€и:ивол ''*'' повначае операц!1о мнохсення' а " /'' * д1лення. !п1 Б' а; |!оа| с;
соц| << "8вед1ть ц1ле число\г':'';
Функц|я зчг1() призначена для о6нислет1ня квядратного кореня. с]п >> а; клав!апурш
!/ 8воёцмо 3начення а з
1]я функц1я визначена у 6!бл|отец| гпа{}:.}:, яку п|д'едну|оть соц| << "8вед!ть д!йоне нисло\п'';
!! 8во0цмо 3начення с 3 клав'а1пурц
|{!! початку програ]ши. |!|сля виконання програ1ии на екран! с|п >> о;
ь = с'а;
отри1\[а€1\[о еоц| << "а = " << а << ''\п";
Р=12 соц| << 'с = " << с << "\п";
5=6 соц| << "ь = "; соц! << Б << "\п'';
8иконав (вак|н 8' )

2. прцсво€ппя. правила уагодэ|сенпя тип1в. $о-


}€о:шанда ,{ля введення з:тачення 3м!н!{о! з клав!атури використову-
{:,|'[г€я конструкц!я с!п >>.
51кщо ввести дан! так: а : 2, с : 3.8, то ш!сля виконання
1ианда присво€ння ш[ае такий загальний вигляд:
<назва зм!нно1> - <вираз>
!!])огра1у[и на екран! отримае1шо

або а=2
с=3.8
<на3ва зм!нно| 1> = <назва зм!нно!2> = ... = <назва зм!нно| б=7
\> = <вираз>
€понаткув!дбулося 1шно}*сення (с'а:3.8'2: 7'6)' Фс_
[1я колсан0ш.06чутел|ооться вираз | його 311аче:{11я надаеть- ;с!.лпьки 31и!нна 0 ц|лого типу' то дробову частину числа 7,6 6у-
ся зм!нн!й або дек!льком зм|ннпттт'. Бшроз призначений для ;;сг в!дкинено ! зтш|нн!й } надано значення 7. Б!дбулося неявне
описування фортшул, 3а якими виконуватимуться обчислення. !,(' )!т[ворення т'шп1в (перетворення 3а замовчуваг:нятш) ..{кщо
е.
Бираз мо}!се тчц!отити числа' стал|' зм!нн!, назви функц|й, в'ед-
[

у 11опередн!й програм! зм!кну 0 ого4осити як з:ш|нну типу


|!оа[, то отри1ша€мо 6 : 7,6.
гтан| символа1у!и операц|й.
Розгляне:шо приклади написання кош|а}1д присво€ння:
а-_8 _
!,ля явноэо пере7пворення пъшп!6 новий тип зада1оть у кру-
|',!]'х ду}кках перед зу[!нно1о або виразоти. .[кщо у програм|
2;
с=о=а+4;
е=с/5+о; |!|! !|[о записати кош!анду

3м|нна | вираз не обов'язково повинн! бути одного типу. !=(!п!)с*а;


[(;л[:и того, у вираз! мо}1суть бути дан! р|зних чшсловшх тип|в 'п'сг пг!д час обчиелення вира3у спочатку в!дбудеться перетво-
_ мно){{ення (с ' а:
|)|!!|!['| даного с до ц!лого типу (3), . пот!м
(.ллт.1сшан1 вирази). 8кщо тип зул|нно[ :те зб|гаеться 3 типом ви-

|),!3у' то у 6*+ в|дбуваоться авто1шатичне перетворення (узгод- ;! 2 : 6). Фтритшаомо а =2,с=3.8, б=6.
эпс<:гтл;я) тип!в. [!тстцо }1с у програтш| цто команду 8аписати так:
Розр|знятоть яв}{е та неявне у8год}1(ення тип!в' 3 яки1ши 6 = (|п|)(с'а);
::;г п:пйо1ииш|ося на прикладах.
в!дбудеться 1у|но'кення (с ' а:3.8'2 -_ 7,6), а п|з-
с

'|'и (|||о!{атку
(ь : 7)' от-
| [:ца.тл| по3а ко1ша]ца1у{и йена 31у1!н:!}о( подавати1!|емо ку|юивоти.
г:!:::с: результат буде перетворе}1пй до ц!лого чиола
||рллкла0 1. Розгляне1у[о програ1шу' де 3начення зм!нно! с
':'::::у !п| треба по1шно)*сити на 3начення з:ш!нно1 с типу 1|оа| |!!'!м|](]мо а = 2, с= $.$, ! = 7.
()'гэке, у вишадку використання явного перетворення тип|в
(::|71:пс>:з|71тт| .:исла вводитиме1у1о з клав|атури) |
результат *;;г'п,1г!бпто сте11{ити' до яких еле}лент!в вира3у воно 3астосову-
!!!!/\!!'|']| ;зм!:::+|й 0 тишу !п|:
|'|'|.(]'|. 9згодхсення тип!в у вира3ах в|д6уваеться 3 урахуван_
|| м!!ожо'!ня чцсвл
!!!пс!ш6о <.о5!г€ап.ь>
:с::м ппр!оритет!в тип!в. 8азначимо шр!оритети тип!в за |х:*!м
то!4 :т::т!г:() |'|!.!,,1!!!||['|м: 0ошб|е, [!оа|, |оп9, !п!, .з[оЁ. 3а за:шовчуванням ре_
{ {!у |1еретвор1оеться до стартшого типу.
'!|''!'||']'

!'! 15
Бправи
! [!!ноження чисел як зра3ки' ро3-
1. Розглянув1пи програми [рикщник1
пт':тэк|т;' задачу ]'|, т вар!анта з розд1лу ''3адан|" трьома спосо6ами: /|Ёя операц|1'. 3нанення 3м!}{т{о! зб|ль:тлуеться ца одинищ!о.
"'й'"'
а) задайте вх|дн! дан| п!д час оголо1пення зм!нних; |(<;манди ++а' а++ р!вноеильн| команд! а = а + 1. Фортиа |нкре-
б) задайте вх|дн! дан| командами присво€1{ня;
м()'!']'у (декре:иенту} впливае }1& порядок викон€}ння операщ!й у
в) введ|ть вх1дн1 дан! з клав|атури'
2. 6клад|ть програ1\1у ровв'язування задан| ф 1 з розд!лу
''3адач|'' !!!4[)д3&х. Розглянемо це на прикладах.
|з клав!атури' [1ршкла0 3. Результати вико}!ав}тя комавд
]1аступного п!с':я вап-того вар|авта' ,['ан1 введ!ть
а -2;
б=3*++а;
$ 4. виРА3и {,у/(уть таки1у{и: а:3, ь:3.3:9. ?ут використано операц!то
в табл' 3' у преф1ксн!й форм!: спочатку зб|льтшуеться 8наче}{-
1. Арифметичп1 операц!т над даними наведен| !пт:сре:шенц:
!облштця 3' Аршфмегпшнн! опероц11 ::гп з:и|нно! о на одини|]ю, & п|зн|тпе обчисл1оеться вира3.
1ршкпа0 4. Розглянемо команди
|[оисвооння знака с=5;6=(5++)+4;
1!1но;*сеняя, д|лення, остача 1ут споватку обнисл1о€ться вираз (для 0) з с: б, а пот|м
в1л л1ленв ]!{)!.'!!'{шуеться значення зш:!нно! с на 0ди}{иц}о' ?обто а :
вання' в|дн|мання с' | {:5+ 4:9, с:с + 1:5 + 1:6(цеоперац|я!нкреплен_
яння (в1дно1пення
|'у у поотф!ксн1:? форш:!)" Фск|льки у вираз| 3&писано три
Розглянемо операщ|т пор!вняння' операц|я:: означас до- !!!!!!|{!{ шлтос "'*" ш|дряд, то для однов}тачттого 3ада}тпя порядку

р|в}1}ое, !: - не дор|внюе' ''!|(,[)11ц!й використано кругл! ду}кки.


б|ль:ше або дор!внтое- Аналог!чно опера.ц1я декре1шенту мае такий вид:
Биконання ко}1(но| операц!] 3д|йснтоеться 3 урахува!{ням
[хгт!х пр|оритет|в (тут 1
_ найвищий)' [ля зш[|ни зви[тайного <зм|нна> або <зм!нна>-

'
!|()})'(дку виконання операц|й використову1оть кругл! ду)*ски' !}дтачення зм|.нно| 3ме1т1шу6ться на. одиниц}о. $оманди * -а та
[[ ршкла0.[. Розглянемо ре3ультати
виконання операц!й я 7ц[:оть як ! ком&нд& ?=3_1.
?--5+4--61 121 4-2=1; ||рсокла0 5. Ревультати виконан}|я команд
2 " (-5 + 4) =-2; 121(4-2)=6;
х= 4:
7%3=1', 7'ь3--5=_5.
у= 15/--х;
![рштс.по0 2. |1ехай х:3, у:5' .(ано вира3
х:: у' 3на-
.'у/1у'|'ь т!}кими: * : 3, у : 15 | 3 :5. ?ут споч&тку 3н€!чення
{а!зе (хибн!сть)' оск!льки 3начення
'|('!|[!'|м ]_\ьо1.о виразу буде а п!зн!т'1е обчислк)€ться
;тм!п:г::.:х х,г'а у не рьн! м|этс собото' а 3наченняш{
вира3у х|: у !|м.!|||()т .т 31![е}т11туеться [1а оди}1ицто,

!гт:с: (|с:':'ипп;т), знанення\{и вира3!в т


> !, $ 1: (у - 2) _ в!д- ,!!!|)|!]} дл$\ у"

т:с::т171::<> {а!зе'г:т !гше. || рсстсла0 6. |||д час викот{ан1{я ко}танд


2. ():пс:раг1!1 |пткременту (++) та декре1иенту (__)' Фперац|! 1 ." 20:

!!!!(|)('м(}|!'|'у ! 11етсрс:менту |снутоть у двох срормах -


преф!ксн''й о ,.
- 10;
({_ *)

.г;: оос:ссопс|л!'лсс'оо1й.5{т<тт1о символи ++ (--) 3аписан! перед 3м|н- !1м!!!!1|4м /, 9 6удуть ттадан1 3начення 19 ! 10 в|дпов|дтто.
а
||{!|(' '|'{) :цс: |пгпс1;етиент (декретшент) у преф!ксн|й форм|' !!. |(ом:::ц1а приево€пвя, сум1щоиа з арифмети1!}[ок) о11ора-
}!! !!1,(! п:!с'.г::: :тм1тттпс;1 у постф|ксн|й' Фперац|я
|нкрепленту ш{ас
;1|с:<г. !![об надати 3н8ченвя зм|.нйй, 1шох{|{а скористатися ко-
!,!!' !|!! |!!!!,!,|,/[:

! {!
'.,!1 ! !

опе- | |1:са.тс;оо0 7. |\ехай оголошено зм|нн!
з деяко1о арифметично1о
м!!!!/(()!() |![)и()!]ос|1ня' сум|щено}о !п{х=_2,х1'а=з;
о/о:' 3атальний вигляд команди
|)|!!(!(]!()' 1! с11ме:
*:, -:, ':, /_, |!оа| р| = 3.1415926' п = 16' [ц{' [;

'|'сг71| у результат| виконання команд


<вира3> х! = абз(х); а=рош10(а);
<зм1нна> <символ арифметинно: операц!|>= &г:!=соэ(2-Р!);
к - рош(п' 1./4);
м!хс символом арифметично! операц11
[3:туваэкимФ, 14Ф !|| :5чп(п)'
,,'*,''.!'* '':'' пропуск не допускаеться (це лексема)' !!м!,!!![|м х'! , а, &ш|, (, п будуть надан| наступн| 3начення:
}{априклад' команди х! =аь5(-2)=1-2!=2;
а=а+10 та ?+=]0 ;т рош'|0(3) =
&т:[ = со5(2
-
'':0з=
1оо0;
3.14'15926) = 1;

1;|тзносильн!. Биконавтши
!х одер}кимо однаковий ре3ультат' | . рош(16, 1./4)=161|!=2;
*'.'' викориотовувати а +-'! 0' А за:и!сть ко1ианди :;:=з9г1(16)=/то =+.
- '''''мальн!тше *=
4'
4 ь мо}кт1а т!утсат:ут 6 ь,
ь = |!1лсс'тсла0 $. Ёехай у програш!! оголо:шен! зтш!нн| ь1 , ь2
4. 1!1атетшатичн| функц!!' }с! стандартн!
математичн| ;':п::у с!оцб|е! нехай б=7.6. 1од| п|сля виконання команд
!ому' якп{о вони
функц|| у с++ описан! у
6|бл!отец| тпа1}л'}:' !) 1 = се!|(ь)'
шео6х!дно записати !::] . {!оо(б);
використову1оться' на початку програш[и
заголовк|в !!м!!!!!!! б1 набуде 3начення 8, а з:ш!ннаб2 - 3начення 7.
рядок п!д'однання потр|бного файлу !/с:! |нтш| математичн! функц|[ :иоэкна вира3ити чере3 ос-
#!пс!цсе <па1п.п>:. !!|.н,!.. !1лприклад1 €19х= 1 /19х, !о9ьа = !п(а) / !п(б) тотцо.
Фсновн!1иатеш[атичн|функц![6|6л|отекигпа||}:'Бнаведен!у !!сг<:.;л|довн!сть виконання операц|й у вира3ах така ,к' як у
т'дтбл. 4. Аргументи функц|й 3аписують у
круглих ду)кках' м.!'|'.!м.!'|'иц|, й визнанаеться правило1ш пр|оритет|в:
! аб лшця 4. А1[ атпемапьшнн1 функц11 !)сб,:ис-тпототъся 3наче1{ня вс|х фулткфй' пс| входятъ у вира3;
1![атематичний Ёазва 1![атематичний запис 1|) :зитсонутоться операц|! приовое}1ня 3нака' мнохсення' д|-
Ёазва
с}ункп|! 3апис фуякп|'1
'|.|}!!!'!
остач|
':т: в!д д!дення;
{аБв(х) !!) :гитсонутоться операц|] додавання та в!дн|тшання.
аБз(х) !4 1"1

сов(т) асов(х) агсов(х)


()::с:;>ац|[ одного
р|вня викону|оться посл|довно зл|ва на-
сов(х)
агсв!п(т) !]]}.!]!(). /{ля зм!ни порядку виконання операц|й використову-
з|п(х) в!п(х) аз|п(х)
а1ап(х) агс0д(т) ш|'|'!. !(|)угл! дуэкки. €потатку обчислто:оться вира3и у ду}кках
{,ап(х) [я(т)
::*о{! ::с:1;тпе у внутр|тпн|х, п|зн|тпе - у зовЁтпн|х. 1[!льк]стпь в!0-
1од(х) 1п(т) 3аокругл1ое чу|сло х
се!1(х) п!|!!!''.!.\' ! :эокршптшх 0уэюок у вшра3' повшнна бупъш оанаковою.
у! до 6|льтлого ц|лого
ротп(х,у) !с:! с:.лтетшенти вираз!в (дро6и, пока3ник сте1теня' |ндекси)
,!; в|дкидае дробову |!||!{]|(!у|()'|'ь у горивонтальному
эцг!(х) {1оог(х) рядку. ][' багатьох випадках |х
частину чутста х
ехр(х ех [:;1гу':':, у духски. Бирази 1иопсна 3аписувати у дек|лькох ряд-
104 обчислтоо остачу в1д .1'{. "|'озривати'' вирази мо)кна' наприклад' п!сля символу
>отш10(х
{гпо0(х' у) д|лення числа , на
|!

!<т91.0(х) 1в(т)
чис]1о ц
оо
1::;;|гмс:'в'и.лт:о! операц|!. Бласне символ дублтовати не потр|бно.
||рсстсла0 9. 6кладетио програму' яка обчисл|ое 3начення
ма1оть тип ар-
9<:! тпаведен| функц||, кр|м абз(х) | рош10(х)' с]пугг:с:1!1 :т =\]х2 +7.2 -|т _ь|+5;1д1 для х : 2.
абэ(х) та рош10(х) ти-
|'ум(}|['|'у ! результату ёошБ!е' ,[ля функц!й
!!()м 1!|)!'уме; т'у | результату е 1п1'

19
|[{
*|пс|ц6е <!о5{геагп'п> !! Ф6чцслення в1)разу для поток1в виведення даних ! пов!до:илень про по_
(''|'|)()ету1

#|пс!цёе <гпа1ь'п> |и!!.'|1{и е мон|тор 1{0ристув8ч&' а для потоку введення даних _


мо!6 па!п() :г.::;1ц!д1'ур*. Фднак потоки мохсна перенацравляти, 1{априклад'
(
3'1415926; !и())|с!{а зчитувати вх!дну !нформац1}о
сопэ| {|оа| р! =
для програми не 3 кла-
- х/ 3); |!!1!'['ури' а з деякого текстового файлу на диску (див.
у = оош(х' х+7'2,1' 7 5)'{абэ(х_
'!оа1х=2,у;
5) + в!п(р!
$ ?).
!ош!..'"тп у = "'< 9 <<''\п";
2. |{о:шанда введення даних. Бадавати 3начення зм!'нни:и
у:
)
такий: *о'5!2748' !и(|')!(!|д двома способами: 3а допомого1о команди присвоення'
Результат вико1{ання програми !!!!!!|)!|клад х=3.1, або коштаътди уве0енн,я аоншх !з полов!отпу-
Бправи
склад1ть 1::: ' !(отианда уведення даних !в клав!атури дае 3могу викону_
Фбчислення вира3у як 3разком'
_**'"*"*я
1. }(ористую1'{ись програптото ва|'шого вар|аътта з розд|'тлу !|,|'|'1[ [|рограму для р!зних вх!дних даних' тцо
ро6гтть ![ б|льшт
програму для обтисле**, функи!!
аргументу' 3иконайте програму
трич1 т!!!!!('[)са.7[ьно:о (масовою)' $оманда введення >> описана у
''3адав!" ддя деякого 3н&че!111я
аргумет{ту' 3вяотуйте реаульта'ти' {;|{:::|сл'гс:1д| |ов{геа:п.}: (!э{геа:п.Б) | мае такий загальний виляд:
дл8 трьох р!зттих 3начень _-"и
;.3апи:п!ть мово!о б** так! вира31'1:

2з\п2 х
2: .'4
, _12'а'-|-Р-1,'**.5'1х31
.а.ь''9| *, -. | ', "."!"""]
: 6\ у=
{

1ов5|х
'\ у =
#'^гс1€'х '| ||:с комон0и. Биконан1{я програми 3упиняеться' €истетиа
|||!|)!.х()/\ить у ре)ким оч!кув&цня введення даного (екран тети_
гт " 'ц' у ёозс'3 - 8,5з!п2 9
!|!!|!, миготить курсор). }{ористуван набирае на клав!атур! зна_
|{!'!|!!'! :зм!нно| | натискае на клав|1шу вводу. } результат| ви_
!,..||1!!!!!'! лд|с! команди зм!нн!й 6уде присвоене конкретне 3на_
.!!|!!!!1! (':'с:, яке к0ристувач
уведе в клав!а'тури).
$ б. потоки. 1!гсп:цс; необх|дно ввести значення в!дразу для дек!лькох
_ вшввдвння дАних
.;ш.;|г:!г!|х' то мохсна а6о використати дек!льк& поток!в введен-
ввпдшння }0|! , !1{}() ус! зпс!нн! в одному потоц| с|п' з{}стосувавтпи
:}1}{1исати
']/ 6++ 1{ема6 в6удованих кома!1д уведен11я_ви- !|||!! |!!,()|'() дек|лька ко1у|а1тд ")}'', а саме:
1. |[отоки.
ве/1ення д&!{!тх.,(ля орган!зшц![
введен1{я-виветт: тут реал!_
ви3наче[1а у спец!альних мо-
,'п', >> <зм|нна 1> >> <зм!нн а2> >> .. >> <зм!нна\!>;
зовпна концепц!я поп0о1с|в' яка |
у з $ 3.
Р модул! :!:в{геагш"}: опис&н! комаг{ди введе}1ня'
1?1оду-
;;;. |'ст:::''::'[п|еш|о програму [рикрник1 3на.лення стор|н
виведе}{}1я' €! у модул! !оз1геатп"Б - ко-
.гп! оз{геагп.}: - команди *с;'11 11'' !.!}(}сти' наприклад' так:
м1|нди виведення | введення' !г:|:п' [;' с;
|вфор-
{[!д потоком розум{1оть процес уведет{ня-виведе}1ня .!! . .
( ;[;
так| с|::..[;;
м::п1|| у фат1л. |!ерифер!йя|
пристро! введення-виведе11}|я' !;: . .
шринтер' розгляда1оться як текстов!
: с;;

:п:с :с.лтав!атура' мон!тор, ав-


1|:';1 '111,' |]иконання програ1ши на клав!атур! на6ираешто
с|;::-.|':ти (див. дал!)' |[!д
тас виковання будь_яко! програ!1и ! ! (!!.!!искаемо на клав!шу Ёп1ег)
потоки д.]1я введент1я .1
'|'()м1!,г!|!|но 11!дкл1оча|оться стандарт}1'
1

(с!п}, виведегтт{я н& екран (еош{)'


виведення г, !

/(1![!1|х :з тс.т:ат:|атури
(сегг) | допом!хсний пот|к (с!ос)" \' виконання ко1ианд зм!нн| набува:оть таких
::сг::!71<гм.лт{:[!1!'! про помилки
1пс,:п1,.:11'.1'дт!

( 1':':т :7ц::;;'г':: | потоки викориотову1оть


команди введення (>>) ....|}1||,!!|. ., ;}, 0: 4, €:5. 3начення 3пЁнних тако'к мо'кна
при_ || !|(}|)(,:, пропуск. 1обто на клав!атур! лшоэкна на6рати 3 4
п

3а затшовнуванням стакдарт|{}1м э,.!!!1|| |


'|'!! !!|!!|(',,'((!!!гг:п (" ''-) даних'

2\
:1( )
4. 1{еругон! посл1довност!. $ерутон| посл|довт{ост| _ це ком-
5.-]. одним потокоу| 3м|нним мо}кна |1адату1 3начення так: с;!:;::пд|! спец|альних си:швол|в' як| використову}оться для вве-

''((,!!|{я та виведення даних' $еру:она посл|довн!сть складаеться


с!п >> а >> б >> с;.
!;г с:имволу слетп ''\'' ! спец!ально о3начешого символу. Бони
!1ктцо у списку введення (який на6рали на клав|атур!) да-
птих б|льтше, в|эк з:и|нних, то зайв! дан| будуть зчитан|
наступ- !||)!!:||{а-чен! для фортиатованого виведення результат|в обчис-
||о1о ко1шандо}о введення. ,[кщо така команда у програм| в|д- 1!(,|!|) на екран' наприклад' для переходу на новий рядок' г!о-
/{/!|!!!'{ 3вукового сигналу' а тако}к для виведення на екран де_
сутня' вони будуть про!гнорован!'
корис_
|!рограш:и необх{дно складати так, щоб 11у|му! 1цогли !!!{|!х спец|альних символ!в: апострофа' лапок тощо. Фсновн|
туватись не ли1ше укладан|, але й !нтп| осо6и' 1обто програш[и ;тс,1>\:|Ф91 посл|довност| наведен| у та6л. 5.
введен-
1ша1оть бути штасовими | зрозум|лиш:и' |{еред командо1о ! об лшця 5. 1[ еру юн1 пос л10овноспт!
текс-
ня даних варто 3аписувати команду виведення на екран (]и мволи керук)чих
|{о:шентар
тового пов!домлення-п|дка3ки про те' що саме сл!д ввести' п:осл|довностей
Баприклад' у т1рограм| }рикутник1 мо}кна вивести пов!домлення
\7 ||одати звуковий сиг11ал
''}вед|тьсторонитрикутника'.або'.а,б,с:''тощо'ав}1се \ь |{овернути курсор на один символ на3ад
( знитл;ити попеоелн|й сиштвол)
п!сля цього 3аписувати команду введення: |{ерейти на нову стор|нку
соц| << "}вед!ть сторони трикгника''; \п |{ерейти на новий рядок
с!п>>а>>б>>с; \г |{овернути куроор на початок ря]{1{а
3. }(отшанда виведе||ня даних' Аля виведення на екран \| |{еревести курсор до наступ]]о{ ттозит1|{
табуляц|!
пов!домлень|результат!вобчисленьвикористову!отьстандар-
,гний шот!к виведе1{ня соц| | команду <<, як! виз1{ачен| у \у Беотикальна табуляп|я
\\ Бивести си}1вол похило| риски
б!бл!отец! !ов||геагп.}: (оз{геагп.Б): \, Бивести символ апоотрос0а
у Бивести символ лапок
\ Бивести знак запитання
){' списку виведення мо}куть бути стал|, зм|нтт! або вирази'
посл|довност! разом 3 коментарями 3апису}оть у
списку у потоц! сош| в|докремл1о}оть кош|анда1црт 11'
!(|с,1гупон|
],].;:с.'тценти
/![я ко:пан0ш. (тал|, 3начення з}д!нних та вираз|в виво- '..!!!|{1!х. Розглянемо д!то цих посл|довностей на приклад!. ,{к-
мо)кна перегля- |||!' |!()11ти команди
/1'|'1'ься на екран у в!кно виведення' !,е в!кно
!||||

||ути за допош|ого1о команд \:!!п0ош ф ш5ег 5огееп головного в|кна


с:о(:1 << "!вага! \а\п "; сош|<< ",[ане \"а\'' введено некоректно \п";
(:()[!1 << "Биконайте програму ще раз";
пс<ттцтт|лятора або кошт6|нац!! клав!1ш А!{+Ё5'
'|екстов| пов|домлення у команд! виведеншя запису1оть у .!! .1\,./(|! ||(),цано звуковий сигнал | на екран| побачишто

.]!]!!!!{{1х. )]апки на екран виводитися не будуть' '7'::;: п а !

|)озультати виконання програш|и [рикутник (периметр | пло- /[,!!|(] ''а'' введено


!|ик<;п;айте програму
некоректно
ще ра3
::цу) моэ:стта вивести' наприклад' так:
1!;+:п1<; |}икористати посл!довн|сть' неви3начену у тиов| 6**
соц[ << "|1ериметр - "
" \ш), то комп1лятор пропустить сиш1вол посл1дов-
р;
"[лоща ||!!!!!!!.|гг.:::п71,
соц| << = '' << 5;
||'!!'!! (!!{)х[.|./1у риску) | виведе на екран ли1ше си1ивол' 3аписа-
[ !:: с:псратт| одер)ки1ио
,.!.{1 !||'',!'| [)иски (у натшому випадку л1теру ш).
! !о1тиметр = 12!_!лоща = 6
: {1!!|('.!.)!се1!ня.[. 3ам|сть керу:ово| посл!довност1 \п моэтсна вико_
)!:с б:ц,:гпмо' ре3ультати 3лива}оться. ,(ля того, щоб дан| !)!|(''г()|}увати команду еп01 _ к|нець рядка. Ёаприклад, ц| дв!
!!!!!||)/(!|.'||!(:т, у :потр|бт1о1иу для користувача вигляд|, використо- !1 ( )м ]! | |,,[и р|вносильн!:

\, !( )'|'!. псс' ;у
! ! :, ! пс;о.ш|,гцовттост|.
1
:с п :

23
:1 :1
соц| << "|=" << | << ''\п''; у ггрогра:ш! 1рикутник2 отптсано ш1д'еднанття б!бл!отеки
соц| << ''{=" << { << епо!;.
<:оп|о.}:, де ви3}1ачена функщ!я с!гэс() - очи!цен}1я екрана та фултк-
|}сьувоэсеннл 2. 8ттачення д!йсних чисед (т}1п {!оа1) мо;кна виво_ п1|я 9е!сБ(), яка да€ {3!шоту 3ащ)и1иати т{а екра]т[ ревультати вико_
/\итш ||а екран у стандартному або науковому форматах' '[[ктцо |]{}нкя цроцра]у!и' доки не буде натиснута дов1;ъна клав|п1а ва
з1{вченнп даного необх:дно заокруглити до вначуш{их цифр'
'} :с.л:аз!атд:|.
то перед командо1о виведенпя треба 3аписати соц1.ргео1в!оп(п)'
Аля подан}{8 ревультат!в у науковому формат! нео6х!дно !,ов|0ка. ,{ля розв'язувацня типових задач про трикутник на_

п|д'еднати файл заголовка !опап!р.}: ! перед командо}о виведен- ведемо формули обчисленпя деяких вели(лин:
в!дстань 4 м|хс точками {хт, ут), (хп, уа\:
соц| << 5е1!о$'!а9з(!о$ : :вс!еп!||!с);. _ (у,
6 =
'"\2
+ - у")' ;

3а0очо -| (про трикутн|{к' 3адаший координата1ши вер- '/{*,


координати сере]ини в!д>!зка: х: (х|+ х2)/2, у : (!у+ уэ)/2;
пшин). ,(ано координати трь0х вер1пин трикутника А(1; 1)' п!впериметр трикутника: Р: (а + 6 + с\ / 2;
в(2; 2) та с(_1; 2). Ф6нислити мвд!а|ту /пь | рад!ус описаного п.т|оп{а трикутника1' = {рр - $р -щр *
"1
;

|{ола г' висо?а трикут'!ика: !т.:2' / о, !оь:2в / ь, ьс:2в / с,


#!пс!ц6е <!ов!геап.б> /| [рищтпнвк2 6!сектриса трикутника | |ц'а -
#|пс!ц0е <па1|'Б> // Б!6л|опека ма!пема|пцчнцх функц!й
=
*{;"^Р "' '
#!пс|ц{е <соп!о.[т>
мо!0 па|п() шр =*'{"ФФ-Ф , 0у
'
=$+;'''-
о!гьо(); рад!ус описаного кола: -Р - а0с / (4в\з
{
// @нощаемо екран
|!оа: х1 , х2, х3, у1 , у2, у31' // @еопошуомо зм|нн1 па ввоёцмо ёан| рад!ус вписаного кола; г : в / Р,
соц| << ''9вед|ть координати тонки А";
де о,0, с - сторони' а &, Р, у* в!дпов!дно кути трикутни1{а.
с!п >> х1 >> у1;
соц| << "}ведЁь координати тонки 8'';
с1п >> х2 >> у2;
5. !1ерепаправлепня поток1в уведепня-виведеппя у м$
соц1 << "9вед!ть координати точки 6"; !)()$. 1нод! вх!дн| дан! для ехе_файлу програми 3рг{но 3читу-
с!п >> х3 >> у3; !!!!1'и 3 деяк0г0 файлу, а не вводити ко]1сного разу вру1ну а
!!оа| а, б, с, х, у, пб, р, э, с;
!/ Феолош;усмо 0о0агпков! зм!нн!
гс.:п:пв!атури. Аля цього необх!дно перенаправити пот!к уведен-
!! Ф6чцслюсмо ёовэкцнц сгпор|н !прцку!пнцка
а = эч((рош((х3 - у2],' 2\ + рош((у3 - у2)' 2';); г:::, ув|втпи у командно1иу рядку
б = зчЁ(рош((х1 - х3)' 2) + рош((у1 'уз)' 2));
с = 5чЁ(рош((х1 - у2)' 2) + рош((у1 - у2\' 2)); <назва ехе-файлу> < <назва файлу з вх|дними даними>
х = (х1 + х3) / 2; !/ Ф6чцслюемо коор0шнатпо
у = (у1 + у3) / 2; !|-сере0они с/поронц ь 1ршкла0 1. Ёехай програма 1рикутник2 з6ер|гаетьея у
йь = эчп!рош((х - х2), 2) + рош((у 'у2),2\\; /! Ф6чцслюсмо ме01ану гпб с|г;п{{.гл! !!уг|}.ехе, а у файл! 0ап!.1х{ 8аписано тп|сть д!йсътшх ни_
р = (а + Б + с| /2; /| Ф6чцслюемо перцмепр
- - -
5 = 5чг{(р (р' а) (р _ ь) (р _ с)); /! Фбчцслюсмо площу !'('.,| ' координат вер1пит трикутника. 1од! викот1ати програ]иу
-
г = а б с | (4' з|; |/ @6чцслюомо раё!ус | ;г,:итати для не! дан! з файлу 0ап!.{хЁ мо}1сна так:
*

соц| << "пб =' пб <<'\п'; 8цвоёцмо 3начення ме0!анц


'
<< //

соц1 << "г = '' << г << ''\п"; /!8цво0цмо ра0|ус !уг!к.ехе < 6ап|'{х[
/ ! 3агпршмусмо ре3уль[па1п!! на екран!
9е1сп(); ![об вивести ре3ультати вико1!ання програми у файл, у
) }{|)мп|{дно1иу рядку сл!д увести
||!д нас виконання програми функц!я с|гэс() з|тре з екрана
<на3ва ехе-файлу> > <назва файлу з ре3ультатами>
ус:| результати та пов!домлення по:1ередтт!х програш| (якщо та-
:с| будуть), | на чисто:шу екран! матиш1емо !{отиандо:о 1уг!&.ехе > геэ1.|х|. результати програ]ши {уг|}.ехе
гпб = 2.061553 бу/(уч'ь занесен! у файл гев1 .{хЁ.
г=1.581 '139

25
24
!|!<;а:сллд одночасно перенаправляти два потоки' тобто зчи- Адреси зо6раэкатоться ш:|стнадцяткови]ци числатли | п|д
'|'у|}!|'г|4 д1ан| з одшого файлу та виводити |х у |нштий: '!!!(: !(()х{ного ви1{онання програми пдоэкуть бути р!зними.
<на3ва ехе_файлу> < <на3ва файлу з вх.дними даними> 2. Бказ1вники. у
мов! с++ е 1це один зас!б визначення ад-
> <назва файлу з результатами> |){.(||! /{аного - це вка3|вники. Бтсаз]втьшк _ це зм|нна' 3начен_
,{кщо ре3ультати файлу {!!е1 необх!дно використати як ;!}!м ,ткот е адреса. Бона вказуе на початок област| оперативно|
гзх!дн| дан! файлу {!!е2, то стандартне введення одн|е| програш[и ::;:м'[тт|, де 3бер|га€ться дане. Бказ!вники да1оть з1шогу оперу-
мо}1{на з'еднати канало1\{ !з стандартним виведенням |нтпо[ 1!е 3 11у!ена}|и даних' а 3 |х адресами. Бказ|вники утвор1о_
'!]!'|'|.!
'|'&к: '|''|'!,'['ак:
<тип даного> "<назва вка3!вника>;
{|!е1 ! {!!е2

Бправи [!1оакна етвортовати вка3!вники на стал|' зм!нн|, функц||,


!;г:п:| вказ|в:,1ик|1 тощо. @собл.иво ефективно:о е робота 3 вка3|в-
1. Розгляньте вправу 1 $ 4. |{ерероб!ть програ1иу для о6нислення
.]|{ачення функц!! ва1шого вар|анта з розд!лу ''3адан!'', використову1очи .!!|!(!|т\{и на рядки та масиви. [х :ии вивчатиме1до у $$ 12, 13.
|{оманду введення даних. 8иконайте програму трин| для трьох р!зних ! !априклад,
значень аргу1иенту. 3анотуйте результати. !п|
-попег;
2. Розв'яэ*с|ть 3адачу ]\} 2 вашлого вар|анту з розд!лу "'3адаи|''. |[ро_ {!оа1 "г!$1, -рпА' -рп8;
експери1!!ентуйте з функц!ями с!гзсг() та ое1с!т(). Результати:
а) вивед!ть на екран | занотуйте у зв!т;
'|'ут оголоште11о вказ|вник на ц|лий тип по|пе!'| вказ|вники
б) занес!ть у файл 1!1угев.0а{. *:;:71!йсний тип г!51' рг!А, рг|8. Ёадати 3начення вка3!вникам
3. 6твор!ть текстовий файл, який пл|стить 3начення 1шести коорди_ м())!с!!а так:
!!ат вер1пин трикут11ика. 8иконайте програму {рикщник2, зтитавтпи вх!д_
<на3ва вказ!вника> = <адреса зм!нно[>;
:г1 дан| з! створеного с}айлу.

|! рсокла0 2. Р|ехай у програм! оголотлен| вм|нн|


$ 6. АдРвси дАних. вкА3|вники. !п{ п = 10; {!оа| ь1ц61, э1ш02, з1ц63;

динАм1чнА пАм'ять '['од1 тшо*кна оголосити вка3|вники по|пег | г|э| на ц| зпл|нн|:


попег = &п;
1. Адреси даних. ,{ля розв'язування специф!чних для мо- г!э| = &з1ш61;
ви €** задач (робота 3 масивами, побудова граф!чних зобра- [!51 = &5{ш03'
}кень | динатш!тних ефект!в) потр|бно 3нати не т!льки 3наче1{- ()'гримати вш:|стиме ком!рки' на яку вка3уе вказ|вник'
}{я деяко! зм|ннот' але й:{ адресу в оперативЁй папт'ят|. !,ля ви-
м{!?!(!!а 3а допомогок) ко11струкц|| *<вка3!вник>, наприклад *г|51 е
3начення адреси даного у па1и'ят1 е опероц!я вш'ш&чен,{я а0ресш
{!!{![!{'!1||я1и зтш!нно| э1ц03. Бказ|вники застосову1оть таконс для
&<назва даного> !||!,/({! !!|]я 3начень 3м|нни1и:

[!51 = &5{ш01'
[|ршкло0 1. Розглянемо фрагтшент програми -г!51
= 1.65' // | ком!рку пам\гп! 0ля зм'нно/ 3!ца1 6у0е занесено ч!1сло 1.65
!п| а = 25; ']'ут вказ|вник г!51 вка3уватиме на адресу зул1нтто| $!цо1, а
соц| << "3начення зм!ннот а = " << а << 'ъ";
соц1 << ''фресою 3м!нно] а о '' << &а; !! зтц!нн!й з1ш01 буде присво€но значення 1.65.
|!1!(:|!о
|!рсскла0 3' 06числити дов}кини (в 6айтах) вказ1вник1в на
} результат! виконат{ня цих команд на екран! одер'киш{о:
;п!;;:п! типи даних 1цо)*{на так:
3наченнязм!нно|а=25 !п1
-рг1_!;
ёош6|е -р(_0;
фресою зм!ннот а в 0ха02254 соц| << ''\пЁа ц|лий тип '' << э!:ео{(рг|_!);
соц| << "\пЁа д!йсний тип " << э!аео{(рп_6);
соц! << "\пЁа символьний тип '' << в!аео{(рЁ_о);
(!
1|
21
|!!!:!,,{алег!дь в!до:шо, що зтш!нних буде багато, т{априклад' 3ядач1
||<;р:еконайтесь' що ус! вище описан! вказ!вники у пашт'я- ()!![){1ц}овання м8сив!в (див. дал|) великих розм!р!в' |/ таких
':'| гс<лмп'[отера м&к)ть однаковий обсяг.
адках 3астооову:оть динам!тну орган!аащ!то пам' ят!'
!}:с:лз1вттики ]поэпна переааресовува7п1!. 3окрема, у прикла-
!! ]! !!

0ршточшп 0шноуш1чпо1 орэош|аоч11 полш'ягп| полягае у то_


71| 2 влсаз!внику г!з| спочатку присвоено адрееу з:и1нно[ э|ш0'!, а
пп<;'г!:ш - з:ц|нно! э1шё3. 1-{е правило не д!е, якщо вказ!вник е
му, йо для зм|нттих надаеться па1у['ять за необх!дтт!стто (за
()тг|ло1о. 6талий вказ|вник' що вка8увати1!:емо на одну ! ту эк пз:сг:з!вкото програм1ста). Аал! щ| вм!нн! опрацьовутоть ! в по-
,:,;г!бний 1шо1шект пам'ять вив!льняк)ть (знову 3а вка3!вко1о
1|дресу' оголо1цук)ть так:
!! | )()граш[|ста). так| зм!нн! називак)ть ся 0шшо ;уа|ч!'ш]'1т'.
соп5| !п| -г!к;
.(ля роботи 3 динаш!!чништи зш!!н1тиш[и в}1користову1оть вка-
,(ля вказ!вник!в залехсно в|д операц|йно! сиотеш1и та верс!| ;:!:зпггдки. [ля вид!лення динам!чно! пам'ят| 3астоеову€ться ко_
ко:цш|дятора резервуеться 2 а6о 4 6айтут в оперативн|й пам'ят|. м!!!{дв пеш так:
Ёад вказ!в1тика:ути визначен! ариф:шетитн| операц!! та опе_
<тип вказ!вника> *<назва> = пеш <тип зм!нно|>;
рац|| пор|вняння' описан! в табл. 6.
| аб лшця 6 . 0 перац1!, вц3нацен! на0 в каз!внц комц
[1я коман0ш пеш.,[ля в!дпов|дного типу
зм!1{но1 автома-
0певаш|я ||риклади | поясшення '|']!|]}!о на'{аеться необх|дна 11еперервна д!лянка т{а1у!'ят|' ко-
|[ор!вн:ое 3начення двох вкав!вник!в (адреси' на а вкаа!вник вка3уе на
м!!|{да пеш повертае о6сяг ц!е! д!лявки'
як! вони вказутоть). }1априклад, якщо вказ|вники ком-
вказу1оть на одне ! те этс саме дане' то ре3ульт&то1\[ |! |[очаток. Ёаприклад, щоб 3аре3ервувати у па}}д'ят!
:п'г<ггера область для збер!гання значення ц|лого типу'
пор!вняння у&1 ==у[2 буде !стина, !накпте _ хта6-
н|сть {!!!(]'госову1оть таку 1соманду:
у[1- у&2. Бикористовуеться для виз:|ачення к!лъ- !п|'рг1 = пош !п|;.
кост! елемент!в. як| наявй м1яс лво:ша вказ1вникалли
+- м[1 + [, у[1 _ [. 3находить вказ!вник, який зм!пде_
Ёадати д!лявку па1ш'ят! й в!дразу 3анести у не! 3н&чення
ний в!дносно даного на Ё одиниць м{})|сна так:
!п| "рг!2 = пеш |1оа1(3.14);.
2.,(инапл1чна патш'ять. коп{анди пеш ! {е|е1е. 3ттаченкя 1/ адресу, 1{а яку показуе рЁ2, 6уде 8&несено иисло 3,14'
да1{|1х у па]ш'ят| комп'|отера 1шо)1с1{& з6ер!гати в област! даних
(статинна пам'ять)' у стеку або в динам!чн1й па:и'ят! (''на ку- {3 динатш!нно1о з}[!нно|о мо}кна вико}|увати операц!|' ви3на-
п1"). }/с| 31ш!нн!' як| ми розглядали дос|' _ статичн|. |||д нас
,:с,::! для даних в!дпов|дного 6азового типу.
пам'ять необх|д-
|"]!сля опрац1овант{я динам|чних зм|1тних
|х оголотшенЁя система &втоматично надае для абер|гання !х_ вказ!вник ва!{улити. ,{,к:цо цього
г:сл п;ив!льну1ту!' а в!дпов!дний
н|х значень певн|.1й о6сяг оперативно! па:ш'ят!, | цей розпод|л Бив|.дьняк)ть па-
пам'ят! 3алитшаеться не3м|н1{им протягом виконання програ- }|.! :|робити' то пам'ять мохсва вичерпати.

м''!']'ь за дошомого|о ко1ианди


ми. шам'ять' нада1ла цим 3м|нним' ре3ервуеться (ф!ксуеться)
у середин! ехе-файлу в!дкомп!льовано! програ]!1и. Ёав!ть як1цо
не вс! зм1нн! будуть використан! у програм|, па}1'ять буде
:]{1ре3ервована, тобто використана неефективно. |{ам'ять, на- 1!\об вказ|вник 1{е вка3ував }{& ,кодну д!лянку п&м'ят|,
{1сггт: необх!дно занулити тако}о командо|о:
/ц1||{& таки1ш з1!Ённим' вив!льняеться ли1ше п|едя виконання
!|[[)огр&ш1и. 1ому в оперативн|й пам'ят! модсна розти|стити ли_ <назва вка3!вника> = ]ч![]!_|_;
::пе обтшеэкетту к!льк!сть даних.
Фднак е задан!, де 3а3далег!дь нев|домо' ск!льки 31у:!нких ||начення:ш (адресо:о) такого вка3!вника буде 1тульов& адре_
ггсггр!бгло для |хнього ро3в'я3ування' а' от9[(е' який обсяг па- !!.! ()х00000000. 1ут не 1шо)1се буте розтш!тцет{е зн&чення х{одно_
м'эпт'! ттотр|бно зарезервувати' або задат|, у яких' навпаки' !1) /('[[{ого.

29
2114
1рсокло0 6. Розгляне1ио' як в|дбуваеться розпод|л пам'ят!. |
! |!()лову !нформац|то.
}{адапло па1и'ятьдля двох зм|нних ц!лого типу та присво|мо |ти 1снуо дек|лька б|бл1отечних функц|й, як| да1оть 31шогу зчи-
деяк| 3начен1{я. |{|зн|тпе вив|льнитцо пам,ять. ':':п':'и |нформац|то з файлу або спрямовувати пот|к виведення у
#!пс|ц0е <!о$|геап.п>
мо!0 па!п()
с|::п!{л. Функц||, як| розглядатимемо' описан| в б|бл1отец|
{
|':;{,геатп.}:. [ому для роботи з файлами насамперед необх|дно
|п| -о'| = пеш !п|; // [огпуемо пам'я!пь 0ля ц!лоео чцсла : : !7цгслтонити саме цто б!бл|отеку.
"с1 = 5; !/ 3м!нна *с1 на6увае 3начення 5
-с2 *с2 3ауваосення.[. } модул! {в!геатп.}: тако)к м!стяться описи стан-
!п[ = пеш !п|(7) ; // 8аё!ляопься пам'ягпь ёпя с2 / набувае значення 7
соц| << *с1 << "\{" << *с2 << "\п"; /| Бцвоёцмо 5 гпа 7 дартних поток|в соц1 ! с1п. 1ому, щоб зчитати !нформац!то з
// |1ереа0ресац!я - с1 вка3ува[пцмемо на [пу саму мон!тора' модуль 1ов{геагп'}: п!д-
с1 = с2'
соц1 << *с1
// 0!лянку пам'ягп!, що ! с2
<< "\1" << "с2 << ''\п''; // 8цвоёцмо 7 па 7
*:11;'":т;;,;:#":'ан
6е!е1е(с2); /| [1ам'япь, наёану ёля с2, вцв!льнясмо .(ля опрац1овання файлу його необх|дно в|дкру|ту!' вико-
соц| << *о1 << ''\п''; // 8цвоёцмо 7 :п::'п'и потр|бн| д|| та закрити.
)

!ов10ка 1. )[' стаядарт! А-}.{$1 тиови 6 у модулях в161|Б.}: та а1]ос.}: 1. 3нитування даних 1з файлу. ]]1об знитати вх!дн! дан! з
визначен| функц!! гпа!!ос ! са|!ос для т{адання дина:ш!нно1 пам'ят!, <|л;п[.1лу, необх|дно оголосити файлову зм|нну та в|дкрити файл
а тако}*с функц!я для вив!льнет:т:я пам'ят|. .{етальн|тпе про '/(./!,,т
читання так (розглянемо два способи):
ц! функц!| мо}кна 'гёе
прочитати у дов!дниках.
!{з!геап <на3ва файлово1 зм!нно|>(<зовн1шня на3ва>,
!ов!0юа 2. 3а:ш!сть значення [х,![]!-!- :иоясна запу[еа1у!. <на3ва вка3!в- ознака'1 |ознака2 | ... | ознака[х!);
ника> = 0.

1!!)() так:
Бправи
1. !{ехай зроблен| оголо!пення !п! ш = 4, -рЁ;. 8к| з наведених ни)кче !{э1геап <на3ва файлово[ зм!нно1>;
з::ттис|в неправильн|? |1оясн|ть тотиу. <назва файлово} зм!нно|>.ореп(<зовн!шня назва>);
а) рг| = &ц; в) рг1 = -ц; д) = рп;
-(&ш)
б)р(=ш; г) -рЁ = ш; е) -рг{ = -(&ш)
2. Розв'яхс|ть задачу }ч1'э 1 з розд!лу "3адат|"ватпого вар|анта' 3асто-
/{!я колоан0. |{|дклтонаомо пот|к введення даних |з файлу та
(]у!]ав1пи для зм!нних динам!нну па1\,1'ять. !!'!.,|1!год}куетцо зв'я3ок м|:к файловото зм!нно}о у програлт| та
3- Розв'яэк|ть задачу ]ч[е 2 з розд|лу ''3адат|"ва:пого вар|анта' 3асто- с|г::[|.::ом на зовн|штньому нос|[. }{азву зовн|штнього файлу треба
(]ув{]в1пи для з:м|нних динам|тну пати'ять. !|!|!1!сувати у лапках. Фзнаки слугу1оть для ви3начення г{рав
11:;с":'!|!} до файлу (див. пункт ,,Фзнаки''). Фзнаки 3а3начати
::,,,;бов'я3ково. ][' випадку' коли |х 3адавати не потр!бно' }1аве-
$ 7. ФАйли :г,':п1 дв| форми запису тотоэкн|, ! мохсна обирати одну 3 них.
9асто виникас потреба опрацьовувати !нфор:шац|то, розти|- ![ршкла0 1. Б|дкрити зовн!гшн|й файл 1!1у1ех{.{х\ для ни-
!!(()!!у тта зовн|тшн|х нос1ях (на дисках), або виводиту1 !!!!!!!'{ 3 нього да}1их ш!о}кна так:
ре3ульта-
|'!! |!р()гра1ци не на екран штон|тора, а у
файл. |{рикладаш{и та- !!51геап [т4уЁ!!е("1йу[ех{.{х1");
!с|[х /[1!1!их е 1нформац|я про розклад транспорту' руху усп1тп- ,!!)1)'|'1!|{:
::!т:':':, <;з.у71слпт|в, наявн|сть товар|в у магазинах' адреси' ан- !{51геап |т:|уЁ|!е; 1т:1уЁ!!е.ореп(''1т4у[ех1.1х1"),
пс<":':;! 71::::| то|цо.
'|'ут _ це файлова зм!нна, що асоц!}о€ться у глрогрпги!
1т4уР!|е
<|уса(л';о ]{е сукупн!сть даних, як| розм!щен! на зовн|:пньо-
;тту :пт:с:!|, ]}0|{1)с1иа' н0
диску. {ан| у файл! на3ива- ' :::,:ц:пов1дним зовн|тпн|м файлом на диску. Бведення /.{а}1их
'хорсткому
)'|'|,('1| {'.'!('м()|!'!'1|мгт. $1льк1сть
}|!!!|()!!у|оть кома}тдо}о введення >>. Ёаприклад' ко1цанда
11
даних п|д тас опрац1овання фай_
,! !!! !!(' ;|]|:!!!1!'!1!!()'['|,. с)айли муг1!е >> 1ех{;
мохсуть м|стити як текстову, так !

;!() 31
{}читас одне да1{е 3 початку файлу 1!1у?ех1.Ёх{ до пертшого про- с[аг *{
= петш с}:ш[30];
пуску чи до си1'дволу ,,к|нець рядка'' у з:ш!нну {ех{. 8кщо треба г!!е1 >> {;
соц| << | << "\п";
3читати }1аступне дане (яке розм|щене м1э+с пер:шим ! другим 6е!е1е[] 1;

пропуска1ии), нео6х!дно шовторити попередн1о команду! то6то )

3&писати комавди йуР!1е >> |ех1; |т4уЁ||е >> 1ех{1 ; а6о використати Р!!о1.с!оэе();
)
кома}тду йуЁ!!е >> [ех1 >> {ех11;'
Фт;ке, 8читати дан! з файлу мо)*сн& 3а допо1!того1о ко1шанди: ,{етальн|тше про ко]!1анду ш[':!!е див. у $ 9. Фск!льки у програ-
м| вид!ляеться патт['япь в!дразу для 30 символ|в, то використову_
<на3ва файлово| зм!нно|> >> <зм!нна 1> (:мо кома}тду ёе|е|е[] (див. $ 12).
>> <3м!нна 2> >> ..' >> <зм!нна !ч!>
2. 3*тведеппя даних у файл. Б|дкрити файл для 3апи-
|[!сля опрац!ованвя файлу його потр!6но закрити. [е роб- ()ування у нього даних 1шох(на так:
лять так:
о|э!геагп <назва файлово| зм!нно[>(<зовн!шня назва>,
< назва файлово| зм!нно!>'с!ове() ознака'| |ознака2 | ... |ознака]ч!)

Ёаприклад, 1\:|уЁ!!е"с!ове(). Файл 1!1у?ех{.{х1 буде 3акрито. ::бо так:


|1!сля щього файлову зтш!штту }!1уР!1е у раз| потреби м0}кна
о|э!геап <назва файлово1 зм!нно'Р;
зв'язати з !т*тпитш файлом на диску. <на3ва файлово| зм!нно!>.ореп(<зовн!шня назва>);
Бизначити к|нець файлу мо}!{на 3& допомогото функц![ ео{{)
(ео{ * еп4 о| |1[е, к\нець файлу} так: [!я юо:пан0. |{|дклточа€мо пот!к виведення у файл | нала-
!'од}куемо зв'я3ок тш|хс файлово:о зтш!ннок) у програлл! та фай_
<на3ва файлово| зм!нно|>.ео()
.,|о1и на зовн!тшньотиу нос|!. Фзнаки 3азн&чати не обов'язково.

1-{я функц|я повертае г1ульове 3}1ачення' якщ0 досяг}1уто [1ршкла0 3. 3!дкрити файл 1!1у1ех{1.{х{ для запису у ньо-
тс|ттця файлу. !'() даних 1у!о}кна так (тут Ё!!еЁог7ар _ файлова зм1нна):
о{з|геап Ё!!еЁог2ар(''йу1ех[1
||ршкла0 2. !1еха.й у деяко;шу текстовому реда.ктор| створе- .{х{'');

но файли Ёех||1'4а1 ! *ех{2.ёаЁ. |[осл!довно 3чит&е1у!о 3 них да- :пбо так:


н! та виведемо !х у:ш!ст на екрав. г 1}9:гешп Р!!еРог2ар; Р!!еРог2ар.ореп("|т:1у}ех{1 .{х!'');

#[пс!ц6е <{в1геап.|'т> // 8цвеёення |нформац[с'!з файл}в |!1об занести дан| у файл, використову1оть ко1у!анду виве-
то!0 па!п()
{
/1оння даних <<. 1[априклад' п|сля виконання команд
]!э1геап г[!е1 ('1ек1 .6а1'); !п! п = 10; Р!!еЁог2ар << п;
!! 1окц не 0осяенупо к!нс1я файлу ьх[1.аа!
ш}т![е (!Ё!!е1.ео{(}) !/ 3нак ! о3начас операц!ю не м файл 1!1у?ех11.!!х! буде 3анесено число 10. 3анести дек!лька
{ /ц|!{их у файл мо'*(на так само' як | вивести !х на екра}т: вико-
|/ Ёа0асмо м!сце в пам'ягп! ёля зчцпуваноео 0аноео
с}:аг '! = пеш с!аг[30]; // 0о 30 оцмвол!в |)!{стову1очи стандартн! правила ко1ша}тди << та керутон! посл!-
Ё!!е1 >> 1; /! 3ногпуомо ёане з файлу 71с>вноот!.
ооц| << 1 << "\п"; |/ 8цво0цмо це 0ане на екран Фт*ке, записати дан| у файл моясна так:
ёе!е{е[] 1; /! 8цв|льнясмо пам'япь
) <назва файлово! зм!нно:> << <зм!нна 1> <<
/| 1овергпавмось на поча[пок коман0ц уп|т!|е
<зм|нна 2> << ... << <зм!нна \!>
Ё!!о1.с!озе(); |/ колс; ёосяануспо к!н.|я файлу' закрмвасмо йоео
Б!!о1 .ореп("1ох12.0а1-); // 8|0кровасмо файл !ех12.6а[ ёля чцгпання
ъшь[!о (!Ё!!о1.ео{()) !/ 1окц не 6осяенугпо к|нс;я файлу 3. Фзпакп. Фзнаки слугу1оть для зм|ни правил доступу до
{ ;|л:пйлу. Розглянемо деяк| з них:

:\'.4 :! (;++
33
соц| << ''9вед!ть пр!эвище та ре3ультат першого спортсмена\п";
0:;нака [|ривнаяення с!п >> папе >> ба!;
г.|е1 << папе << "\|" << ба1 << ''\п"; !/ 3апооуомо ёан! у файл
|о5::!п [д*р""." файл для читан!{я з нього !нформа_ соц! << "!вед!ть пр!звище та результат другого опортсмена\п";
тт|{. Бм!ст с]эайлу збер!гаеться с!п >> папе >> ба!;
1оэ::оц1 Ё!!е1 << папе << "\1" << ба! << "\п''; /! 3апшсуемо 0ан! у файл
сош| << "!вед!ть пр!звище та ре3ультат третього
спортсмена\п';
.о$::арр Ё1д*р*"," файл для дописуван1{я 1нформац:':' с!п >> папе >> ба!;
.[[ан| будуть записан! 1ц!нець файлу Ё!!е1 << па!пе << "\1" << ба! << "\п";
1оэ::{гцп}< 8кщо файл, який в!дкрива1оть для записування Р!!е1.с!оэе(); // 3акроваемо файл
вэ*се |сттуе, то його вм!ет буде вилучено соц| << "8иведемо вм!ст файлу\гт";
!'5|геап Р!!е2("эро('1х{");
!оэ::посгеа!е 3а6оооняе створ!овати файд, який в:'дкриватоть
соц! << .[1ерше м!сце \1";
1оэ::погер!асе 3абороняо перезапис&ти !сду-!95дЁ-файд Ё!!е2 >> папо >> ба!; // 3ншпусмо 0ан! з файла
сош| << папе << "\|" << ба! << "\п";
|!ршкла0 4. |[\еля оголо1шення соц| << '',{руге м!сце \1-; Ё!|е2 >> папе >> ба!;
о{з|геатп Ё!а95("1ек1.6а1", !ов::арр, !оэ::погер!асе); соц| << папо << "\{" << !а! << ''\п";
соц| << ''[рето м!сце \|"; Ё!!е2 >> папе >> ба!;
м0хст1а дописати до к!нця вхсе |сну1оного файлу
1ех*1'ёа1 соц| << папе << \|'<< ьа| << "\п'';
потр|бну !нформац|:о. ,[[ктщо ,*с оголосити пот|к Р|а9э так: )

о|э|геагп Р!а9в("!ех|1.6а1", !ов::погер!асо); 8прави


! спро6увати щось 3аписати у файл, то }кодних д!й не в!дбу- !. йодиф|куйте програму 6порт так, що6 3аписати у файл пр!звище,
д"'""", оск|льки ознака !оэ::погер!асе забороняе 31у||н1овати !сну_ результат спортсмена. 3читайте !нформац|то з файлу та вивед!ть
ь{!{'!(.' 'г{!

точутй файл. |{роте якщо ц1о о311аку застосувати до


нового ]| !!'! (||{ран для контрол1о.

за|1исати 2. |/ текстовому редактор! створ!'ть файл 0гша!.{х{, у який занес!ть


файлу, якого ще 1{емае на диску' наприклад' п'яти ватцих друв1в. 6клад!ть програ1иу' яка б додавала !нфор-
;;1:!г::;:-::г1а
о{э1геап Ё!а9э(''|ех|3'6а|", !оз::погер|аое); мс:::,!к> :це про трьох ос|б | результати записувала у файл 0гша!.1.0х|. Би_

то буде створено файл {ех{3.ёа!!, в який мо'кна буде заносити ум|ст файл!в 6гцэ|.{х{ ! 6гца|1.1хЁЁ на екран.
шсо7ц!':'п,

]!.9 текстовому редактор! створ!ть файл, у який занес!ть координа_


дан!. .}! !!!![)|!!ин трикутника. Розв'яэк!ть задачу }ч[э 2 валпого вар!анта, вико-
,{,кпдо пот!к оголосити так: ].||11'|'()||у|очи утворепий файл. Результ8ти вивед!ть ва екран ! у файл.
о!э1геап Ё!а9э("|ех|4.6а{', !оз::посгеа!е);
то мо'клив! два вар!анти. як1цо файл {ех04'ёа{ в'{се !сну€' то $ 8. Ро3гАлу}|свння
в!н моэке бути в!дкр'1тт|й для записування да}{их' [кщо )т{ ра_
н!|ше такого файлу па диску не будо' то в кращо1!1у
випадку у !. €кладепа ко1шапда. ||!д час напиоання програп|и мохсе
_ програ1ша 8авис11е' потре6а трактувати дек!лька ко:!1анд як одну. така
файл н!чого 1{е запи1шеться' а в г!ртпому
,|.|]|]{]{![ути
_ це
3о0очо -1 (про 3магаппя спортсмеп!в)' Ёехай веобх|дно ва_
'1.|м.!!!,,(а
н&3иваеться складе}1о1о. (пло0етоо
'со1'1с'нао
нести у файл 11р!звища та ре3ультати трьох перемо'1сц|в вшта- ;: со::с:':'1;укц!я такого вигляду:

гань !3 ф!гурного катання. Бивести в:ш!ст файлу па екра1{ для (


в|зуального ко1{трол1о. <команда 1>;
// 1роарама ёпоргп
#|пс!ц0е <{з{геап.|> <команда ш>;
мо!0 па!п() )
{
// 8]0крцомо файл 6ля 3алцсування ||(!|х}д закрива1очо|о дуэ1ско1о ";'' отавити обов'яаково. |[!с-
о! 91геа]п Р|!е1 ("эроп.{х|");
с|гаг папе[15];
;, .! ,(у)!(!си си11двол '';" 3апис),.вати не обов'язково.
!|оа| ба!;

1\4 35
командото' 'бк- у та6л.7 наведен! означення лог|чних операц!й.
3оувоэ!сення ]' 3апис ;; на3иваетьс$' поРолсньо'о
поставити оимвол '';'' п|сля 3акри- !аблшця 7. }1оа1чн] операц1!
ш{о у складен!й команд1
ваточо1 ду**", то комп!лятор це розглядатиме як поро)кню Бираз 3наченпя 8ираз 3начення
програ1!1и'
команду' п{о не впливае на результат виконат1ня ! 1гше {а!зе ! {а!эе 1гше
поро)кн1о' просту
}1адал| п!д командою будеш{о ровум!ти 1гше && {гце |г{!е {гце !! {гце 1гце
|гше !! {а|эе
а6о складену кош[анду' {гце && {а!зе {а!зе |гше

то_ {а!ае && 1гце !а!зе {а|эе !! 1гце 1гце


2. }(ома як ко1у[апда. $ому як команду використову1оть ко-
вираз|в а6о {а!эе && {а!эе 1а!зе {а!эе |! {а!эе [а!эе
д!, коли необх|дно !птерпретувати дек|лька
мат{д як одне ц|ле. Бона мае вигляд
.]]ог!чним вира3ом мо)ке бути ц!ле число. $[кщо воно не
,:1т>1;|внтое нул1о' то 3начення лог|чного вира3у
_ {гце' якщо це
'!!!()ло 0
_ {а!эе.
[|ршкла0 -1. Розглянеш!о деяк! лог|чн! вира3и та !хн! 3на-
'!(}!|ця. }1ехай &: 7, 0 : 7, тод\:
!!' *'*"нда 1' команда 2 !
Бираз 3начення Биоаз 3начення
значення виразу 1 а==б 1а!эе а>_3&&а<=2 1гце
[1я кольан0и. |[осл|довно обчисл|о|оться !(а == ь [гше а>=0&&б<=4 [а|зе
(виконустьоя команда 1) та виразу 2 (коштанда 2)' а>=б {а!эе ь<9!! ь>15 1гше
командах циклу'
!':о команду зруч}1о використовувати у а+6==б
а!=б [гше
{гце
!(а<1!! 5>=10)
а!=б!! а+15>ь&&ь<0
1гше
1гце
у1шовних командах тощо'
Баприклад' ;|< (а!=Б!] а+15<ь)&&ь<0 {а!эе
=1 1гце
1| ([+= 2,к<7).-' 2 {гце 0 {а!эе

1ут спонатку 3начення зм|нно| буде зб|льтшено ъ|а 2'


}<
а ь 1гце !ь {а!зе

шот|м це значення пор|вн1оватиметься |з числом 7. Результат 4. |1о6!тов! лог!чн! операц|[ та операщ1| зеуву. Фдиницето
н|хс 7, у про_
команди _ |гце, якщо ""'.."""" з:и|нно| |( штенште, с:г:м|ру па1ш'ят'. комп'тотера е байт. $оэкний байт складаеться
тиле}кному випадку
_ {а!эе' !ц! !|()(:Б1![!! б!т!в. ][' коэкному б|т| мо}1сна ро3м!стити одне з двох
}!!!('(|.,[:0 та 1. )[' одному байт! мо}1сна 3обра3ити ц|ле число з
3. .]|ог|чп| вирази та лог1чп! операц|[' }!ос1чшшй вшро3 - ,1!,!!!||{]ону в!д 0 до 2бб. 11\о6 занести значення деякого даного
це зас!б записування умов у 3адачах в|дш1укан}тя мох(е даних' що
набу- 1' ::;тм'ять комп'1отера' нео6х|дно це да}1е перетворити у дв|й-
3адовольнятоть деякий критер!й' ']1ог!чний ву!рав 1:;;:пд||]! код. 3азвинай в|дпов!дн| програ1у!и це роблять авто-
вати значення 1гце (!стинй|сть) або {а!эе (хибн!сть)' '}!ог|чн! ви-
|[ростий _ це два арифме_
в'.!'|']!!!1{о" Фднак |нколи на практиц|' наприклад, п!А час
рази бувато ть прое7п| та скпаае;о!'
,'"ч''| ,"р.'", з'однан! си1шволом в!днотпення' а складений _ ! !!!{)|)()|(ня граф!нних зобраэкень чи в 3адачах арх!вування
.!!!!1||х' виникае потреба пор!вн1овати не значен!{я двох даних'
опер&ч|я1шш:
ц. 'р'"'{ лог!чн| вирази' з'еднан| лоа]чншл1ш |! !)(!!! б|ти. цього у тиов| €** е по6|тов| лог!чн| операщ||
1)' _ Ё€' ,;':)бл. '(ля
(виклтонне АБо), - (нв).
1;:п:п;' 8): & (|), |(дьо), ^
2)&& -!, !аблшця 8. [1об1птов1 лоа1чн1 операт1!1'
3) _ а6о.
!!
ш] в2 в1&в2 в1!в2 в1^в2 -в1
.]|ог|чн| вира3и обчислтототься 3 урахуван}тя1ш пр1оритету о 0 0 0 0 1

.::с;|'1,г||их операц|й (1
_ найвищий)' Фднаков| лог|чн| операц|| 1| 1 о 1 1 1

!}!||(()!!у|о'|'|>ся г!осл!довно 3л!ва направо.'[ля зшт|ни порядку ! 0 0 1 1 о


операц|й' як | для 3вичайних арифметич- 1 0 о
![]|!(()!|!!!!!!'! лог|чних 1 1
!

!![| х, |!!!!(()|)истову1оть кругл! ду}*{ки'


:!(!
_
|1ршю;ал0 2. \|ехай Б1 = 001 1 001 1, б2 = 1 11 1 01 о1' [од !| (0) сош| << "Ёе!!о!"; виведе'|ня на екран не буде
_ буде виведеве сдово
!| (5) сош| << 'Ёе!!о!'; Ёе]1о|
'!1' _ виведення не 6уде
ь1 &ь2=001 10001 ,ь1 !ь2=1'!'1 101 |' (!5) соц! << "Ёе!!о!'';
ь1 ь2 =
^
11000'| 10, - ь1 = 110о1 100.
|' (!0) соц| << "Ёе!!о!"; _ буде виведепе слово Ёе]1о!

Ёоэкний байт моэкна 3образит1{ у вигдяд! шосл|дов}1ост| 3 !! (!о9(1)) сош| << "Ёе!!о!''; - виведення н е буде

вось1ши нул!в та оди1{иць. для того' щоб 3сувути б!ти посл|- 3о0очо / (про обчиелеппя складепо[ функц1!). Фбчисли-
вико-
довност! вправо чи вд!во на деяку ф!ксовану к!льк|'сть, ':':.п ! вивести на екран зт{аче}тня складено! функц|| у у деяк!й
та <<' |{!д ча'с 8суву
ристову1оть спец|альн| операц![ всуву
>>
!'. ,''р'',н| м|сця дописутоть нул|' Ёаприклад' |{ехай ь : |!!!/{ан!й користувачем точц| ,' якщо
х
0о100101, с : 10110010, тод! п!д нас виконання коу[анд
< о,
[св|т|'
у={'3,о<'.ь.
б=Б<<2; [:овьх,х>ь.
с=с>> 1;
0бчцслення вцра3у
_ //
31ш!нн& 6 на6уде значен11я 10010100, 8 с 01011001' #|пс]ц6о <!оэ{геап.п>

3оуваэсення 2. |||д ч8с всуву цифр ц|лого числ& на п позиц|й


#]пс!ц6е <па{ь.ь>
#!пс!ц6е <ооп!о.б>
вл1во в!дбува€ться мно'!сення цього числа вь 2п, а 1{& п позиц!й мо|6 па[п()
вправо -
д!лення на 2п. {

3оувоэюення3. !!од!бно до комат!д присвоення з арифметин-


с!гэс();
!]оа! х' у;
ними операц!ями мохсна використовувати ко\да1{ди присвоен1{я сош| << "!уе6!| х \п"; с!п >> х;
з лог!чними поб!товими операц!ями: &:, |:, ^: та команди |! (х < 0) у = {ап({аБэ(х));
присвоення в поб!товим зсувом: 1';':,
((*' е]зе
1| 5) у - рош(х'
(0 <= х && х < 3);
5. 1(омапда розга'1уэ[сеппя !' (якццо)' }[омавда ровгалу- е!эеу=!оо(х)/!оо(5);
соц|<<'\пу="<<у;
хсенпя !! мао дв! форми: повну та коротку' |1овна така: 9е!оь();
)

|[оротпка, ко1ианда розга.'туэтсення !' ма€' вигляд


колсон0ш. Ф6числ1оеться 3начення лог!чного вира3у'
!!.я
,8,кщо це 3Ёачення !стинне' то викопуеться ко1у1авда 1, у про- !! (<лог!зний вираз>) <команда 1>;

тиле}1{ному випадку _ кома11да 2. (оманда 1 та команда 2 лшохсуть


/{!я колсан0ш. Ф6чутслк)еться 3начення лог!чттого виразу.
бути пороясн!ми, простими або складе1{и}ди' |!гк::1о во!1о |стинне' то виконуеться кома}1да 1, |.ттак:'ше вико-
[1ршкла0 3. Ёехай х : 9- 9насл!док виковання ко1шанд }]!с:'|'[;€5{ команда' яка записана п!сля команди ]'.
!! (х > 7) у = рош(х, 2); е|5е у = 5чп(х); | [рсокла0 5. Ёехай а : 7. Розгляттемо кома|тди
!| (х <= 5) а = ехр(х);
е|5о а = ++х; ||(а>7)

отриту!аемо у : 8|, э : |1, * : 10. у


{

= а++;
Розгляне:шо команди 7=а+5;
)
1! (х) у = 1- 19' !! (а <= $) а= ++а / 2; у = 7 + а:
!! (у) у += 2;
о|зе у = '!5; виразу о> 7 _ {а!эе, то в!дра3у викону_
()<:лс1льки 3наче1{ня
()тто.татку удор!вн:оватиме0 (оск!лькп х * о', а пот!м ,},!'|']!м()ться друга команда ![. 8начення вира3у а <:9 - 1гце,
:зм|::г:д: ц ттабуде значення 15. .!!му ; : (а + 1) / 2: (7 + 1) / 2 : 4, &3начення о : 7 * 1 : 3,
}!|,|1|.! // : 4 + 8 : 12, а : 8.
|| рат;сла0 4. |1роанал!зуемо ком&11ди

;!н
39
6. }{о:иапда ?. $отшанда ? е аналого1ш команди розгаду}кен- манд 1 _ }.[ ухоэке бути одна ко1цанда' дек!лька або не бути
ня ]1. 3агальнпй вутгляд ко1иандут ? такийз экодно! команди. $оманда бгеа& не е обов'язково:о ! 3аписуеть-
ся у раз! потре6и. Бона слугуе для виходу 3 команди зш]!сБ.
<лог!чний вираз> ? <команда або вираз > : <команда а6о вираз 2>
1
€кладова частина 0е{ац]1: <команда [|+'! > такоэк моэке бути
[!я юо:пан0ш. Ф6числ1оеться 3начення лог!чного вира3у. в|дсутня _ тод| матимемо коротку форшлу команди ви6ору
8кщо воно |стинне' то виконуеться команда 1 або обчисд:о- зш||с[:.
еться вира3 1, !нактше - команда або вираз 2. [!я кольан0ш. $кщо значення виразу зб!гаеться 3! 3начен-
3о0очо 2 (про два числа). Бвести два ц!л| числа. 3найти 1{ям о3н&ку| п' то викону€ться ко]шанда 3 номероу\ п | ро3гля_
б!льтше 3 них. даеться наступний 3а нек) рядок сазе 1 т.д. .(ля того, щоб при-
//8цзначення б!льсцоео чцсла 1\у\|1иту| д|:о команди зш!!с}т, наприклад, п!сля виконання ко-
#!пс|цёе <!оэ1геап.[т> манди п (тобто щоб вийти з ц|е! команди), 3апису!оть команду
#!пс|цёе <соп!о.!т>
бгеа|<;. .[кщо 3начення вира3у не зб!гаеться |з экодно}о 3 о3нак,
шо|ё па!п()
{
'['о виконуеться команда }х[*1 або, у випадку коротко[ форми,
о!гэсг(); |{аступна команда п|сля ко1цанди зш1|с1т.
!п{ х,у;
соц|<<"ууес!1 х,у\п"; с!п>>>>у;
3о0очо 3 (про квитки). }{ехай населен! пункти позначен!
соц[ << "[тл1ах ='; !!омера1ши в|д 1 до 8. Барт|сть одного квитка до конкретного
х>у?соц1<<х:соц|<<у; |[ункту }а визначаоться так:
9е|с[т();
) [аэ' ь = т'
. |
|

2,3, 4,
Ёоманда ? у раз1 потреби трактуеться ко:у|п!лятором як 12б, =

вираз' тому || зручно використовувати у директивах препро-


"'''=1'.,А=5,6,
цесора' наприклад [зь,*=т,в.
#6е|]пе абэ(х) > 0 ? (х); _(х);
()тс|льки ко1штуватимуть й} квитк!в до н&селеного пункту'
: ![омер А якого вводять з клав!атури?
[!ршюла0 6. Бехай с 10. 1од! п|сля викона}1ня команди
#!пс!цае <1оэ!геап.[>
х= (9== з)?2" с..с-2: #!пс!цёе <ооп!о.Б>
отри1иае1шо * : 8, оск!льки с не дор!вт{}оо 3' | тошлу тут обтис- мо!6 па!п()

л1оеться 3начення виразу 2.


{
с!гзсг();
!п| к, п; ||оа| с!па;
7. }{оптапда вибору (этш!|сБ). $оштанда вибору мае вигляд соц1 << "9вед!ть номер & населеного пункгу ! к|льк!сть квитк!в п '';
с|п >> [ >> п;
эш]!сБ (<вираз>); эш!|с[ ([)
{
са5е <ознака '1> : <команда 1>; Бгеа]<;
' {
са5е 1 : о!па= 22;бсеа\;
са5е 2:
]""".'.""*" }.,|> : <команда \> 0геа|<; саэе 3:
са5е 4: с!па 25; бгеа[;
ёе|ац!| ' <команда },!+'! >; =
саэе 5:
) саэе 6: с!па - з0; ьгеак;
саэе 7:
Бираз та ознаки мак)тъ бути ц|лотисельн1. Фск!льки тр€1нс- саэе 8: с!па = з5; ьгеак; \
€*+ мо}ке розглядати 3начення зм|нних тигцл с|таг !
./!'|'|'ор тиови 6е|ац!| :
соц[ << ''.{ан! введено неправильно \п";
опцп| я|{ ц1л! дан|, то на м!сц| вира3у та о3нак мо'куть бути стал| с!па = 0;
:1!':п<;пю, си1цвольного або перерахов}того тип!в. }{а м|сц| ко- )

,|о 41
3ауваэмення 4. Бикористовув&ти команду 9о{о в&рто ди1ше у ви_
соц| << п << " квитк!в до пункту '' << к << " кошлують '';
*
соц| << с!па гп << " грн";
няткових випадках' оск!дьки вона з:ш!нтое природну посл|дов-
9е|сп();
н|сть виконавня комапд | робить проц)аму в8хско3ро3ум{лото.

9. ||ерераховапий тип утвор|о1оть |а перерахування |1шено-


)

8кщо йд нас викона1{ня проц)а:у[и дан! ввест|д так: 3 5, то


!]аних ста.'тих ц!лого типу так:
на екран! 1шати1шемо:
5 квитк!в до пун:су 3 коцлцють 125 грн.
епцп <на3ва типу> = {<стала 1> = <значення 1>, ...,
<отала }ч!> = <значення ]т] >};

8. [{о:шапда 6езу:шовшого переходу 9о1о. команда зш:!- [я


нтое посл!довн!сть виконання |н:пих ко1у[анд [пляхом переходу дтбо так:
до вико1{ання ко1\да}1д[, [4Ф мае т1о8начку (м!тку)' $отшанда пе-
епц]п <назва типу> = {<стала 1>' ..., <стала }.!>}:

реходу ма€ вигляд


3 останньому випадку стал!й 1 автомвтитно 6уде присво-
()но _
значепня 0' стал|й 2 значення 1 и т. д.
|1оавачка 1шо}|се ро31ш!1цуватись перед дов|льттото ко1ша1{до1о [еяк! стал]. у списку 1ио}1{на !н!ц!ал|зувати. Ёе!н!ц!ал!зо-
3она в!докремл1оеться в!д ко}1&нди двокрапко!о !!{}ним ста.']иу[ авто1\(атичво 6уде присвосшо 8начення на оди-
у програ1ш1.
(:), а сатше:
!|иц1о б|льтпе в|д знанення попередньо[ отадо[ з| спиеку.
[1ршкла0 7. Фпитпемо два перерахован! типи (дн! тиэкня та
! <позначка>: <команда>; !
гсольори):
|[означкото мо}{се бути литпе !дентиф!катор, тобто наб|р опц:п шее& = {поп, !це, шо0, ![:о, {г!' эа!' эшп};
опц]п со!ог$ = {ге6 = 1, 9гееп, уе!!ош = 6' ш}п!{е};
допуети1ших сипдвол!в, який почипаеться з 6укви а6о
символу
п!дкреслевня (_). !/ списку шеек ста.'т& поп дор1вн1оватиме 0, |ше: 1, ..., $шп:
бо0оча,4 (про квадратпе р!впяпвя)' Бвести дек!лька еписку со!огэ стала ге6 дор!вк:о€ 1, 9гееп в!дпов!дно 2, уе|!ош
(}. ]{'
: [|, а стала ш!'т!|е _ 7 (на одинищто б!ль:пе в|д уе!!ош).
на6ор!в коеф!ц!онт|в квадраткого р!вня:н11$ ах2 * 0х * с 0 !
3о0очо 5 (про розклад ша депь). €класти програму' яка б
вивести пов!домленпя: 1шатиме р!внятлття д!йсн! коретт! чи тт|?
ш!{водида 1|а екра11 ро3клад роботи :та тихсдень.
!! 1роерама Ёва0рагпне р1вняння
*]пс!ц0о <!оэ|гоап.б> #!пс]цёе <!ов!геап.[> || 1роерама Розклаё на 0ень
#!пс|ц6о <соп!о.['т> #!пс]ц6е <ооп!о.[>
#!пс]ц0о <па|[:.[> шо16 па!п()
уо!0 па!п() {
с!гэсг();
{
с!гзс(); епцп 5уе{ {поп, |це, ше6' |[те, |г!, ва{, эшп}; !п| оау;
{|оа| а' б, с' 0; соц| << "Ро3клад 3анять на ти>о<день\п\п";
уу|0 : соц| << "\п!вед|ть коеф!ц!снти р!вняння \п'; !ог (6ау = поп; 0ау <= 5{!п; оау++)
с|п>>а>>ь>>с; этш!1с[ (0ау)
|| (а == {!пБ}:;
0) 9о|о !! 1кщо а=0, гпо перейпш 0о позначкц [|п1з!т

о = рош1п5, а1 - 4 ' а ' с;


{
!! !накц:о обчцслцгпц 0оскршм|нангп са5е поп : соц| << ''[1онед|лок\| 3усгр!ч акц!онер!в. \г:"; Бгеа&;
]| (а>= 0) сош| << "!-|е р1вняння мае корен|"; са$е |це :
соц| << "8!второк\{ 8!дрядження\п'; Бгеа[;

е|5е !! 9кщо ёшскршм1нангп в!0'смнцб, по саве ше6 : соц! "€ереда\{ Б!дрядженняБ'; 6геа]<;
<<
са5е |п€ :
соц| "9етвер\1 8!дрядження\г':'; Бгеа&;
<<
{
ёоц1 <<
,[ан! введено неправильно \п',; !! вцво0сомо в!ёпов|ан! са5о |г|: сош| << "[1'ятниця\{ 3дати зв!т. 3айти в 6анк\г:"; 0геа&;
соц| << "Р!вняння д!йсних розв'язЁв не мао"; !! пов!0омлення са$9 $а| : соц| << ''€убота\| |демо на ри6алфп'; бгеа|;
9о!о уу!6; !! 1ерейгпш ёо позначкц уу|6 са9е 5шп : соц| << "}!едйя\[ 8!дв!дати батьк!в. 8венер! фемо у театр\г:";
) )
{|п!з[ : 9е|с[(); 9е|сп();
) )

43
42
Бправп
1. {и |стинний екладений лог!чний вираз <:8 && т } 3, $ 9. цикли
якщо:
а) *:0 (в|дпов!дь: н!); 6) х: 2;
' 1\шкл (повторення) _ це процес виконання певного набору
в) л: 10; г) х: 5; д)х:|5? ко1иат{д деяку к|льк!сть раз!в. 9 тиов| б** е три ко1шанди
2. $1кого вначення (1гше ии 1а!эе) набуде вира3 <:2!! х > б, якц]о:
а) .т : 0 (в|дпов|дь: {гше); ' циклу - {ог, ш[:|!е та ёо_ш]'т1]е.
6)х:2;
в) *: 10; г) *: 5; д) т: 15? 1. }{о:шапда циклу з л|чильнико]ш {ог. Ёоманда {ог мае вигляд
3. 3апитп!ть лог!чний вираз для визначення' чи деяка точка нале_
+тсить в!др|зку: ' {ог (<вираз '!>; <лог!чний вираз2>: <вира3 3>) <команда 1>;
а) [0; 3) (в1дпов!дь: т >:0 &&
б) (_5; 5]; в) [10; 20];
*< 3); Бираз 1 признатений для п|дготовки циклу | виконуоться
т) [2;|4) а6о |20;25]; д) [{;10] ! {3; 12].
4. 3апи:п!ть умову того' що число а: а) парне; б) д1литься без остач1 один раз. |{ереваэкно тут 3ада1оть початков! значення 3]ш|нних
на 3; в) не д!литься 6ез остач! на 3; г) д|литься на 3 ! на 5; д) д!.литься !{иклу (п!дготовля1оть цикл). 9 вираз! 2 запису:оть умову вихо-
на 3 або на 5. ду |з циклу. у вира3! 3 * команди 3м!ни параметр|в циклу. як-
5. €клад!ть лог!чт*1 вир^3и для перев!рк!\, чи о точка (х; у): а) у |цо за допо1у[ого}о одного 1з вираз|в необх!дно виконати дек|ль-
друг!й тверт! (в!дпов!дь: * < Ф && у > Ф \; б) ва координатних осях; в) у пса д|й, то використову1оть кома1{ду 'кома". Бирази 1 | 3 або
друг|й або трет!й нверт!; г) у квадрат| з! стороното, що дор|внтое 1, побу_
один |з них у команд| {ог моэкуть бути в|дсутн|. )[' цьош1у випад-
дова1{ому }|а координатт|их осях у пертп|й иверт|; д) у круз! одиничного
!{у опускати символ '';'' т1е ш{о'кна. !{априклад, !ог(; !<'|0;) !++;.
рад1уса з центром у початку координат (п!дказка: умова нале}кност! точ-
ки кругу така: х2+ у'< \). !|"я колсан0ш-
6. йодиф!куйте програму Фбнислення вира3у так' щоб вивести
ре3уль-
1) Фбнислто}оться значення вира3!в 1 | 2.
тати у файл. 2) $1кщо значення вира3у 2 |стине - виконуеться коман-
7. йодиф!куйте програ:шу @бнислення виразу т8к' що6 користував м1г
да 1. .!,кщо хибне _ виконавець програш|и переходить
ви6ирати, куди виводити результати: на екран чи у файл.
Бюаз|вюа. Бикористайте' наприкдад' команди
до ттаступно! п!сля 1ог котшанди.
3) Фбнислто1оться 31{ачення вираз|в 3 та 2 | перев|ряеться
ооц| << ''8иведення результат!в: - на екран' 2
с|п >> п;
1 - у файл''; пункт 2).
!| (п == 1) <виводимо ре3ультати на екран>; [!ршкла0 /. 6утшу ц!лих чисел з протш|хску в!д 1 до 15 мо)*{-
е!5е <виводимо результати у файл>; :;дп о6числити одниш| !з способ!в:
8' €клад|ть лог|чний вира3 для потпуку у 6!бл|отец! деяко! кних{ки 1) !п|п='1'$=0;
за трьома параметрами: видав[|ицтво - <.(еол>, р1к видан}{я - 2оо3, {ог (;п <'16; п++) $ += п;
автор _ Ёовосад. 2) {ог (!п:п = 1,5 =0; п < 16; п++) $ += п;
9. 1!1одиф!куйте програму (вадратне р!вняння так, щоб мохсна 6уло 3) !ог (!п!п = 1' $ =0; п < 16; $ += п++);
4') !ог (!п1 п= 1, $ =0; п < 16; $ +=п, п++);
розв'язати дек|лька р!внянь. Ёаприклад, вводити коеф1ц|онти доти,
доки 3начення коеф1ц1ента (! не дор|внтоватиме нул!о. )[' результат|. виконання ко1цанд зм|нн|й 5 6уде присвооно
10. бклад!ть програму для розв'язувапня р!вняння ох * 0 :0' {!||.!!тення 120. 3аува}{сиш!о' що у спосо6| 2) {ог (|п1 п = 1, $ = 0; п <
|[еред6анте випадки а) о : Ф| 0 - 0; б) о : |, 0 * |; в\ о * 0. !(!; $ з]и|нн| 8 | а !н!ц|ал|зовано (оголотшено) 6езпосе-
+= п, п++);
11. Розв'яэк!ть задану }',]! 3 з розд!лу "3адач!" ва|пого вар|анта. |{е-
|)(!/1|{ьоу ко:шанд! циклу {ог.
редбанте виведення результат1в на екран | у файл.
12. Розв'я+к!ть задачу }',1ё 4 ваш:ого вар!анта. |[ередбатте виведення
1ршкла0 2. }€!льк|сть ! добуток ус!х парних ц|лих чисел 13
:;1:слм!этску в|д 4 до 11 моэкна обчислити так:
1;сзультат!в а) на екран; б) у файл.
13. Розв'яяс1ть задаву }\! 4 наступного вар1анта. 8ивед|.ть !п| п, },
ре3ультати
|<!!;

!|[{|{о|!ання програ:у[и у файл. (о = 1' [!! = 0' п =4; п <= 11; п += 2)


'ог
14. Розв'я;к|ть 3адачу },,1! 5 свого вар!анта. 8ивед1ть результати ви_
{
о -= п; к!!++;
|с()||{!|!!|я програми на екран.
)

44

,д|т,о|т,ь|:,о|:,ь
виконання шрограу{и одер)*си:у:о 9 = 1920' = 4.
)[' результат| ]<!!
Рп!0,т!0'4 !о'3 1о,2
Брахову:ови приклад 1, навед{ть !нтш! 1\[о'*{лив! способи на- 06числуттут ш{ате1ш&тичне спод!ван11я !у{х = 2*ьрь, диспер-
писання команди 1ог. ь
3ауваэпення /. 9асто у циклах корисно застосовув8ти команди с:!ю .0 =|у1\2 -(мх\2, де !у1х2 =|""'р,, ! середне квадратич}]е
0геа|с | соп|]пце. 1{отшанда Бгеа1< достроково припиня€ роботу ь'

циклу | забезпевуе перех!д до наступно! п!сля циклу команди.


1{оманда соп|!пце припиня€ виконання поточно! !терац!! та
::1дхиленн$ с =б '",,дково! величипи х.
починао виконувати наступну !терац!то (повторення) цикду. || |/] атпе м агп цчна с!п апцс(пцка
#1пс!ц6е <!ов!геап.[>
3азвичай ц! команди нале}|сать до деяко| умовно! команди. #!пс!ц6е <соп!о.Б>
Ёаприклад, якц\о вико!{у6ватиметься певна умова' то буде #!пс|цёе <па{[:.[:>
вих|д з циклу' або, якщо умов8 не виконуватиметься' то 6уде #6е'!пе ш 4
перех!д до наступно! !терац!! тощо. мо!6 па!п()

[!ршкла0 3. 3ианачити' чи чисдо с просте' 1иож{на та}с:


{
о!гэсг();
!ог (!п| п = 2, Р= 1; п <= (!п|)эчЁ((6ошБ!е)а); п ++) |!оа1 х, р, ]т:! = 0' й2 = 0' 9' 5;
]|(!(р=а%п))6;еа&; !от (!п1 }< = 1; [ <= |х|; !++)
р ? сош| << "просге": соц| << "складне"; {
соц| << ''8вед!ть х " <<к <<'-те та р" << к << "_те\п"; с|п >> х >> р;
3о0очо 1 (про таблпц[о :ш1р). |1обудувати таблиц}о в!дпо- м += х
*
р; 1т:12 += рош(х' 2)'р;
в!дност! ]и!хс унц|ями та гра1иа1ши' як1цо 1 унц|я )
соц| << "\п ]ч:!=" << ]!!;
28,35349б г. |1очаткове 3начен}1я к!лькост! унц!й (шпс!а), крок ! = ]тг12- рош(й,2); 5 =вчп(9);
з1ш!ни (|<го[) цього 8начення та к!льк!сть рядк!в (к!!) у та6лиц1 соц!.ргёс|51оп(3); /! для 3аокруелення ёо гпрьох знак1в п|сля комц
соц| << "\п 9=" << 9 << "\п 5!9па=" << 5;
3адати сатиост!йно у рехситш! д!алогу.
9е1о!т();
!! 1роерама в|0пов!0носп| м|р )
#!пс!ц0е <!оэ1геагп.}> '|,8; }
#|пс]ц6е <ооп!о'}:> 1/ результат! виконання програ1ши одер)1си}1о [т4 = =
шо16 па!п() (),21; 5!0па = 0,458.
{ 3а0оча' 3 (про табул[овапвя фувкц!! | пошпук даних)"
!|1;отабултовати функц!то !:2э1пх }та про:у1!'*ску [0; 2'5] 3
о|гэсг();
!!оа| цпс!а, 9гап, [го&;
!п| [!!' п; !(|)()ком 7: Ф,! та обчислити середне арифш1ети1п{е (з1) зна-
соц| << "8вед!ть початкове значення унц!й' \г:' !!()[|ь функц|! б!ль:пих н!э*с 0,5, ! ш[е11]11их н}*с 1,5.
<< " крок зм!ни та к!льк!сть рядк!в у та6лиц!\г:";
с!п >> цпо!а >> &го& >> &!!; !! 7абулювання функщ1
соц! << '<<'\п"; #!пс]ц0е <!оэ!геап.}|>
соц! << "унцг[ !-рами " <<'\п'; *!пе!ц6е <соп!о'[>
соц| << '<<'\п'; #1пс]цёе <па!}:.|>
|ог (п = 1; п <= [!|; п++) то!6 па!п()
{ {
*
9гап 28.353495 цпо|а;
= о!гзс(); !! Фншщаемо екран
сош| << цпс!а <<'\1' << 9гап << вп6!; |!оа| х, }т = 0.1' у' з'! = 0;
цпс!а += &го&; !|оа| а = 9, ! = 2.5 + !'т /2; !п| п = 0;
)
.;
соц|<<"х 1\п';
соц| << " << !ог(х = а; х <= б; х += б)
9е!с}:(); {
) у = 2-э|п(х); !! Фбнослюсмо
-\г:";
у
соц| << х << \1" << у <<
3а0ача 2 (про вппадкову велпчину). Ёехай випадкова ве- !| (у > 0.5 && у < 1.5) !! @6чцслювмо суму па
.,|и1!и|{ц { отримуе 3качен1{я 3 деякими ймов!рностями { !| к|льк|спь 3начень функщ-[ у'

47
4(|
п++; $1 += у; /| як| за0овольняюгпь за6ану умову
3ш0а,ча,4 (про су:шу цифр патурального числа). ,(ля зада-
)
!!ого натурального числа а п|драхув&ти еу1шу його
!| (п)
)
// 9кщо п не ёор!внюе 0, гпо
цифр
#]пс!ц0е <!оэ1геап.}т>
// обчцслюемо па вцво0цмо
{
мо!6 па!п()
з1 /= п] // на екран сере0нс арафмегпшнне
соц! << "$ _ " << э1; // сшуканох 3начень функц!|' {
|п|5=0,п,п;
)
сош[ << ''8вед1ть число,,; о!п >> п;
е!5е // 9кщо шукан1 оан! в1ооупн!,6уое пооано 3вуковцй сценал па
п=п;
соц{ << ''\а [аких значень нема€''; // вцве0ено в|опов]оне пов!0омлення
ш}:|!е (п > 0)
9е1о[();
{
1
$+=ц7"19.
3оу ваэюення 2. )['раховутони специф!ку комп'тотерно! арифмети- п /= 10;
ки, щоб не втратити останнього значення (рункц!!, у будов! ]

циклу ш}:!1а до останнього значення {х : 2'б) додае]![о деяке соц| << ''€ума цифр числа
,,
<< п << ,'дор!внюе ,,
<< 5;
)
зм!щення, у цьому виладку !т / 2.
3в0ачо 5 (про оу]иу олеп[епт|в зпако3м!нпого ряду' по_
2. 1{опланда циклу 3 передумового (тш[|1е) мае вигляд с:'лл!довност1). Ёехай # * деяке число' яке нео6х|дно
ввести з
шп!!е (<вира3>) <команда 1>; :
:с;гспв!атури п!д иас виконант{я програми' е 0,001 _
точн|сть
сг6,гислет{ь. Фбчислити суму елетшент!в знакозм|нного
ряду
!,[я колсан0ъс.
).,'. , 4ё ап = (_1)"
1) Фбнисл:оеться 3начення виразу. .{кщо воно |стинне' то ;;! #
Бизначити к!льк!сть доданк!в. Бивес-
переходимо до пункту 2), якщо хи6не _ до пункту 3).
2) Бикону€ться ко1у|анда 1 ! в|дбуваоться перех!д до пун-
'!'|! !{а екр€!1{ ре3ультати обчислень.
8роарама €ума 1
кту //
1). #.пс|цсе <!оэ|геап.п>
3) Б|д6уваеться перех!д до насцгпно! п!сля тм|т1!е котшанди. #!пс|цёе <ооп!о.}:>
Биразо:и мо)*{е 6ути дов|льний лог|чний вираз' стала або #1пс!ц6е <па1п.ь>
мо!0 па!п()
3м!нна ц1лого типу. ,{,кщо треба перев!рити дек|лька у1иов' то
застосову}оть команду ''кош[а". $оманда 1 мохсе бути пороэ*с_
{
с[гзсг();
або складеното. соп5|'!оа!о=0.001;
ньо|о' просто!о |]оа{х,а,5=0;
Ёо:ианда ш]т]!е моэке бути виконана один раз' дек|лька ра- ]п1п=о,{ас1=1;
з|в а6о не бути виконана }т{одного разу. соц| << "8вед!ть х \п,,;

1ршк:та0 4' \\ехай | : 4, в : 0, 4: 1. |!!сля виконання ко1иатц


с!п >> х;
а=-2" х1
ш|1!е (х.= 6)
{э += х; х++;} тл}:!|е ({або(а) > е) /| |мова зак!нчення о6чцслень
шл!':|!е (х > 10) 0 "= х;

0 * 4 + 5+ 6 + 7 + 8 : 38, -т: 9, & 3м!нна/ свого 3начен-


: д;
{
$ += п++; .=
з а = !ош(-1, п) . рош(2
п;
'ас{ . х, п) / {ас1;
ня (1) не зм'нить' оск|льки 3начет{ня вираву х> 10 хибне, | то- )
у|у ко}данда 0 *= х у цикл! цг[:|]е виконуватись не буде. сош|.ргес!в!оп(2);
соц| << '$ = " << 9 << ''\п'';
[/ршкла0 5. Бизначити обсяг в1льно! у певний у!о1шент опе- соц[ << ''(льк!сть доданк!в = " << п;
ративно[ патц'ят| мо}кна так: 9е{сп0;
)
!п1п=0;
тш1'т!!е (пеш о[аг) п++; 3оувалсентоя 3. Ровглявемо ще один спос1б (б!льлш економний)
роз-
в'яз5гвання задав! 4. ,(ля обвислення 8начень посл1довност|
:пбо 'гак: а' ло-
будуемо рекурент[гу фордгулу, тобто вщ>азимо стп чере3
!ог (!п| п = 0; пеш с[таг; п++);. с'_1' 0т:ке,

49
,!1.}
3а0оча 7 (про макси1шальне 3начення функц!!). |{ротабу-
о*_, = (-|)'''
#;, а' = (|)п
%-' ..'л;
{ = +' зв!дси
]!!()!]{1тифункц!то у : 2оозх на пром!экку [-п; т] з кроком !ъ:
л / 4. Результати обчислень вивести на екран або у файл за

_2о,-, Би3Ё&9!!йо з умови 3адач1'
о' = . Блемент @1 :;::б<;ротш вико|'авця у вигляд! таблиц|. Бизначити найб|льтпе
ц|!!,:![(€ЁЁя функц!| (пах) на цьому прошт|экку, а' тако)к 3'ясува-
3. 1{отшапда циклу з п!сляумово[о 6о-!'уь!!е мае вигляд |'[|' /{ля якого т (хпах) воно досягаеться.
Р1аксиддальне чи м|н|мальне 3наче111{я функц!!, або зна-
'!(.!!!|я' як| задовольня}оть деяку умову потшуку' визт{ача}оть
м{''|'()домсканування (перегляду) во|х 3начень функц|[ та по-
[!я коман0ш. 1:|п;п:яння !х з деяким ета.'1оно1у!.
1) Биконуеться о6числтооться значення вира3у'
ко1ша1{да 1 | //7абулювання функц[[
2) .{,кщо 3начення вира3у !стинне, то див' пу1{кт 1)' якщо #!пс!цёе <{э1геап.[:>
8начення виразу хибне - в!дбуваеться перех!д до
на_ #!пс!цсе <ооп!о.[>
#!пс|ц6е <па{п.п>
ступно! п!сля ёо-тл}т!]е команди' мо!6 па!п()
бу_
$оманда 1 у цикл! 6о-ш|':!]е, на в!дм|ну в!д циклу ш!'п!!е' {
с!гэсг();
де виконуватись хоча б один ра3
3ав}1сди'
|[ршкло0 6. }1ехай ц!л| зм!нн\ х, ! мак)ть значен!1я
х : б' о'51геап
соп5| ||оа1 р!
1аб{!|е("{абш!'1х1",
= 3.1415926;
!оз::оц1);

у : |. 1[' результат| виконання команд


|!оа| х = -р!' [ = р! / 4, у, пах, хпах;
пах=2-соэ(х);
оо хпах = х;
сош|.ргес!э!оп(2);
х
{

у+=х',2=2'х:, х-=2; соц| << " у" << ''\п";


) 1аб!!!е << " {, у" << "\п";
ш}:!1е (х > '|); 6о

*,!,2на6удпъ так].п( 3начень: у:о


зшт!;шт|
+5* 3:8' 2:6' х:1' {

}=2-соэ(х)+1.75;
3ш0очо 6 (про роаклад числа па прост1 мноз[спики)'
Роз_ ..
соц| << х << "\{" у <. "\п";
класти на прост| 1шно)*{ники 8ада}{е }1атуральне число' $!ль_ 1аб{!!е << х << "\|'' << у << "\п";
!! (у > пах)
к!сть виведень ко'кного мно)кника дор|вн:ое його кратност| у {
пах = у;
розклад|. хпах = х;
#]пс]ц6е <!о51геап.п> )
уо!а па!п() х += [т;

{ )
!п1 |, п; шБ|!е (х <= р[ + б / 2);
соц| << "8вед!ть число''; с!п >> п; соц[ << "\п [т:|ах = " << пах << "\п";
соц1 << "\п п = 1"; соц| << "хпах = " << хпах << ''\п";
[ог(! = 2; ! <= п; !++) {а0{!!е << ''\п йах = '' << пах << "\п";
{ |аб1!!е << 'х!пах =' << хпах << '\п";
|| (п % !) соп!|пце; {аб{!!е.с!ове();
6о 9е1сп();
{ )
соц1<<'""<<!;
п/=!; !!сг1;|вняйте ре3ультати' виведен! на екран | у файл.
) :}аува?!сен,|я 4. 9 попередн!й програм! затш!сть оголо1пен[!я ста-
:го! сопэ| !!оа! р! : 3.1415926 мо'кна буйо використати стан-
ш1т!!е (!(п % !));
)
)
/\пртну сталу 1!1-Р1, яка описана у тшодул! гпа{}л.}п.

51
[:Ф
11. Ёапитд1ть програму' яка у всто в1льну доступ}1у в поточний
Бправи м()мент оперативну пам'ять комп'к;тера 3аписуо деяке чисдо.
1. Бизначте резудьтати виконання таких команд (усно): 12. €клад!ть програму' яка виводить [{а екран ус| прост| натура-ть:т!
а) а=5; |ог 1! = 1;1<=2; |++)3= а'1-2 а**; (в|дпов!дь: а: 5); .!!|сла до певного 3аданого чиела п.
б\ а=1; {ог (! = 1;!<= 3; !++) {а = а + !; а_= 1;} 13. Розв'яэк!ть задану ]ч{} 6 з ровд!лу "3адан|" ваш]ого вар!анта" Ре-
в) а = 0; |ог (! = 1; ! <= 4; !++) 3 += !; 3 += !; ;|у.|1ьтати пролрами вивед|ть на екран ! у файл.
г) р = 1; !ог (б = 8; б >= 5; р += б--); р++; 14. Розв'язэтс|ть задаву }.,{!: 7 з розд!лу "3адан!" ва|пого вар|анта- Ре-
{!у.,|ь'!'ати вивед|ть на екран ! у файл"
д) в=0; |ог(п=7;п>=4; п--){5+=||! 5++])
е) а=4; |ог (| = 1; ! <= 2; !++) а =а !- 1; а+=2;
* 15. Ровв'яхс1ть зада.лу !} 8 в розд|лу "8адвв1'' двома способами: а) ви_
е) а = 1;|ог (| = '1; | <= 3; !++) {а = а + 2* 1; а-=2''у !!()[)истову1очи програму_зразок €ума 1; б) модиф!кував]пи програ]иу' вра-
эк)а=_1;|ог(! =1;|<=4; |++) а=2*а+11 а+=2, х(}|}у|очи 3аува)кення 1. Результати обчислень вивед|ть на екран ! у
с|л:: [!л. |[ор|вняйто отриматт1
з) р = з0;'ог (ь = 7: б >= 4: ь_-) р -= Б; р += 5; результати.
*
1) о=0; {ог (п =6; п >=3' п*-) {9 =3 + 2 п; 5_-';}. 16. Розв'яхс|ть задаву }',|!: 9 ватпого вар!анта з розд|лу "3адач1". Ре_
2. .[кого значення на6уде зм!нна п1сля виконання ком&нд: |у.'||)тати обчислень вивед!ть на екран ! у файл у вигляд1 таблиц| пар
а) р = 4; ш}:||е (р < 10) р= 2" р * 1;р= р+ 1 (в!дпов1дь: р = 20); ,1!1(''сл х|
у'
б) р = 4; ш1':!!е (р < 10) {р =2* р + 1; р += 1;}
в) р = 5; ш!т|1е (р > 2\ р =(р-з) " 2; р = р_з;
г) з= 1; ёо э = 2' з + 2тш?:!|е (з > 10);
-
д) з = 4; 0о э =_3 (э -6)шБ]|е (э < 0);
$ 1о. Функц]! (1)
_= 1;
е) р = 7; тшБ1!е (р >=5) Р = (р + 3) /2; р
1![ова прогр81и)лван1{я €** дае мо}клив|сть реал!з}ъати кон-
е) р = 7; ш[|!е (р >= 5) {р = (р + 3) / 2; р -='с1!,.
3. [ля писел в1д 1 до 1Ф обчисл!ть квадратв! кореп!, куб!нн! корен!
:ц,:гц|то струкцр}{ого анал!3у алгоритм!в. €тпруктпуршшй а,пол,т
та тсоретт! четвертого степеня. Результати навед|ть у вигляд! таблиц'.. !!().,|ягае у попередньому опрац}ованн| складно1 задат! чи гро_
4. Бивед!ть ца екран у вигляд| таблиц! номеРи ! значення пер1пих м!:в71кого алгоритш1у та под!л! його на окреш{1 прост|ц]! час-
десяти едемент!в чисдово! посл!довност1, загальний елемент яко1 мае та- :'::::и. ][' $++ ц! частиЁи реал|зу1оться 3а дс}по1иого1о функц!{с.
кийвигляд:7-5в!п|2'
5. беред пер|цих 20 елемент|в числово! посл!довност! 3 - 3в|п|2 ви-
( ):с1;с:ти1
функц!! об'еднутоть у сп|ль1{у програ1иу. |||' в|дко:шш|-
вед|"ть на екран цомери ! зттачення ли:пе в|д'емних елемент\ъ, !
: |, 2, '!!'()!}11гтому
вигляд| така програма утвор1ое модудь. |оловна
с|пу:ппсц|я, тцо обов'я3ково входить до ко)|снот програми'
...' 2о.
6' Розгляньте елемепти числово! послйовносф Б _ 3ев21 вй 10-то до 20- ппп::!г:(). Розр!зня:оть стандартн! функц|! та функц![ користува-
,г;:. ()тандартн!
тю ! ви6ер!ть серед них (вивед1ть':хв| номери на екра-тт) бйь:п!, н1хс 4' функц!| мови описан| (визнанен|) у б!бл!отеках.
?. }1одиф!куйте програму [абулювання функц!'с ! визначте !! м1н!мадь- ,|[сл '!'{}(Ф( функфй' 3окрема' на.'1е)кать мате]шатичн! фуякцЁ
не 3наче[{ня |{а 38да,{ому пром!э*ску. г:!::(), соэ() з б|бл|отеки тпа1ь.ь, фулткц1я очистки екра1_та с1гзсг() з
8. Ёехай п!{),!!()теки соп|о.ь та 6агато |нтших. .(еяк! 3 цих функц|й
|.р -2 2
0,10 !!]|||![!!тиме'{о у ц!й кни}кц!' !нтп|. описан| у дов!дниках.
Рь 0,20 0,40
квадратич- с|лцнкц!я 1соршс7пув('ч(, _ це по|1иенована група команд' яка
Фбчисл|ть матем&тичне спод|вання' диеперо!'о та середн€
не в1дхилення, !||!!.'|()!пена у файл1 заголовк!в (або в основн!й програм|) та
!|!!]|(:|!н& у модул! (в основн!й програм!). Ао функц|! мо}1сна
х 2 {|]|(!|''|'1|тись (викликати) з будь-якого :и!сця програ1ши необх!д_
14
:;у :с1.;льк|сть ра3!в.
\!*''', ||рост| програ1ч[и' як! розглядалися вище' не потребутоть
Фбчисл!ть середне виб!ркове з1{ачення
' = виб1ркову диспер-
0}!! |(( )|)истання
функц!й користувата.
с:|го 0 9'"',' -(тР
='п7'-т' '' ,'оеред1!€ квадратичне в!дхилення , ='!-о ' |. Фголо:пеппя фупкц!й корпстувача. }[охсну функц!:о ко-
перед пер111и1и викликом передус!м необх|дно ого-
]|.|{!'|'у!]&ча
10. 1!1одифйуйте процра]!1у 6ума'|, використову1очи 1юкурентку форттгууу'

53
(:2
дооити (задекларувати' створити прототип' сигнатуру)' 3а 1ак! значення на3ива1оться 3наченнямш 3о 3ал'овнуваннялс. \х
стандартом 1во/Ашв1 прототипи функц!й оголо1шу1оть у 3апису1оть у к|нц| списку. 3начення таких параметр|в у прог-
спец!альних файлах заголовк|в. )[' програму ц| файли при- рам| :иоэкна зм!н:овати. Брахову1очи це' розглянемо ще один
едну1оть 3а допо1шого1о директиви *|пс!ц6е' наприклад: сцос|б оголо1шення функц|й' наведених у приклад1 1.
5шпа(!п| }<!!, |]оа| с|па = 2'5);
+1пс]цае <соп!о.Б> то!ё
'!оа| 6!!еппуа({]оа| у = 1.2' |]оа| п = 3);
{+!пс!цае "[т/уЁеа0ег. [" }<о0(!п! }<1 !п| 12 = 5);
'
|{рототипи стандартних функц|й розм|ш1ен| у папц| 1}{- 2. Фппе фупкц1й користувача. Фпис функц!! складаеться !з
сь1_}пш. 6интаксис мови дао змогу розм!стити прототип такох{ .]&головка без юрапкш 3 кол[ою | т!ла функц||, записаного у ф|-
| в основн!й програм|. Функц!:о користувача оголо111у}оть так: |'урних ду,}кках' а саме:
<тип функц!1> <назва функц![> (<список формальних параметр!в>); <тип функц!|> <назва функц![>(<список формальних параметр[в>)

де тип функц|!
_ це тип даного' який функц!я шоверта€ в ос- {
<т!ло функц!1>;
новну програму. 1ип функц!! моэ*сна тте 3а3начати. 3а 8амов- ге|шгп (<назва зм!нно| 1>);
чува}1ням функц|я поверта€ у програму дане ц!лого типу !п|' )
Функщ|то, яка не повертае у програму экодного ре8ультату' 9 т!л| функц!!запису1оть команди' як| зада:оть д|то функ_
оголо1т1у1оть 3 типом то|ё. ,{ля функц!!, яка не зале:тсить в|д г11|. Результат виконан1тя функц|! повертаеться в основну
}код}1их пара:иетр|в' у круглих ду)*сках за11ису1оть слуэкбове ||рогра1\[у (у товку виклику) 3а допомого:о зм!нно! 1 коштандото
слово уо|ё. ге|цгп. 1ип зм!нно| 1 мао зб!гатися з типом функц||. ]/ т|л|
Ёазву функц!| нада€, користувач за правило1ш створення с!гункц|й типу то|Ё кош1анду ге|цгп не за3нача1оть. )[' команд|
|дентиф!катор!в. ге!цгп кругл! дуэтски мохсна не писати.
9 описку фортшальних шара1цетр!в нерез кому вапису1оть 3оувонсення.[. Функц|то 1ио}кна описувати ! на початку про-
зш:!нн|, 3азнача1очи !хтт! ту[пп. 1ип необх|дно зазнанати для трами. 1[' такому випадку декларувати !! не потр|б:*о.
коэкно| зм|нно| окремо. 1мена зм|нних 1шо]1сна опускати. ,{,кщо
[[ршюла0 2. Функц|! $цпа | о![еппуа, оголотпен! у прикла-
функц!я не набувае 'кодних 3наче}{ь' то список фортиальних
параштетр|в мо}1{е бути в|дсутн!й. }(ругл| дуэкки опускати не /(! 1, у деяк!й програ:ш! 1ио)кна описати так:
{!оа! 5цпа(.п| !!!' !|оа| с!па) // 3аеоловок функщ1
моэ*сна.
[1ршюла0 .1. Розглянемо сигнатури функц|й {
!]оа|э=к!! 'с!па;
{]оа[ 5цгпа(!п[ к!!, |!оа| с!па); те!шгп (э); // 3начення, яке поверпао функц|я в основну проераму
то!0 0!!еппуа(||оа|, ||оа!); )
}<о0(]п| !<1' ]п| &2);
6оцб!е !о!о(шо!6); мо!ё 0!!еппуа (1!оа1 м' ||оа1 п)

![' цьотшу випадку оголо1пена функц!я $штпа типу [!оа|' яка


{
соц| << "\п 0!|еппуа = " << у / п;

зале}кить в|д двох зм|нних: пертша зм!нна ц!лого типу !п1' дру- с'
)

га _ типу {!оа|. Функц!я ёг!б 3алехсить в|д двох зти!нних д!йс- [1ктцо потр!бно про!н|ц!ал!зувати значення зм|нних, що
ного типу ||оа| | не повертае у програ1у[у )!(одного знанення. {|- '!х()/{ять
у функц|:о' то це мо){сна зробити у сигнатур| функц!|.
'|':;71| в опис! у 3аголовка функц|| 3начення за замовчуванням
ла функц!я ]<о6 залеэ*сить в|д двох зм|нних ц!лого типу' д|йсна
функц!я |о!о типу 6оцБ]е не зале}1{ить в!д )1содних параметр!в'
||(! ;}ддак)ть.

|[ршкла0 3. бигнатуру функц|[, яка обчислтое периш:етр &-


|[|д нас оголо1шення мо}1сна в!дразу |н|ц|ал|зувати фор' !т\:'|'|!о[ правильно! ф|гури з| стороно1о г' мо)1{на оголосити так:
мпльн| параш|етри функц|[, тобто надавати !м певних значень'

|у4
б5
2.5); #1пс|ц6е <!о51геап.ь> // [оварной нек
рецпет (!п| к = 4, г =
#!пс!ц6е <соп!о.б>
'|оа| '|оа|
а описати власне функц|к: так: !|оа! $шпа(|п(, 1|оа1); / ! 0еолоц;ення функц/;' $вгпа
мо!6 па!п()
решпе1г {!п| &' {!оа{ ф
']оа| {
{
о!гэсг();
р; !!оа| п; 1п1 п;
'!оа|
р=&-г; соц| << "8вед!ть ц!ну за '| сшг. \п',; с|п >> п;
ге|шгп (р);
соц{ << ''8вед!т'ь к!льк!сгь купленого товару \.т,,; с!п >> п;
]
о|гэог {);
соц| << \1 товАРний 9Ё( \п',;
3. 3иклик фупкц!й користувача. до функц!! користувача еоц| <<''ц!на за '| шт. - "<< п << " грн \п";
3верта;отьоя з розд!.лу ко1\д8нд основно{ програ1ди (функц!! па- соц{ <<"3а "<< п << " шлцк нео6х!дно сплатити .;
|п()) або з !нтпо! функц1!" Биклик функц!й мо)кт1& виконати соц[ << 5шпа(п, п) <<', рн\п"; |/ 8с:клшк функф 5агпа
сош| << "\{дяцомо за поцпку!',; 9е1с!п();
двояко: або ко:шандок) викли1{у' або в вираз|в так: ]

<назва функц!|>(<список фактичних параметр!в>)


{|оа| 5шпа(1п! &|!, |!оа! с!па) !/ Фпцс функц[[ 5цгпа

бписок фактинних параметр!в мох{е 1ш!стити етал|, зш:!нн1,


{
!|оа| з;
посил&ння' вка3!вники' вира3и. €писки с}ормальних ! фактит_ 5=к;! -о!па;
ге|цгп 9;
1{их параметр!в матоть бути узгодх(еними за типами та к!ль_ )

к!стто елемент|в. ,[кщо у списку формальних параш!етр1в е 4. ]1осилання. .(о даних мохсна 3вертатись 3а допо1цогок)
про!н!ц|ал|зован! з:ш|нн!, то у списку фактинних пара1у[етр!в ц| ;мс:л*або посилань. ![осшлоння слугуе для надання 1це одного
зм!нн| мо}куть бути в|дсутн!, [м будуть надан! 3начення 3а !мс:пт! (псевдон|ма' синон!ма, ал|асу) дано1иу. |{осилання утво-
за1шовчуванняш[. !)!()[оть так:
||ршкла0 4. Розгляне1цо сигнатуру 3 прикладу 3.
<тип даного> &<назва посилання>
4' {!оа! = <назва зм!нно1>;
рецпе1г (]п| к = г = 2.5);
'!оа|
,{о ц!е! функц!! ]у|о}кна 3вернутись одним !з способ!в: Ёаприклад,
решпе|г (7'2.в); {!оа| &с!па = 8цп?]
регупег (в);
рецпе!г ();
|/ цьошту випадку посилання с!па | зм|нна 5ц]па вка3увати-
му'|'ь на одну ! ту еа1шу адресу в па:ш'ят| ко:шп':отера. ,(ля
}}/ пертпому випадку зшт!нн!й А 6уде присвоене зпанення 7,
а зм|нн!й г _ 2,8; у другому випадку Р : 8, г: 2,б; в третьо-
!!()(:илань 1{е ре3ервуеться додаткова опер&тивна пам'ять.
у с++ 1у[о;{сна утвор1овати посилання на дан1, але не на ]х_
тнту*:7,т:2,5. :;! 'гипи. 3начення посилання !н!ц|ал!зутотъся в10раау п!д нас
)/ списку фактинних параметр!в }те мо)1{на пропускати
{!:::т; оголотпення' тобто на етап! котшш|ляц|!. ][' нашто]шу шрик-
з:ш!нн! 3 середини списку' тобто не ш[о'|сна функц!:о 1т/$шпс() ви- ,:;п/1! посилання с|па про!н!ц!ал|зоване з:ш!нното вц]па. Фт>ке,
кликати так: й$шпс(1.65);, оск|льки тут пропущено !н!ц!ал|за- 5цпа: 11, то ! значен!тя посил9т{ня с.па тако}[с буде 11.
ц|то пертшо[ зтш!нпо! Ё. ''!(!|(о
!!|д нас зм!ни значе11ня посилання зш:!н:оеться 3начення
3о0оча, "1 (про товарний нек). Бикористову1очи функц|то
';м!гггто|, на яке це посилання вказуе. Фтэтсе, якщо у програм|
користувача' скласти шрограму для виведення на екран товар- :!;!!!}!€&?й ко1ша1{ду с!па = 15.7, то зм!нна $цпа тако}к набуде зна_
н0го т{ека для куп!вл| п тптук товару за ц!но:о и} грнивень 3а
';,';;пдя 1-5,7.
одну !птуку. {!ну та к{льк!сть купле}{ого товару ввести са:у|ос- {]ги|нтовати (переадресовувати) посила11ня у програш:| ис
т!йно у реэ*ситш! д!алогу. .]!''!!'![а. |[осилан:тя 3ав}|{ди вка3уе на одну ! ту саму ядРесу в

|_л6 57
()||ордтивн|й пати'ят|. [е використову1оть п|д нас створення та 3а0очо 2 (про гуртову покупку). Ёехай 8ниэтски на гуртов-
ви!{лику функц|й. ||1д нас виклику функц|! коп|[ ус|х !1 фак- :п1 яку зроблено за1иовлення, а са:ше: п!д
залеэ*{ать в|д сутши' на
ти!|них параметр!в 3аносяться у спец!ально орган!зовану об- ,п::с куп!вл| товару на
су1шу до 200 грн покупець ма€' сплатити
л{1сть па:и'ят!. ||от!м викону1оться в!дпов!дн! команди фупкц![ |00% в|д вартост! товару' на суму в!д 200
до 500 грн йому
| результат поверта€ться у програму ко1шандо1о ге|цгп. Фск|ль- !|{1да€ться знинска |0%., а на су]\[у понац 500 грн _
2о%.
ки вс| д|| в!дбува:оться 3 коп!ями параметр!в' а не !з сатшими |}:зести з клав!атури су1шу' на яку зро6лено за:шовлення,
1
пара1у{етрапли (коп!! та влаоне параметри розм!щен! у р!вних !|ивести с}м9' яку необх!дно сплату!ту| а
урахування системи
д|лянках пам'ят!), то значення фактинних параметр!в в ос- ]}]|и'хок. Бикористати функц!:о користувача' аргу:иенташ!и
новн|й програти! не зм!нюютьься.,1[к параметри функц!! птоэк- :гпсо| е посила}1ня на зм!нн1.
на використовувати посилат1ня або вказ|вники. ?од! знавення #|пс]ц6е <!о5|геап.п> |/ [ургпове эамовлення
фактинних параметр|в у основн!й програти| зм]нюватпшл'у7пь- #!пс!ц0е <соп!о.[>
мо!0 5шпа({!оа| &1); |/ @еолоц;ення функц[/ $цгпа
ся, оск!.льки функц!я буде повертати 3начення в основну прог- мо!6 па!п()
раму не т|льки через зш:!нну 8 ко1![анди ге|цгп, а й нерез в|дпо- {

в!дтт| посилання та вказ!внтткп, 6о вони вка3ують на ту са1у1у с!гэог();


!|оа| $;
д|лянку па1ш'ят|, де розм!щен| фактинн! параметри. !|оа| &р5 = $;
1{об передати поеилання чи вказ!вники у функц|:о як соц| << ''8вед|ть суму замовлення \п',; с!п >> $;
соц| << "\1 8ам нео6х!дно сплатити \п,,;
пара1у[етри ! не зм|нити аначення фактинних пара}шетр!в, тре- 5шпа(р$); /! 8цклцк функц/[
ба в оголотпенн! функц|| до ко}|сного пара1у[етра дописати соц1 << $ << '' грн'';
кл]очове сдово сопз!. }{априклад, !п| эо((сопэ| !п| -р, сопз| !п| -9); 9е{с|();
у с++ посиланням мо}ке бути не т!льки зм!нна чи стала' )

а ! функц|я
{ /| 3м!на значення посцлання [
<тип>& <назва функц||>(<список формальних параметр!в>) !' (! >= 2о0.0 && 1< 500) 1-= 0.9;
]' (| >= 50о.0) { -- 0.8;
1ака функц|я повертае синон|м !мен| копт!рки, у яку ване- )

сено ре3ультат (посилання на зти|нну певного типу). Функц|я- )|' цьо:шу випадку функц|я $шпа() цовертае у програу|у 3на_
посилат{ня 1иае двояке призначення. ||о-пертше, як ! звичайна [!ення чере3 посилання
р$.
функц!я, во1та мо)*(е повертати аначення в ост1овну програ1шу. 5. Рекурс1 я. Рекурс!ек) на3швает!ься алеорштп;п!чна конст!-
||о_друге, !й сатш|й мо}кна надавати з1{ачень' що е ун!кальни1и
руюц|я, 0е п!0проерол1а вцклцкс'е са.ма себе. Рекурс!я дае змо-
випадко1и у програп[уванн!.
['у 3аписувати цикл|чнутй алгорит]ш' не 3астосову1очи ко1ца}тд
11ршкла0 5. Фголосишто зм!нтту та вка3!вник на д!йсний
[{иклу. ?иповий приклад використання
тип !]оа| *р(, ш; та опи111емо функц|:о рекурс|! _ обчислення
!|оа| &!1еп(|!оа|'а, !п| !) {ге|шгп'(а + !);}
с}актор|ала числа. }1агадаемо,
що фактор!ал числа _ це добу-
':'ок ц!лих чисел в|д одиниц| до певного заданого
числа. Фтэтсе,
Бид!лимо д|лянку пам'ят! для збер!гання вначень десяти го1 : п . (п _ 1)' (п _ 2) . ...'
1. Рекурсивна властив|сть с}акто-
д!йсних чисел рп = пеш 1!оа|[10]; Бикликати ц:о функц|:о моэкна 1;|ала: п1: п' (п_1)!.
звичайно: ц = !|егп(р:1, 3); ?од! зм|нн!й ш буде надано значення [7ршкло0 4. |класти функц!:о для обнислення 7''' викорис-
четвертого елемента. !й'ведемо 3начення п'ятого числа так: '|'ову|очи рекурс|:о, 1ио]1сна так:
!1еп(рп' 4) = 10. 1оп9 1ас1ог|а! (!п! п)
![' цьому раз| функц1[ !|егп() на0аелоо 3начення, то6то у {
!оп9 !ас|;
д|лянку пам'ят1 буде ванесено число 10. !! (п > 1)'ас1 = п - 1ас1ог!а!(п _ 1);


б9
е!5е {ас1 = 1;
ге|цгп {ас1; 10. йодиф|куйте програму !-уртове 3амовлення' використову!очи вка-
) :;|вники :} клк)човим еловом соп3|.
3аувоэ;сення 2. 0ск!льки нав|ть д''я невеликих чисел {}1{ат{ен}тя 11. Розв'яэк!ть задату }ч!! 7 вахцого вар{анта, використав1ши дв1
фактор!ала е досить великим! то у цьому приклад! ддя функц!! футткц!! користув8ча дл.я 3наход'*сення оуми т& до6утку' Результати
задано тип 1оп9" 1{е дае змогу о6нислити фактор1а'т:и
{а'с0ог{а1 вивед!ть
а) на екран;
нисел в|д 1 до 16" ,{ля визнанення фактор!ал!в чисел б|дьп:их
6) у файл"
в1д 16 необх|дно використати алгоритми ,'довго{ ариф:тетики''.
12. Розв'яэтз!ть вадату }ч|! 7 вацлого вар!анта' викориетав'ши дв{
Фбчислимо функщ1:о {ас{ог!а!(5) = 5. {ас1ог!а!(4) = 5 . 4 . {ас|ог!а!(3) = фуцкц|.! користувача. Аргументами цих фуцкц!й ма|оть 6ути посилання
5 4. 3.{ас!ог!а!(2) = 5. 4.3.2.{ас|ог!а!(1) = 5.4.з. 2.1 = 126. пп д!йсн! зпд!нн|.
|{ереконайтеся' що {ас1ог!а!(13) = 1932053504. 13. Розв'яэ*с|ть задаву}.'!} 7 ватдого вар!анта, використову|очи рекур-

[!ршкла0 6. Рекурсивна функщ1я обнислен11я суп1и щ|.:тих


с:ивн|' функц|! (тобто без використання команди циклу).
чисел в!д с до } тшае вигляд
!п! 5шпа (!п! а' |п| 0) $ 11. Фу!{кц1[ (2)
{
!п{ 5; 1. |лобальп| та локальн| 3п{1вн!. Фперац1я види1шост!. |{|д
!|(а==б)$=а; |!{1с оголотпенг!я 31и!пних в оператив11!й пам'ят| котип'тотера
е|зе $ = б + $шпа(а' б _ 1);
ге1цгп 5; |)е3ервуеться }[!сце для 36ер!гання !хн|х 31{&че!{ь. Фбсяг над8-
) !!о! паш['ят! залеэ*сить в|.д тип!в 3м!}тно! та ко1ип|лятора. ко)*сн&
3аувоэтсення3. 3астосову:оти рекурс!то, потр!бно т1равильно :;м!нна характеризу€ться облает1о д!! та облаот}о види]шост|.
складати с!поп-у]у'овц' як! забезпечутоть зак!ннення щикл!нних ()блаетпь 0!1) _ це частин& програми' де 3м|1тна придатн& для
обчислень. |!овноц|ттного опрац1овання. 0бластпь вшаш]у'ос/п| _ це частит1а
3прави !|рограми' де 3м!нн8 оголо]петт& або, де до нет ш1охсна отри1\[ати
1. |{ридумайте призначення, склад|ть ! запитц1ть функц!то &о0(!п| [1, /(оступ ва допош!ого1о операц!! надання вид}1]шост!' 1цо по-
!п| !<2),сигнатура яко| огодо1дена у приклад! 1. :}цачаеться ,,::''. 8м!нн! мохсна огодотттувати у 6лоц| ко1шанд' у
2. |[ридумайте признанення та опи:д!ть дв! _ три функц!! р|зних ';'|..::| деяко! функщ|! а6о по3а вс'1ч'а функц!я:ши (гло6альн!
тип!в. :гм!нн!). Ф6ласт| д!! та мо)кливо1 види:шост|' час д!! зм!нно! у
3. ]!1одиф!куйте програму товарний чек на випадок куп!вл| двох вид1в ;гс:вн|й програшт! за.]1е}кать в1д того' де ! як оголо11тец! з1ш!н|1!.
товару за р!зното ц!ното. ?оварний тек вивед1ть у файл' 3м!нн1, як! оголотпен! у т!л! деяко[ функш!! або у блоц|,
4. }1одис!!куйте програму [оварний чек на випадок куп1вл! Ё вгпд!в то_
|13ива1оть с я по'с(' &ьш1ь л1ш. Фбласть д|! локальттих з1у{|}{них по_
вару за р!зно:о ц|но:о, якщо к!льтс|оть товар!в наперед в!дома.
| 1

3коз!вко: викориетайте команду циклу [ог. ![]ир1ооться ли1пе на в1дпов!дну функц!то чи блок. |,{!д тас ви_
б. 1!1одиф!куйте програму [оварний чек н& 8ипадок куп!вл! & вид|в хс>ду !з функц!! (блока) чаотина оперативно! пам'ят!', в!дведе-
товару ва р|зното ц!вото, якш1о к!льк1сть товар!в н8перед нев!дома. ::о| п|д локальтт! з1и1н}т!, вив|дь|{яеться' тобто 3&к!пчуеться об-
8тсаз]вюа. Ёикористайте команду циклу |шь]|е 3 параметром завер]пен- ''[|!сть д|[ зтш!нно[. 1ому у р!зних функц|ях мо)|(на використо-
ня циклу. |!у!]ати 31у1!нн! з од}1акови1ши !]шена}ши.
6. €клад|ть прогр&му для обчислення фактор!ала нисла, використо_ [!рс*кла0 -[. €класти програ1у1у 3 викориетання1ш функц|!,
ву1очи рекурсивну фупкц|:о. 3найд!ть фактор{али нисел 4, 7, 10.
7. 8ивед!ть у файл фактор!али нисел в1д 1 до 10. }|!({1 3находить 1шакси1![а.]тьне серед трьох введених чисел.
8. 3апи:ц|ть рекурсивну функц|:о 9о0ш1о}с() для обчислення добутку #!пс]ц6е <!оз|геагп.б>
#!пс]ц0е <соп!о.}т>
ц1лих висел з д!апазону в!д с до 6.
9. 1!1одиф|куйте програму !-уртове замовлення' використовуточи вказ|в_ |[оа| [т:|ах({!оа|'']оа|'']оа|); |/Феолошення функц[|
ники. мо10 па!п()
{

60
61
с!г5с(); ,л1!плогу. Бикористов).[очи функц|то, ви3начити сзага.'тьний |шлях'
{!оа| пах' х1, х2' х3; !! о2оло!1!ення зм|ннцх ;ппсий прой1пов потяг' 1 в!дстан!тш!этс станц!ями.
соц| << "}вед!ть три нисла \п"; #!пс!ц0е <!оэ{геап.[:> // |1ро локальн! гпа елобальн| зм|нн!
с!п >> х1 >> х2 >> х3; #!пс!ц6е <соп!о.б>
6д; = йах(х1, х2, х3); // @бчцслюомо макоцмальне сере0 уве0еншх н-шсел !!оа| ё = 0; !/ Феолосцення ело6ально1 зм|нно[ 6
соц| << "\п йаксимальним серед чисел '<< х1 <<'," <<9 << "' " << х3; мо!0 па!п()
соц| <<" о "<< пах;
{
9е|с[(); !п| [ = 5; у, 1;
) соц| << "!вед!ть
'!оа| швидк1сть потяц \гт"; с3п >> м;

мах |ог (!п| п = 1; п <= &; п++)


{!оа| йах(||оа! а, !!оа1 ь, {|оа| с) /! @пцс функцг{
{
{ соц| << "\п!вед!ть час, який затратив потяг'';
!!оа| пах;
соц| << " на перет3д м!ж зупинками "<< п;
!|(а>б&&а>с)пах=а; соц| << . та ' << (п+1) << "\г:';
е|эе с!п >> |;
!|(б>а&&б>о)пах=ь; {!оа| 6; // 0еолоц;ення локально[ зм!нно/ ё
е|зе пах =с;
ё=!-у;
ге!цгп пах;
)

3ауваэки:ш@: 1|{Ф у ц!й шрограм| 3м!нна |тах оголо1пена в!д- ::0=;:0+6; // 3верпання 0о елобально[ зм!нно1'

разу у двох функц|ях па1п() ! мах().


)
соц| <<"\п 3агальний шлях " << 6 << " км '';
3шт|нн!, як! описаЁ! поза вс!шха функц!я:ши, тобто на почат- )

ку програми або у файл| 3аголовка' назива1оть 2ло6альт!ш]}1ш. } цьому випадку зм!нна 6,, яка огодо|шена на початку прог-
Бони видити| та доступн! п|д вао вико}1а1тня вс|е1 програтши' [о |}|!ми' е глобальното. ][' блоц| кома1{ди [ог оголотпена локальна
таких 3м|нних мо]1сна 3вернутись з 6удь-яко! функц!! чи блока' ггм!:пна 4.
Функц!я моэ*се шовертати зт1&чення у основну програш|у 3а 3оувоо:сення!. ,(ля динам|тних зм!нних не д|тоть правила ви-
допо1цого1о команди ге|цгп' вказ|вник!в, посилань
або чере3
димост! та доступ!{ост!. ,(инам{нн| зм!.нн! видим! та доступн| у
гдобальн! зти|нн|. 3начення глобальвих зхш!нних 1шо)кна зшт|нто_
вс!х функц!ях та блоках програми протягом уоього насу !х
вати у т!л! функц!й. 3 огляду на це у велик|й програти| ва}кко визначеност!.
проанал!зувати 3начення глобально| зм!нно[ на певному етап! 2. |{лаеп пати'ят1. ,{ля того, щоб 6езпосередньо вказати
|| виконання. !ому варто якомога мен1пе використовувати ]сс:мпт'потеру як ! де у його пам'ят! мак)ть з6ер[гатися значення
глобальн| зти!нн!, бо це ускладн1ое розум!ння програми' :;м|г:гтих чи функц!й, як мо)*сна отримати доступ до цих
,[еяка зм|нтта мо}ке 6ути доотупно1о' а'11е в певний
мо1шент
/(|!!|их' як ви3начттти о6ласть видимост! цих даних' використо-
невидимо1о. Ёаприклад' якш{о глобальна та локальна зш:|нн| Ёу!(угь спещшф|тсо7порш юлосу па.л[' ять1. 6 п'ять специф!катор|в
ма1оть однакове |м'я, то глобальна зм!нна у облаот1 д!! в|дпо- 9).
в!дно! локально[ зм!нно! 6уде невиди1!!о1о. 1обто локальна зшт!н-
{':'г:б.::.
!аблцця 9' 1€ласц па:п'ягп!
на в област! свое| ви3наче1{оот! перекривае д!то глобально| [{лас папл'ят| 1[ае д!! зм1цпо[ Фбласт| впдимост! та
зм|нно!. ,(ля того, щоб звернутись (доступитись) до гло6а'гльно[ л|[ з:и{нно[
зм|нно| у деякому блоц! ни функц|[, використову|оть опера- ац|о 1имчасово
ц!то надання видимост! ::. } цьому випадку до !ш:ен|
зтш|нно! ]1окальт*а
]э1ег 1имчасово ]1окальна
зл|ва допису1оть два символи двокрапки' Баприклад' ::рцбш[о&'
ех|егп 1имчаоово .}1окальна
::0ау тощо. в|а|!с |[ост|йно .}1окальттд
1ршкла0 2. Б|домо, що потяг про!хав 5 (&) станц!й з| ста- |{ост|йно [ло6альна
.,1о!о 1пвидк!стто р кшт/год. 9ао, затранений на пере!зд м|хс стан- уо]а| |1ост!йно |лобальна
п1|г:тии, та тшвидк|сть потягу треба ввеоти з клав!атц>и у реэким!

63
1\2
Розг;:янеш:о д!| цих специф!катор!в.
Функц|я сс при3наче}1а ддя о6числення су:у!и чисел. 8кщо
эк потр|6но обчислити добуток чисел' то фунц!я гпа|п() 3алш-
8пет{иф!катор аш|о дд'я л0т{&льних ам|нних 3Ё1стг)совуеться
!!!шп'ься без з:ш1н, а зати!сть функц|| сс сл!д записати таку
3[1 3а1цовчуванняпд' т01цу 383начати його не о6ов'яатсовцэ. Фб-
ласть видитиоет1 таких впд1нних обтце}т{ена' 6локо;нт', у яко1шу в0- с[ункц!то:
ни 0гол01шен!- 11!д ч&с вихс>ду а 6.::ока шам'${ть, яка в!дведена сс(!п| п)

для цих зм|нних, авто1\{атв(чно вив|льятяеться' а з*т!нн| 3}1иш"{у-


{
з1а!!с!п|5=1;
10ться. $*=п]
ге!шгп $;
€пещиф|катор ге9|э{ег вка3уе кошхп|лятоР}, т4о 3}таче}[}тя
)
здш!нно[ сл!д збер!г&ти у рег!стра'х' [е ашленштуе час доступу до
зпт|ттхто! 1" шрискорго€. вик.о1{ання 1трогр8ми. ${кщо }1е м0}1{ливЁ
[ло6адьн! статичн! зм|нн| |н|ц!ал1зутоться п!д час 3апуску
розм!стити зтш!нну у рег|стр1, то з:ут|нна 6уде збере]*сен& з1 спе-
|!])ограш!и. Фбласт| !х д![ та видимост! розповс}од}ку1оться
,||||!!е на той файл, де оголо1шена ця зм|нна.
циф!катор0ш! ац[о. Ф6ласт| д!! т*" видитшост1 рег!отрових аад!гт*
них' 8к ! вуя!нн*тх з1 епецшф!катороу[ аш1о, о6:иеэкен! блоко:ш, у {асто, якщо програма складаеться з дек1лькох файл!в,
||||]{икае потре6а передавати 3начення 3м|нних 3 одного
$&0:}1} вони 0голотшен!. файлу
:: !:тхпий. } такому випадку до з:ш|нно! 3астосову1оть специф|-
бпет1иф1'катор з1а!1с м0}кна 3ает0с0вув&ти як до л0кальних,
так 1 до гло6адьних зпт!ттттих" }{а в!дм!ну в|д зм!нних в|- !(|!'!'ор ех|егп. Б!н дае з]иогу оголотпувати гло6альн! зтш|нн|, д|я
;!|сих по1пир1о€ться на вс! файли, 3 яких скл9даеться
специф!'кат0ра1у1и ац1о чи ге91э{ег 3!{&че:{ня докально{ статично! 11роцра]иа.
зтш|нно! з6ер!гаеться т:!сля виходу з б.пока вт+ функц||, де щя
€пециф!катор то|а!|!е 3астосову1оть до глобальних зм!нних,
.}!|,|1{ення яких мо}}{уть надходити
адд!ттна оголо|]:ег{а. |||д тас п0вторного виклику функц!1 зшт!н- в|д перифер|йних пристро-
!!|, т{аттриклад' якщо зм!нна набувае аначення в|д системного
на абер1гае сво€ попередне зн&чення. [[ктцо з:и!ттша явно не |гя1-
|']|;|мера.
г1!ал!зована' то 3& з&мовчуванням !.й надаетьея вттаче:тня 0"
[!ршк:ъс.6 3. Ф6числити суму а6о добуто}с перш]их п щ|лих 3. [1ереваптапсеппя фупкц!й. ]/ тиов| €** допуска€ться
д0датт{их чисел. |!]!гс()ристовувати одне 1 те саме !тш'я функц|! для р|зних на-
06чутслитшо спочатку сушху чисел. г;+:;г!в а!Р}:шент!.в.
{е називаеться перевош1пошсенн,я]п Фуюк-
!/ ё6ншслення сумш :1/:}'' або поп|;шорф1злс'олэ. |{еревантаэгсення використову|оть'
*!пс!ц{е <!оз!геап.}т> :,,,,ги необх|дно викликати
#|пе[ц6е <соп!о.[> функц!:о 3 аргументапти р!зних ти_
г:!;з, ::6о коли функц!.я зале:кить в|д
сс(!п| п); р!вно[ к!лькост! аргумет1-
мо!0 гпа!п() ';'!::. |{' т&ких випадках необх!дтто ко}|{ну
функц!то оголосити й
(
го!!!!(){}!}1 окре1\,[о. |[!д тас !! виклику
о!гэс(); ко:шп!лятор автоматично
1п{ п, $; ;с;,,;:п:тал|ау€ с}1т1{атури та ви1сот{ае код в!дпов1дно[
функц||.
сош1 << "}вед!ть число'; || ршкла0 4. Бикористову1очи переванта'1сення
с!п >> п; функщ!|,
!'!(,!.!(:ти програ1шу
!ог(!п| ! = 1; ! <= п; |++) $ =ос(!); для ушорядкування трьох уведених даних
соц| << э: Ё!.}(' (:имводьного' або ц!лого типу.
0е1сп(); !пс!ц0е <!оз[геагп.|>
,,
]
, мо!0 $ог!(!п{ п'!, !п| п2, 1п{ п3);
!!._*-*- шо16 5ог{(с}:аг п1, с}:аг п2, с}:аг п3);
сс{|п1 п} шо!0 па!п()
{ // []ей ря6ок буёе вцко'1анФ л!!ьые оёвн раз (
э|а1|с!п18=0; // п!ё зас персх:оао вцклцц фу|.'кц![ !п[ !1' !2, !3, &;
$+=п| с]:аг с'!, с2, с3;
ге1шгп 9; соц| << ''9вед1ть 1 для впорядцвання символ1в, 2 -
)
для чисел\п,,;

(',1 65
с!п >> к;
![еявни1}1 створенття\!| е'саел1пляр('
!' (к == 1) 1|'а6лоно. ?акий п|дх|д
трограмуванн| називаеться у
у 3а?апъ1{енш]ш про"р(' ]пу
|
{
ооц| << "}вед!ть три оимволи"; в &н''я ]ш'
с!п >> с1 >> с2 >> с3; "" "'Ё:::"-::::: ^у::{ "]'"р'1: функц|:о у"'".'|"''1го типу.
5ог[(с1 ,
)
с2' с3);
;;;;;;;;',
.{ (к == 2)
{
соц| << "!вед|ть три числа"; с|п >> |'| >> !2 >> !3;
$оп(!1' !2' !3); !

параметр|в зам|сть стандартних


)
1--:::::*_форштальних
тип|в
) да1{их за3нача1оть на3ву ;";;"";;;;;;;
::::"т:^"::]_ _Б

мо!6 5о((|п[ п1' !п| п2' !п1 п3)


{
::
71.л:я
; ; *::"-::,: -*:- -т'"
функц|! користувана.
ув анн я *"о"
'" "
у,]* #;;;; ;;";1;
|п| о; 3ауваэюення 3. !/ стандарт1 1$Ф/А$$1
!| (п1 > п2) {с = п1; п1 = п2: п2 = с;\ зам!сть клточового слова
|| (п2 > п3) {с = п2; д2 = п3; п3 = с;}
с!авэ прийнято 3аписувати 1урепапе'
!1 (п1 > п2) {с = п1; п1 = п2; п2 = 9;1 ,{кщо для деякого типу
соц. << п'! << ''\1'' << п2 << "\{" << п3; даних функц1то необх!дно описати
(}!сре1\1то' то створ1ототь яв11у спецшф1тсот4йго
)
:с:пх формадьних параметр!в функц:т. ф.д: у спис-
*'б''"' зазнача|оть конкретн1
'|'|! ||и аргуш{ент!.в.
{
сьаг 1ршкла0 5. |{ереробимо програму з
о;
прикладу 4 для упо-
!! (п'1 > п2) {с = п1; п1 = п2; п2 = с;} |)'!,(!{ування трьох введе!|их даних заздалег!дь
!{ (п2 > п3) {с = п2; п2 = п3; п3 = с;}
!!у' нев!домого ти-
|! (п'1 > п2) {с = п1; п1 = п2; п2 = с;1
використову1очи штаблони.
соц| << п1 << '\1" << п2 << "\1' << п3; #!пс|ц0е <!о5!геап.п>
) #!пс|ц0е <соп|о.}:>
/| @еолоц;ення ц;а6лона
3аувоэюення 2. !,ля функц!й' як{ в!др|зняк)ться типом значен- !епр|а|е <с[а5$ му1уре>
функц[[
т1я' яке вони цовертатоть, ! ма1оть однаковий наб!р аргу1иент{в' мо!0 $оп(!т4у[уре п2, му1уре п3);
переванта'1{ення у мов! €*+ не ви3начено, тобто !м надавати мо!6 па!п() '!,'йцуре
однаков{ |мена не мо)!снс'' {
с!гэсг();
4. 11]аблони функц|й. |1ереванта)*{ення функц!й, описане у !п| !1, !2, !3, &;

попередньому пункт|, таото бувае корисним' але не зав}кди с[:аг с1, с2, с3;
со('!( << введ!ть .!
для впорядкування символ!в, 2 - чисел\п,,;
3ручни1у!. '[к видно' один | той еаму1й програмний код с!п >> |;
довелося 3аписувати окремо для зм!нних символьного типу' а !' (к == 1)
пот|м для ц!лих чисел. ][' мов! б** е вмога уникт{ути так€ {
<< ,'!вед!ть три символи',;
соц1
дублювання ва допомого1о ша6лон!в. [о6лон функч{[ - цв с!п >> о.| >> о2 >> сз;
опис функц|[, яка заде}тсить в|д даних дов|льного типу. кр1м 5оп (о1, с2, с3);
того' така функц!я мохсе повертати в основну програму ]' (к
)
== 2)
ре3ультат дов!льного тишу. [обто користувач створ}ое сигн{}. {
,'!вед!ть
соц|
туру й описуе функц!то 3 аргу1иентами деякого 3агального <<
с|п >> ..' >> !2 >>
три нисла,,;
!3;
типу. ||!д нас виклику тако[ функц1! ко:шп!лятор авто1\датич1|о 5оп (!1, !2, !з);
проанал|зуо тип фактинних аргуштент|в' згенеруе для них )

ттрограмний код | виконае в!дпов!дн! д!!. 1{е називаетьс'| 9е1сБ();


)

(; (;

67
6. Функц|я тпа|п() 8 пара1шетраш|и. Функц!я, яка 1шае бути у
:ст;экн!й шрогра:ш|, _ це функц!я па!п(). ,(ос| вона викорис-
!егпр|а|е <с!а59 мшре> /| @пцс ц;аблона функцг[
уо:с! $оп(му:уре п1, мшре п2, йу1уре п3)
{
'!'()вува"]тась без паратшетр!в: гпа!п()" ,{,к 1 |нтп! фуккц!!, ця функц|!
!т:!у!уре с; м())ке 1шати аргу]шенти. Бони 1!а3ива1оться ареул1ент!.а]у1ш кол1ан-
!{ (п1 > п2)
]лт'оео ря0ка. !х зазначатоть п!д час 8апуску програту!и (ехе_фай-
{с = п1; п1 = п2; п2 = с]].
!| (п2 > п3) ;:т) у котшандному рядку операц|йно! систе:ши.
{с = п2; п2 = пз; п3 = с;} 3агальний вигляд функц|[ гпа|п такий:
!| (п'! > п2)
{с = п1; п1 = п2; п2 = с;|
<<п2 << "\{" << п3; !
,

1п1 па!п(!п| аг9с, с[':аг *аг9м, с1таг -епм[])


соц| << п1 << "\|" !_
!

)
/(() аг9с
_ число аргумент|в функц|| * 1 (назва програми те'*с
5. Ббудовав[ функц!!. ||!д час вико1тан!1я програми гене_ !!|!|1?к&еться арц/1у[е}ттом), як!задак)ть у ко1у[андно1шу рядку.
ру1оться коди для вс!х функц|й користувач8. коли
в!дбуваеть- !1г:раметр аг9т _ це вказ!вник на 1шасив симводьного типу. |{а-
ся 3вертання до т!е! чи !ншто! функц|!, зд!йсню€ т ься виклик
|}||метр епм[] слухсить для передан| параметр!в для операц!йно!
в|дпов!дного коду. $[кщо до деяко[ функц|! 3верта1оться бага-
1!(об
(:}|()теш|и'
у як!й виконуеться црогра.ма. Р1ого викориетову1оть'
то р&з'в' то робота програ]ши спов!ль}11оеться. цього уник- !!!|!!рикла4' тод'.' коли програму потр1бно виконати в р|зних
нути' :шо'*с!1а використовувати так зван! в6удован| функц!!' сг:гс;рац|йнох системах.
$оди таких функц!й вставля1оться комп!ляторо1ш у ко}1([1у 1ршкла0 ?. Ё[ехай треба знайти :ш|н!:шаль:те або макси-
точку виклику в основному код!. {е витшага€ дод&ткового об- м!!.,[ьне 3начен}1я функц|[ ! : х2 в!п.т, де .т з:и!нтоеться на цро-
сягу оперативно! пам'ят|' проте прискорюо процес виконання м!;:ску [|; 2] з кроком }т * 0,1.
програми. 11{об створити вбудовану функц|то, потр|бно до !! #]пс|цёе <|оэ|геап.|> !/ 8окорслсгпання функц[[ па!п() 3 параме(прамц
оголо1ше11ня додати кл1очове слово |п]|пе. #!пс!ц0о <соп!о.[:>
1ршкла0 6. Бикористову1очи вбудован| функц!!' скдасти *!пс[цёе <ргосе9э.ь>
#!по!ц6е <па|ь.п>
програму для обнислення до6утку #6е{|пе !':0.1
!9ьь+э #6е|]пе б 2
м!п(']оа| у);|!оа[ йах(||оа| у);
дЁ-15' '|оа!
|п| па!п(!п| аг9с, спа.'аг9м[])
Бикористання функц!! тут мае |лтостративний характер' {
!{ (аг9с < 2) !/ 2кщо параме[г'р не за0ано
#!пс[ц6е <|о$1гёап.ь> !! 86у0ован| функц['т'
{
#се'!пе ш 10 соц| <<'недосгатньо арцмент!в\п";
!п!!пе 6об(!п1 а); соц| << "!ведЁь параметр п!п або пах";
то!ё па!п()
'!оа[ ех!| (1); /! ||осгпроково вцхо0цмо з про2рамц
)
{!оа1 9; !|оа1 х, у;
|ог (!п: & = 1; & <= 1х|; &++) о = соь(к); соц| << " [ \| } \п"; /! 7абулюомо функц!ю
соц| << "Аобгок дор!вню€ = " << 9; |ог(х=1;х<=!;у4=|)
) (
}=х"х-э!п(х);
!|оа| 0об(1п| а) соц| << х << "\1" << } << "\п";
{ )
з1а|!с|]оа10=1; /| !1ерев!ршмо, нш 0руеай парамвгпр с (п!п
-
0 = 0 (5-а + 2) / (а - 15); !| (-аг9м[1] =='п' &&
-(аг9м[1]+1)
=='|' &&'(аг9м[1]+2) =='6')
ге{цгп ё; соц| << "[:!!п = " << й!п(у);
] е]зе
|/ 1ерев!рамо, нш 0руеай параме[пр с !пах
Биконазтши програ]у1у' одерэ*симо 3:{ачення доб5гт:су 28380' б. || (-аг9м[1]
-(аг9м[1]+'|) -(аг9м[1]+2)
=='гп'&& =='а'&& =='х'1

68 69
соц1 << "йах = " << йах(у); 0:\!аб\рго9гап.ехе пах <Ёатисн!ть на клав!шу вводу>
е|5ё соц1 << "[1араметр не визначено"; 0:\!аб\рго9гап.ехе [!! <Ёатисн!ть на клав1шу вводу>
0е1оп(); .е|цгп 0;
)
8к| результати ви отри:иали? 8анотуйте !х у зв!т.
7. 1!1одиф|куйте програму 3 прикдаду 6 так, щоб одн|ото командото з
!!оа{ й!п({!оа| у) !(()ма}{дного рядка 1!1оэ{сна було знайти макоимальне | пд|н|мальне значен-
{ :::: або ли!пе одне з них.
8. €клад!ть програму для розв'язувант{я задан| }'{! 8 ватшого вар|ан_
'[оа|х=1,п;
п=х*х-з!п(х);
{ог(;х<=2;х+=Б) '|'1!| 1]икористовуточи функц!|, локальн! та гло6аль}|! зм|нн!.
{
9. Биконайте завданпя }ч1!: 8 ватпого вар!анта, використав1пи функ_
}=х-х-з|п(х); г:'!:<> па!п() з параметра1ши.
!|(п>у)п=у;
)
ге|цгп
)
п;
$ 12.мАсиви
| !---------
{!оа! мах('!оа1 у)
1. 1![асиви. 1!1асив _ це впорядкований ск!нченний наб!р
{
,/1|!|1их одного типу' як! збер!га}оться в посл]ао6но ро?1по.шо-
|]оа!х='|,п; .!.!!!![х ко]у!1рках оперативно| патш'ят! ! шла:оть сш!льну на3ву.
п=х*х-5!п(х);
!ог(;х<=2;х+=п) ! !:::;ву 1цасиву надае кориетувач.
{ 1!1асив складаеться 3 е][е]],!.ентп[в. \,отт<ен елемент ш|ае |ндек-
!=х*х-в!п(х); |'!|' за яки1ши його :иоэкна з|тайт'1
||(п<у)п=у; у масив|. }[!льк1сть 1ндекс|в
) !!|!:}|тачао ро3м|рн!оть масиву. Розр|знятоть одно- та багатови-
наприклад' двовиш|!рний масив даних _ це таб-
ге|цгп п;
)
гм!1>пп| тшасиви.
,!!!!('|' що складаетьоя з дек!лькох рядк|в | стовпц|в. ][' тшатема_
3 6|бл!отеки ргосе55.}п використано функц|:о ех!1(), яка дае
3ш[огу достроково 3авер1цити виконання програ1ци. :'г:п1! понятт1о масив в!дпов!да:оть поняття вектора та матриц|.
[}дгальний вигляд конструкц!| опису одном!рного масиву
Бправи
!']! !( ш |{:
1. Ёавед!ть приклади оголо1пення гдо6альних ! локальних зм|нних.
2. Бикористову1очи перева1|та}кення функц|й, склад!ть програп|у
для обвислення :ш!н1мального з п'яти введених даних. ,{ан| мо;куть 6ути
щ!лого або д!йсного тип|в. !)озшг|р- це к,льтс'с/пь еле1шент|в 1шасиву. Розм|р }дасиву
3. Бикористовуточи перева}!та}}сення функц!й, склад!ть програму о:;'сг{!х!/{но знати | задавати 3аздалег|дь' оск|льки комп!лятор
для о6нислення добутку се1ии введених даних. ,(ан! мо:кутъ 6ути ц|лого м!|(] :}{]ре3ервувати для нього необх1дний обсяг пам'ят1. Розти|-
а6о д!йсного тип|в.
|)!!м м()}ке бути литпе ст!с'ла величина (не зшх!нна).
4. Бикористову1очи тпаблон, склад!ть функц|то для визначення _ це стала ве-
к|лькост| введених !з клав!атури да'1их (тисел чи символ!в) !з ваданого ]м'я масиву у програм! зм!н:овати не 1шо}1{на
|1!||!!!!!1|' яка м!стить адресу пер1шого елемента. Фтхсе,
д!апазону' Бведення даних орган|зуйте 3а допомого|о ком8нди циклу. н&з1]|1
б. Бикористову|очи 1п11пе-функц!!, оклад!ть програму для обнислен_ !ч!!|']!!!у е вказ!вником на перший елемент.
ня максимального 3 |пести введених ц!лих тисел. !!:пптриклад, команда |п| э|ш0[5] оголо1пуе 1шасив з |:цсппс:ти
6. Ёабер!ть програму з прикладу 6 у середовищ! 6**, збереэ*с!ть !! у ,!!!.(|, ятпсий складаеться |з п'яти ц!лих чиоел; кош|{|т{,(п {!оа|
сво!й робон!й папц|, наприклад 0:\1аБ\рго9га|п.срр. Биконайте програму
!{б!| |()| ()1'оло1пу€ масив г!5|' який м!стить десять чисел ,(|йстлоп'с;
1 вийд!ть !з середовища. 8вед1ть у комаЁдному рядку '['!п0о'тцв або
!|р0грам РА&, тФ'|п0отув €отпгпап0ег тощо посл!довно команди :::;:у; с[:ага!р[ам11[6] _ оголо1шення 1шасиву |з 6 сицдвол|в.
1|:тстрттутись до еле1иент|в масиву ш[о)кна двош[а с]1особами:
0:\!аб\рго9гап.ехе <Ёатисн!ть на клав!шу вводу>
0:\!аб\рго9гап.ехе п!п <Ёатион!ть на клав!шу вводу> ,.'{ .,|()|!()мого|о |мен! масиву або використовук)чи вк&3|вники.

70 7!
3оувоэсення !. !,[' навчальних ц|лях використання !мен б!льп: ':юйого роз:ш!р 8авпач8ти не обов'язково. ![' цьотиу випадку
наочне' однак в!дпов!дно до профес!йного п!дходу ол!д надава- |(омп|дятор са}д ви8шачае' ск!льки пам'ят| ттеобх!дно 3аРе3ер-
ти перевагу вказ!вникам. ||увати. )/ паведено1иу прикляд! :шасив $!ш6 складати1\деться 3
Ёумерац!я елеш!ент|в 1шасиву зав'|сди почи]1а€тье$. 3 |!'яти ц!лих чисел.
'|упя'.
1[об звер11утись до деякого еле1ше:1та' необхино 3а3начити Ёадати значевня !тттцим еле1\[ента1\д ]шасиву г!з1 або з:ш|нити
|:и'я масиБ}, & у квадратних ду3*сках _ його 1томер. Ёаприк- ]|||€|чення вэке про1н!ц!ал!аовапих елемент|в :шонсна коп,1андо1о
л&д' 31ш|н}та э|ш6[2] е трет!'шт еле1иентом масиву $[цс' а $1цс[4] _ !|рисвоення' }1априклд4' так: г|э|[3] = 175.4, г|э|[9] 184..| або так:
=
п'яти1и, оск!льки масив 5|ц6 м&е еле}денти '(г!э| + 2) - 164.5, *(г!в| + 7)
=
.|48.0
то1цо. Бледденти масиву тако}!с
5!ц6[0], 51ц6[1 ]' 9!('6[2]' $|цс[3] та $|цс[4]. м()]кна вводити з клав1атщ>и п!д час викона1{ня програ1ци' як
:ц: робимо для з:ш!нних 1троотих етандартних тип1в.
3оувоэюення 2. 1[омп|лятор мови €** не контрол|о€ налеэ*сн|сть
1!1асиви-стал! (знатення яких зм!н:овати
|ндексу до з8д8ного д{апавову. 8!дпов!дадьн!сть за це несе про- у програтш| не
грам!ст. Ёаприклад, .якщо у програм| оголооити масив па5 3 м<;атсна) оголо1]]у1оть так; сопз| !п| |!а9[]
= {1 , 2}.
п'ятьм8 д1йсни:ши числ&ми ! написати комавд!/ гпаз[54] =2, то бтал! 1шасиви треба !н!ц1ал!зувати п1д час оголоттт9ЁЁ8:
пов!домлення про помилку не буде, проте нев1домо' у яку !г:;.:к1ше еле1ше}1та1ш масиву автоматично будуть
приевоен! ну-
д|лянку пам'ят! потрапить чпело 2 ! що трапиться. :::'ов! значевня.
}{азва :!!асиву з|ц6 е вказ|в|{икоп[ на його пер:ший елемент. ,(ля опрац1овяттня елепте;лт!'в 1шасиву пайчаст1тпе викорис-
3:ш!нна 'э|ц6 пд!стить 3начення пер1|1ого едепле||та плаеиву (еле- '|\)ву}оть комяттду циклу [ог, хо!{а мо).сна 3астос}[вати
1 шг?:!!е або
1шепта в|шё[0]). Фск!льки ве! еле1шекти масиву розпл!тцен! у по- с!о-ш1т!|е.
сл!довних кошт!рках оператив1{о[ пам'ят| комп'}отера' то вка- 1рс.отсла0 .[. 6творити маоив в пер1пих ста
ц1лих чисел !
з!вник (э!ш6+1) вказуватиме на другий еле1иент штаеиву (зтл!_ с:(г'гислити су:шу вс1х його значе|1ь 1\{о}}сна одни1\,1
!з способ|.в:
]цепня в!дносно вказ!вника з!ц6 на одну одиницк) па:ш'ят!), а
!п|п[100]; п[100];
вказ!вник (э|ш6 + 4) _ на п'ятий (зм!щення 11а чотири одиниц!). !п|5=0;
/| 1-йслос!6 !п! // 2-й спос!6
]п!$=0;
||ро!н|.ц!ал|зувати масив (вадати 3пачення елеме:тта1![ |ог (& = 0; & < 100; ) !ог ([ = 0; & < 100; &++)
штасиву) мо'1{на одним |з способ!в: ( (
'(п+&) = 111'
. використов)г!очи принцип 3а1уговчува|1вя; п[&] = & + 1;

. безпосередньо п1д вас його оголотпевпя; 9 +='(п+&);


)
$
)
+= п[&];

. застосову1очикомандуприсвоення;
. п!А час введе11ня даних !в клав!атц>и. в масив! конкретпих дапих розв'язу-
{3адан! в1дтпукавня
3а заддовчування]ш ус!пп елеплентам масиву падаеться зва_ шу|'!, 1!1етодо1ш скануван:тя (перебиряттцд, перегляду) вс!х еле-
неосгп1в 1шас!!ву аа до1|опшого}о
чення 0. 1!1асив пдо'!сна !н!ц!ал!зуват!! повн!етто або частково цик'цл й умовпо[ команди' де
|!п{! ||!ча|оть
в!дразу п!д нас його оголо11те1{вя' 3аписук)чи 8}1аче!{ня 3м!1{- у1шову по1шуку потр1бних да1{их.
'
т{их чере3 ко]шу у ф!гурних ду)кках. }[априклад, 2'.(ипам|тпе оголо]пеппя
лшасив1в. |[|д тас комп!ляц|[
!п| 9|шо[] = {2, 1о' 5' 7' з}; .| | )( коду для стати1!1|о ополо1пе||их пдасив|в 1{я ца€ться
)]'р&1иного
||оа! г!з![10] = (1 63.4' 154.6' '!70' 172'8, |; |]пм'ллть. .(ля ефектт4ввопо впкористаппя па1ц'ят1 признанене
сьаг а!рьау!1[6] = "А6етка"
лш::;гм|чне оголотпення 1шасив1в' а са1ше:
а6о с}:аг а!рьау!1[6] = {'А', '6', 'е', 'т', 'к', 'а'}.
<тип вказ[вника> *<на3ва> пеш <тип
[1ертп| чотири елементи масиву г!э1 були про!н|ц!ал|зован|, = зм!нноР[<к|льк!сть>|,
а ре1пта
_ н!. 1!1асиви символ!в детальн!-е розгляве},1о у нас_ ]|!сля виконавня ц1е! коматтдтт буде вид!лена неперервна
тупно]шу параграф1. |1} :: :: ::гса па:и'ят! о6сягом
,Ё,кщо масив повн!стто !н!ц1ал!зу:оть п!д час оголотпен!тя' в!:оо|(тип зм!нно1) * <к!льк!сгь>
,

72
т3
1 ]{азвамасиву вка3уватиме на початок ц1е1 д1лянки. {

3 динам!тт{о1о зм!нно1о мо}кна вико!{увати операц|[' визна- гап0оп!:е();


с!гвсг();
нен1 для даних в|дпов!дного базового типу. |п{ у[1 0];
|{1сля опрац1оваг1ня масиву вив!льнити пам'ять 1шо}тсна за соц| << ',ёекмнда^\{ 1(йьк|сть
виклик!в \п,,;
допомого1о команди !ог (!п| 5 = 0;к 0; & <
= то; к1]]''"'',",. ',
{
ёе!е|е[] <назва вка3|вника на масив даних>; у[к] = гап0оп(з0);
к+1.<<"\|\1"<<
3т;;
,'\п,,;
{&] <<
||!д нас вив!льнення па1и'ят| розм|р ш{асиву зазначати не ._ \, ?
} ^,,' // або $ +=
у[*];
потр|бно. ооц| << ,,\п
$=.<< 5;
Розв'я'тсе:шо 3адачу з прикладу 1, використову1очи дина- к=0;
!ог (!п( пах = *у;
шт|чний розпод!л пам'ят! & < 10; &++)
|! ("(у + к) > пах;
*п
!п| = пеш |п| [100]; // 8цё!лясмо пам'я!пь 0ля сгпа ц!лох носел тпах: -(у
+ &);
!ог (!п1 5 = 0, [ = 0; & <'100; соц| << "\п пах - ,,
)
{ // @працьовуемо масцв 9е1оп();
-(п+&)
= 4;1' )
5 += *(п+[); Розв'я}1семо 3адачу
) . про А?€, викооистоп\'итгт' '{\*.---
ёе|е!е[] п; // 8цв!льняемо пам'я/пь |)]|(:'|'увача'
''.р'*"'р.* 2!' яких" *."'"Рстову1очи функц|{
1роерама А7€
3а допомогок) динам!чних 3м!нних розв'язати 3а_
1у!о}кна
//
#!пс|цёе .;'.,""'.|3,кор
1 ц сп ан ням фун кц| й
дачу шочергового опрац1овання одно|о програ1ио1о деяко| к|ль_ #|по!ц6е <соп!о.!т>
кост| великих 1иасив|в (яктцо вс| п[асиви не мо'{сливо одно- #!пс|ц6е <$1с!!ь.ь>
часно ввести у пам'ять). 3адану ро3в'язу1оть так. €твортототь !п! 5цпа(!п| у[1о|);
масив' наприклад, *паз1 = пеш <тип>[<к!льк!сть>] ! ошрацьовутоть |п! мах(|п{
уг10])|
диттатш|нн| зм|нн!
*паэ1
, -(паз1+1), ... Бив|льнятоть па1ш'ять то1ё па!п()
ёе|е|е[] па51 . створ|о1оть й опрацьовук)ть еле1шенти другого ма-
сиву *па$2 - пеш <тип> [<к!льк!сть>] | т.д.
{

гап6огп!:е(); с!гоо();
3а0оча -1 (про Атс). }1ехай ун _ це число виклик!в' як!
.п! у[10];
сош| <<_,'@екунда \! (льк|сгь
виклик!в
надходять на Атс за А-ту секунду. |[рипустимФ, 1{Ф ун - в14- [ог (]п| 5 = 0, & о; к .:о;
= . к*]!||!!'!^!о
\п,,:
\|! ,

падкове число з! значенням в1д 0 до 30. !['творити тутасу!в у в {

десятьма елемента1ш|1 (н : 1, 2, ..., 10). Фбтислити суму викли.


у[}<] = гап0оп(30);
соц| << (}<+1) <<,,\{\{,,<<
к!в за пертп| 10 е роботи А1€. Бизначити ш|аксимальну суму }[}<] <<,,\п,,;
}
$ $цпа(у);
виклик!в' як! над|йтпли за деяку одну секунду. Бивести ро. =
сош[ << ,'\п $=" << $;
зультати обчислень. !п| пах;
мах(у);
3оуваэсеюня 3' ,{ля того, щоб отримати ц!ле випадкове число ! 'пах
соо!
=
,,\г:
<< пах ,,
<< |пах;
д!апааону в!д 0 до /}, мо)к|{а скористатись функц!ето гап0оп(п)' 9о1с|();
=

яка описана у модул! з{01!б.}:. 1||об п|д час виконання прогр&. )

ми коя{ен ра3 отримувати р!зн! значення' перед використа1{|{' |-


!п{ 5шпа(!п| у[10])
функц!{ гап6оп() треба записати функц!то гап0оп!ае().
{
#[пс!шсе <|оэ{геап.[:> /| 1роарама ёо за0ан| про А[€ |ог (|п| 0,.к
#1пс!ц6е <соп!о'[> 9 = = 0; & < 10; |<++)
5 += -(у + }<);
#!пс!цёе <$10|!ь.п> ге!шгп 5;
мо!6 па1п() )

74

//-. -" 3ш0ача' 3 (про 1шасиви з
р1зно:о к|льк1стдо ет:е:шепт|в). )['твори-
]п| мах(!п{ у[10])
фортшуло:о у- : 10сов тп * 2,
'|']| мдсив у' елеметтги якотю зада:т[
{
1-, 2, ..., 7, та мастлв
!п| [=0;
|ог (|п| пах *у;
& < 10; }<++)
''|
1,|||ис]|'тту' в
8 в елеме}пга:ши €п: п2 |'{, , - 1, 2, ..., 9.
=
!| (-(у + [) > пах) 6д1 =
-(у + [); цих масивах суми елемент1в 6|т:ьтп:тх, Ёэк 2. Бп-
н('(:'|'и на екран
ге|ц]п пах; ре3ультати о6числень.
) //
А||асствш р!зно7 0овжцнц
#.пс!цае <!оз!геап.|>
3а'0очо 2 (хцо створеппя новопо 1иасиву). }творити !у1аеу1в у' #!пс!шсе <соп!о.[т>
еле1ше1(п!1т якопо обт*1сл1о1оться 3а формулою !ь: 1п(Ё + 1) - 2, де #!пс|цсе <па!|.б>
&: |,2, ..., |о. ||обудуватт: масив' який складаеться 3 в!д'е}д- *ёо{1пе [|у 7
#6о'|пе ш9 9
них еде1|{еят!в 1шасиву у. вивести реаультати1 о6чу[слень. $!кщо ||оа! Ру(!п| гп);
1шукат1их величин не1шае' то вт4вести про це пов|домлення. |!оа| Р9(!п| п);
уо.с ш|уогу|у('|оа| ('')(!п{ п)'
!|' наступн!й програтш! зтут!нна 7} ви{}начае к!дьк!сть в!д'о1у!- .' 'а, ""
-' |п! п);
||]'
{|оа| 5шпа(||оа| -:,'|п| п); '|оа|
них елеш!епт|в у ново1шу :шасив|. то[6 гпа!п()
!! |гпворення масшву
{
||оа| $;
#|пс|ц6е <!о$!геагп.ь>
{!оа| *у - пеш |!оа|[}т!у];
#|пс!цсе <па!}:.|:>
соц| << ,,!!!асив |:\п.;
#ёе||пе ш 1о
то!0 гпа!п() 0{могу|у(Ру, у, [!у);
$ = $шпа(у, [т|у);
|[оа|
,у соц| << "6ума елемент!в б!льших'
= пеш {]оа1[|"|];
-9 ёе|е!е[] у;
н|ж 2, у маоив! | =
,' <<
$;
= пеш
']оа|
]п| &, п; '|оа|[ш]; '9 - пеш {!оа![|,|9];
соц| << \[\]!асив 1:\гт'; '!оа!
соц| << .\пйасив
(к = о' п = о; & < 10;
6:\п.;
!<++)
ш{уогу1у(г-9, 9, ш9); $
'ог = $шгпа(9, !т!9);
{ соц| << "€ума елемент!в 6!льйих,
'(у+к)=!о9$+1)-2; 7т],ж э' у масив' 6 =
,,
<< $;
6е|е|е[] 9;
соц| << к << '\|' .. '(у + [) << '\п";
!| (-(у + &) < 0) )
|!----------------
{-(ч + п) ='(у + &); п++;}
||оа| Ру(|п| п)
)
ое|э|е[] у; {

соц1 << \[!|асив 6:\п';


|!оа1!=10-соэ(п)+2;
!ог (& = 0; & < п; к++) соц| к << "\|' << -(у
ге|цгп {;
<< + &) << "\г:";
6е!о|е[] 9; )
! !________----__--
)
!!оа| Р9(|п! п)
3. Бкаа!вн|!к|[ ца фупкц![. Ёа практиц! виника1оть 3адач| {
[|оа|[=п*п/2;
одБакового опрят\[ован[{я !ласив1в в р|зното к!льк!стто елеш!ен_ ге|цгп !;
т!в. Розглянемо' як просто у мов! €** под!бн! задан! ро3в'я3у- )
!! --------------,-
1оться за допош[огото вказ!впик|в. с
у о ! ш 1уо гу!у('| о а' |;;'|;;;;]:й:;;;;;;"'-"-'
)[' паведен!й нихсче програпл! для виз1тачен|1я еле1иент|.в {

:шасив!в, тцо обнисл1о1оться 3а допомогото р!вних формул, ви- !ог(!п|!=0; !<п; !++)
кориета'{о тип даних _ вказ!вник на функц!:о: -(у+;;=11;;'
{

соц| << ! << ,\1- ,\п";


<тип результац> (*<назва') (.тип арцменц 1>, << ![!] <<
)
<тип арцменц 2>' ..'' <тип арцмент п>)
)

76
т7
||--------- *("(<назва вказ!вника>+<зм!щення по рядках>) +
|!оа[ $шпа([!оа| *2' !п! п)
<зм!щення по стовпцях>)
{
!!оа1 5;
!ог(!п|!=0; !<п; !++) Ёапрттклад' елеш{ент -(-(0оба+2)+15) розтш|п4еттий на перетин!
!| ('(а + > 2) 5 +='(а + !);
!! го рядка та 16-го стовпця.
ге|цгп 9; ')
, |{!д нао оголотпення двовишт|рн! масиви 1цо)кна частково
:пбо повн|стто |н|ц|ал!зувати.
4. Багатовим!рн1 1иасиви. ,{,кщо едемент 1у:асиву мае не
[1ршкла0 2. Фсолосимо | про|н|ц|ал|зуемо двовим|рний мла-
один' а дек1лька !ндекс|в, то так! масиви називатоться бааа7т'о-
,'г:пз ц|лих чисел
вш:п1р ншлсш. |[риклада:ии 6агатовим|рних 1иасив'.в 1шо}1суть бути
]п1 ьа!![2][з] = {4' 5' 3' 3' 5' 2|.
р!зно:иан!тн1 табличн| дан|: р|.нний табель гт1тя' стор!нка в
тпк|льному }курнал!' таблиця результат!в футбольних вмагань ! 'гакошту випадку елементам нада}оться 3начення так:
тощо. [{е двовим!рн! таблиц|, якитш у математиц| в|дпов|дао ба!![0][0] = {' ьа!|[0][1] = 5' ьа!![0][2] = з'
ьа!![1][0] = з' ьа![[1][11 = 5' ьа!|[1][2] = 2.
поняття тшатриц|.
8агальний вигляд конструкц|! опису багатовиш:!рного (.А/_ {вовим!рЁ у1асиву!' авто1\[атт!!]но 1н|фал!зу:отъся' по рядках"'
вим|рного) тиаоиву такий: ';тлб'го спочатку тшодифйуеться зовн|тпйй (праз1лший) |ндеко .
}1адавати значепня еле1шентам 1шасиву ш!о}*сна 1 так:
<тип> <!м'я масиву>[<р1>][<ра>] ... [.Рш']
!п| ьа!![2][з] = {{4' 5' з}' {з' 5' 2}};
,

де р1' Ра, ..., !ц 3а.{атФть ро3м1ри для ко'*с1{ого виш[1ру. ;:б<; так:
$|льк|сть |ндекс|в ви3начае вим|рн|сть масиву: двовим!рн! !п| ьа!![2][з] =
1цасиви 1\[а}оть два !ндекси' тривим|рн| _ три | т.д.
{
4, 5, 3,
]['с! багатовим!рн! ш[асиви моэ*сна ро3глядати й опращьовува- з'5'2
ти як одновим!рн!. Ёашриклад' триви1и|рний масив эа![5][20][30] );

ш[о}кна 1нтерпретувати як п'ять масив|в розтш!ром 20х30, а |н- 3о0ача 4 (про таблицто мно3[сецпя). бкласти програш[у для
тп| _ як 20 одновим|рних 1шасив|в' як| м!стять по 3Ф елемент|в. 1!!!!!осення в двовишх|рний масив р та6лиц| ш[но}кення двох чи-
('(,',! ! виведення масиву на екран.
Ёадал!, для простоти викдаду' розглядати}!е]шо двовитш|рн|
масиви. || проерама |1|фаеор
,,.пс!цёе <!оэ1геагп.[т>
Блештенти двовим|рного масиву ви3нача1отьея |мене:и :иа- ,,.пс!цае <соп!о.Б>
сиву та двома |ндексами: пертший |ндекс означа€ номер рядка'
|нтший * но1шер стовпця' т{а перетин| яких розм|щений едемент. мо!0 гпа!п()

Баприклад, оголоси1у|о масив 1п1 0оба[24][60]. Б|н м!стить {


с!гэсг();
еле1у|енти ц|лого типу ! складаоться з 24 рядк1в ! 60 стовпц|в. соп5| п = 9;
8лештент ооба[2з][59] розтш!щений на перетин! останнього 24-го
1п| р[п][п];
{ог(!п|!=0; !<п; !++)
рядка та останнього 60-го отовпця (нумерац1я !н0екс1в масшву {

завэус0ш почцнае7пъся з нуля). !ог(!п||=0; |<п; !++)


{ // йноження чцоел
.(вовишт|рн| маоиви комп|лятор роаглядае як посл!довн|сть р||]||]=(!+1)-(+1);
одновишл|рних. 1отиу до елемент|в двовим!рного ш:асиву, як ! соц| << р[!][] << "\1";

для одновиш:!рних, мо}кна тако)к 3вертатиоь чере3 вкаа!вники. )


соц| << ''\г:"; // Аля вцво0у масцву у вцеля0! гпаблшц!
)[' такотшу вишадку це вказ!вншк н(' вка3'вншк о0но;п1рноео )
]посш.ву: 9е1с}();
)

79
3о0очо 5 (про ко!тд|!тероьку фабрику). [{ондитерсъка фаб_
3оувоэсення6. Ёехай 3адана деяк8 матри\я @а1, |'
рика для виготовлепня п'яти сорт!в цукерок використову€ }: 1,2, ...'
п. ?од| вира.зи 1: !, <7 та ! >] вивнанатоть в!дпов|дно
п'ять вид|в оировини. 1[ехай норми 3атрат а,' ко'|{нопо виду си- еле_
'
менти головно| д!агонал|, елементи над | п|д головното
ровини .| на вироб!{ицтво 1 т цукерок сорту ] задан! фор:иулото налл1о ц|о! матриц1. д|аго-
с,': |в!п{ + ! о, !:7,2, .-,5). Бивести ва екра}т таблицто зат- 3а0ачо 6 (про доб5гток 1шатриць). 3адано 1!1атриц|о А
рат сировини (тобто 1шасив с). Биз:татити' для я|сого сорту цу- 1:слм 2{3 та матриц:о 6 розтш!роти 3х4. 06чиелитп !х роз:ш|-
керок (!п!п) потр1бно найтдеп1це сировини (п!п) ц)етъого виду. добуток.
3 курсу математики в,.домо' що матриця с: А3 мхатптухе
/! [7роерама Фа6ршка
#!пс!цёе <!оэ|гвап.[> 1гсл;;м!р 2|4 ! |! елементи визнача}отьоя за
формуло:о
- _г
#|пс!ц6е <соп!о.}:> з
#|пс!цёо <па|[.[> с,1 =
2-@оьён}'
Ё=7
то|6 й|п(||оа: у[5][5]);
.п ро ера м а до6угпок м агп р а ць
//
то|6 па!п()
#|пс|шёе <'о$1геап.п>
{
#1пс!ш6е <соп!о.}:>
с|гэсг();
#се'!пе ш 2
уу.га{у[5][5];
соц| << '\|\|\| 8ид сировини\г:.;
'|оа1
#ёе[!пе й 3
#6е!|пе ( 4
соц! << \1 1\| 2\| 3\! 4\| 5\п.;
/! |гпворшмо паблслщо 3а!пра!п
мо|0 па!п()
(!п! ! ='0; ! < 5; !++)
'о. {
{
с!гэсг();
соц| << ! + 1 << ''сорт,,; [п| !, к;
!ог(!п|!=0; ]<5;,!++) ]п| А[|,{][й];
( ',
|п| в[й][(!;
]( {уу:тац+ 2 - !абв(э!п([ + 1))
!) + !) = + | + 1; соц[ << ''!вед!ть матрицю А\п,;
'
|! 8цв!ё елементп1в 1ео ряёка |ог (! = 0; ! <
соц| << -('(му!га{у ]:,|; !++)
+ !) +,!) << \|.; |ог (| = 0; | < й;
] '!++)
соц| << "\п'; с|п >> А[|][];
!! 11ерех|ё на новий ряёок соц| << ''9вед!ть матрицю 8\п,';
) |ог (! = 0; ! < ]\:!; !++)
й!п(!у|га!у); !! 9с;лсток прцеёура /+4|п (, = 0;! < (;!++)
9о|с}:(); 'ог с1п >> 8[!][];
|п| Ф[!т,][к];
то!0 й!п(||оа| т[5][5])
со|'| << ',[!|атриця €: \п,,;
[ог (! = 0; ! < }.!; !++)
{ |' 1ропустпомо' олр найменоле сцровцнц !пре.пьоео {
виёу погпр|бно ёля щгкерк першлоао сорйу'|
|п| !п!п = 1; 0 = 0; '! < (; ]++)
п!п ='('у);
'ог (
о[|]{'] = 0;
'|оа!(!п| != 1;!< 5;
|ог |++)
то1.!к = 0].[:.м' к++)€(!](]] += А[!][&] - в|к]|]];
{
!| переаляёасмо
соц| << €[!][]] <. ,,\:,,;
елемен'пц 3-ео ря0ка
|! (-('(м + !) + 3) < )
п!п) сош[ << ,,\п,,;
{
)
п!п =.(.(м + !) + 3);
9е{сб();
!п!п - !;
)
)
)
.. '\т Ёайменше {1. Рпорядкувацпя 1шасив!в. 8адан| впорядкуванця
9',! сировини третього виду и.;
,,Брт'; м;цс:ив| }[а}оть ва'1сливе практичне даних у
соц1 << "потр!бно ,,
для цукерок << !п!п .. 31тачення. ||рикладами та_
) 1|х да}1их мо}{{уть 61ти телефонн!
'1 дов!дники (дан|, у!'р".'''-
80 (;!+
!!
81
каталоги' ро8клади зой(а);
ван! 3а т1р!3ви1цеп[ адрес&т!в)' 6!бл!отенн! соц| << "}порядкований масив: \г:";
дан! з11ач1{о дегт опращьо-
руху потяг!в тош1о' |['порядкован!
!ог (! = 0; 1 < 6; !++)
1швид[пе 1шо}*сна в1д1шука- соц| << *(а + !) << "\г:";
вувати' оск!льки серед йих набагато 9е{сь();
ти шотр!бну !нформац|то' за 3ростат{вятш (в!д )

[ан| у масив! 1ло*с11а впорядковувати(в!д б!дь:пого до 1шен- уо]{ $оп(!п| п[6])


1центпого до б|льптого) або 3а спада1{т!ям {

*""'}*,'* маст.тв А,
!п| |епр' !' !;

7 (т:роупо|}яшс}8апшя масиву). Розгляттемо !ог (! = 9; | < 5; |++)

б,-2' 3' 6' !' 4' 9порядкуваттт цей маеив !ог(=9;,! <6_|-1;!++)
яктдй :ш|стргтъ .ш ;; |{(-(п+,)>-(п+!+1))
3а 3рос!пан1!ям 3Ё.аче[ть' {
1епр=*(п+!+1);
€6агатор!знихспооо6!вутторядкуванняданихвод1тови. "(п+!+1)=-(п+!);
3 11их' -(п+|)={епр;
м|рному масив!. Ровглянемо дек!лька пертп! елемепти
Р1еупо0 обм'|ну (''6ультсш'',)' 9итаемо два ]

со6ото' '[ктцо пергпий еле-


масиву (5 та 2) ; йр!"й"мо !х м|э*с
)

!х м|сцятши (стане 2 1 5\' 3оувоэюення 7. Фск!льки навва масиву _ це вказ!вник на пер_


:иевт б|льтг и{т ваАР9гий, то м!няемо тций елемент цього масиву' а функц!! т{ористувач{{ мо)куть
| трет|й елемент (тепер це еде1ше11ти
,{ал! роагл,яд8емо дйу""* треба' то м!вяетшо !х повертати 3вачення у прогр&му не т!льки з& допо&{ого|о комац_
5 | 3) ! пор!ввтое;-;_*:* йо,:о' 5[к:цо трет!й ! иетвертий ди ге[цгп, а й терез вкав!впики, то у програм! сортування маси-
м!сцятши (стане 3_; ;'' |[от!м т:ор!вн:оемо ву м!няомо м1сцями значення елемент!в м&сиву за допо1!|ого|о
Фтримаемо масив 2' 3' 5' 1' 4' 6'
@

еде1ше}!ти (5 | 6) ! так дал1' функц|! эоЁ()' використовук)чи вкав|вн:дки.


(це елеме}гт 6) опи:тився
1аким чином максима''1ьний елемент |[|сля цього Розглянемо !н:п! методи упорядкування масив!в.
в самому к!нц! масиву' тобто там' де потр!бт+о' ]|{етпо0 м,1ш|;шопъншх елел1е1'уп]в. Розтляда1оть увесь 1ша_
6ез останнього елеш!е1{та'
3}тову розглядаемо 1у1аоив' але в}*се с:п-:в | ви3нача|оть }то:у1ер м!н!ма.:тьттого елеме1{та. ?од| пертпиэ!
ш!асиву (2, 3,5, 1, 4). Ёа
3астосовуемо 1![етод о6м!ну до т{о-вого .!'||()ме11т тш!нятотьтш!сцями з тш!н!тшальним.,{ал! розглядак)ть
м!сц! опи1.иться 5' Аал! вт10в ро3глядатимеш!о
1ша-
;;;;""';у метод обм!ну :п<лвий м&еив' у}ке бев пертшого елемен,г&. )[' ньо:иу знов в1дш:у_
оив без оста1{1{ього еле1ше11т& ! застосовувати1!1емо треба !(у1оть каймен]ший та ро6лять 3ам!ну ! т. д. 9порядкован{
то метоА--обм!ну
! т. д. ,1[ктцо 1шасив мае /' еле1![е11т|в' ||.,!()менти поступово перевоситимуться т1а початок ш[аоиву.
мев:по! к!лькост1
застосуват у| п - 1 раз|в до ко)т{ного разу ![с:й метод - один з найпрост!глих, але ттайтривал|тший.
елемент!в. 1.порядковав! едементи
будуть нагро!у1ад){{уватись Р[еупо8 вс!пс'внш. |[оступово пор!втттоемо перптий еле1шент
!з к!нця масиву. со| :;с|ма |н:пими, доки не знайдемо елемент :т:ентпий в!д нього.

6кладемо програму !!с:р:ша позиц!я в масив1 позиц|я вставки. 3найдений


елеменп|в мстплтлий елемент ! його !ттдекси 3апам'ятову1оть. ]/с| елешле:тти
!! 8поряёцвання масцву мепо0ом о6м!ну
*|пс]шёо <!о$|геап'п> м!!()иву' почи}{ак)чи в1д позиц!! вставки до елемента' що
#!пс|ц6е <соп!о'[т>
!!(,])едуе знайдено:шу, зм!щутоть праворуч. 3начення 3найде}{о-
уо10 зо((]п! п[6]); !!) ()ле1шента записутоть у поаиц|:о вотавки ! пор!внтототь його з
мо16 па!п() |1 ,|()ментам[, 14Ф 8а.]]и1шилиоя. якщо буде виявлено ще 1шен-
:г::г|| е.ттемент' то повтор]о}оть процедуру вставки, | так доти'
{
с!гзсг();
|п| !; ,(()!(и не д|йдуть до к!нця 1\[асиву _ лиш1е п!сля цього ::ершлий
!п1 а[6];
соц[.. "8вед!ть 6 чисел: \п'; !',!()мент 6уд' на м!сц!. Ровгляда:оть ш]&сив без пер1цо1'о
|ог(! =0!<6; !++) |',|('мента ! застосову]оть до г1ього описаний ту[етод.
-(а +
с!п >> !);

83
в2
о/о,
б) не дозволено застооовувати ,|содних функц|й та операц!то
описана ста1{дартна фу:ткц|я
3оувоэюеюня8. ][' модул| в!ё1!Б'}т явного чи неявного приведення типу;
елементи масиву' 1] сиг-
чвог{(), яка да€ змогуо упорядковувати в) дозволено застосовувати явне чи 1!еявне приведення типу (!п|).
натура така: 12. Розв'яэк|ть задану }',1! 10 з розд|лу ''3адат|" свого вар|анта' вико-
1;истовутони: а) |мена масив!в; б) вказ|вники; в) функц|| користувача;
:') динам!нний розпод!л пам'ят!. Результати виконання програ}|и ви-
:;сд1ть на екран ! у файл.
_ вказ1вник на пертший едеме}{т масиву' функц|я
*<елемент> 13. Розв'яхс!ть задаву }ч{! 11 з розд|лу ''3адач!'' ва|пого вар|анта, ви-
де або функт{|я'
пор!вняння _ стандарт1{а фун!ц!я пор|вняння !(ористову|очи: а) |тиетта ттасив!в; б) вказ!вники; в) функц!! користувана;
створена кориетувачем' п,) динап:|тний розпод!л пам,ят|.

14; Розв'яак1ть задану }[э 12 вап:ого вар|анта з розд|лу ''3адан1''.


8прави
13 ватдого вар!анта з розд!лу "3адат|"
15. Розв'яэк|ть задату }'.!!
1.1!1одиф!куйте програму про А16 ! визнанте' п|д тас яко| секунди :п) використову}очи вказ!вники; б) за допомогото функц|й користувана;

над!йтпла максимальна к!льк!сть


виклик!в' Розв'яэк!ть :1г{1:],:""'""'- гг) без використання функц!й користувача.
риотан11я вказ|вник!в.
Результати виконання програми вапитп|ть у файл 16. Розв'яэк!ть задану }.'1} 14 ва:пого вар!анта в розд|лу ''8адат!",
а|з.{х{. !|[.|1{ористовутоии: а) |тшена :иаоив!в; б) вказ!вники; в) функц|1 користува-
1{ового масиву: утвор!ть ма-
2. 1!1одиф|куйте програму про створення ,в:т; г) динам!нний розпод!л пам'ят!. Результати виконання програми
елемент!в масиву у' Роз_
сив з м!н!маль!1ого ! максимального значень :;г:вед!ть на екран ! у файл.
в'яэк|ть задачу 6ез використання вказ|вттик!в' 17. Розв'яак|ть задану ],,1ё 15 з ровд|лу "3адат|'' ва1пого вар|анта.
|{ового масиву' використо_
3.1!1одиф!куйте програму про створе1{ня
вук)чи функц|! користувача вказ1вт{ики'
4. 1у1одиф!куйте протраму !-'!|фагор' використовуточи елемент|в:
к!льк!стто
$ 13. Ряд1си
б. Розв'яэ*с|ть задачу про масиви з р1зно1о
1. Рядки си1ивол1в 1 д!| з ни1ии. Ёа
в|дти|ну в|д !нтших :иов
а) без використа!]ня вказ!вник!в;
б) 6ез використання функц1й користувача' !!|)огра1у[ування у €** не виз}1ачено спец|аль11ого типу для
6. Розв'яэ*с!ть задачу про добуток матриць: !}!!рац1овання рядк|в. Рядок си1ивол!в розглядаеться як масив
а) з використан}]ям вказ!вник!в; .|',|()мент|в типу спаг' який зак!нчу€тьоя символом '\0' (нуль-
б) за допомогото функц!й користувача;
пам'ят!'
(!]|мвол) що е о311ако1о к!нця рядка. 1ак! рядки на3ива1оть
в) використ''у'''" динам!нний розпод!л
,, за формуло|о 4'' _ ;|$(||-ря0кал'ш. стал! типу рядок запису1оть у лапках' на-
7. 3адано *'.'' еде1![е}{ти якого о6чисд1о1оться
...,б.1['твор|ть | вивед!ть масив у' як'тй
складаеться !||}иклад' ''.}1ьв|вська пол1техн!ка"' ''студет1тц", рядок'
|* !2, де'1;, ;:1,2,
3 тих елемент!в масиву @' значення яких :г1с; шт|стить одитт символ-пропуск. !,/ сталих рядках нуль-си1ш_
6|льтпе'
"'*,'9_'-9'числ!ть
к!льк|сть елеметтт!в *,Ё"у у' 1!1асив о вивесту| у вигляд| матриц| 5х6' }|(}.,! /1опису€ться авто1иатично.
про це пов!домленття'
,{,кщо тлуканих дат{их вемае' то вивед!ть на6ор|в 9}13€'[о 3оувоэюення ]. Б|ль:пост| котшп!лятор!в мови 6** автоп:атичт]о
8. 3иконайте програму 6орцвання масиву для р!зних числа 0. додае нуль-символ у к|нець рядка' тому 3азначати його не
,'р'"р,*у т]к, ш{об мо}*сна було в|дсортувати
1!1одиф!куйт" о6ов'язково.
"".*;:т*;]1]|?"","*у сортування методом м!н|мальних елемент!в
1 !!1асиви символ|в оголо1шу}оть так:
методом вставки. |{оясн!ть тому' сьаг <назва рядка>[,4овжина рядка];
10. ,[[к! з наведених ..'- ни)*сче
*
'
*_;';ш запис!в непоавильн!?
о)
-(&ш!|]1
= ц1ц
а) (ш + !) = &(ш|!]) :} = ч|;}
-.'. |[д нас оголо1пення символьного масиву необх!дно
б)(ш+|)=-(ш[!]) !:-]'-!:=*(ч[р ж)&(-(ц+!))=ш+! ! /{о
в) (ц + !) = ц[!]
-с, * !| -(ш[!])
Б! = .!п| ш[10]'
з) &(ц[0]) = ц с|;гт:с':':тяно[ дов'кини рядка додати одиницк) для ну.т!ьового
Бваэкати, ш{о ш-масив' опиоаний як !;!!м|}()лу (але не у вс|х кош|п!ляторах). якщо масив симво][!в
11. Фбчисд!т' парних (неларних) едемент!в одвом1 !!!'!!'|!()|!{у1оть й |н|ц|ал!зутоть
""*у_|*'о"ток) одночасно' то дов}1сину 1ио}к}1а не
ного масиву: !1!}!1!!!!|]г!ти' комп|лятор визначить тт. Фск|льки рядки е маси_
а) мохсна застосовувати ли1пе операц!то %;

85
84
вами симв0л|в' то на3ва рядка е вка3|в}!иком на його пертший Ёивести 3начен1{я рядка на екра1] ш|ох{на за допош!ого1о ко_
елеме11т (на пер:ший оимвол). ма1{ди
[|рс*юла0 ]. Розглянемо оголо1пення та |н|ц!ал1зац!то ряд-
соц1 << <назва рядка>;
к!в
соп$! сьаг 1ех1'!11 = "ми вивчаомо програмування''; |1оси:швольно вводити чи виводити елементи рядка мо'кна
с[аг э!омо[] = "шп!уег5!{у";
опаг 1!' !гаа.а2|40];
:}!| допомого1о коту[анд циклу [ог або ш}:|]е. }{априклад'
[1
'га2а'| (|п1 п = 0; п < 11; п++) с[п >> -(1гааа1 + п);
1ут оголо:шено оталу , яка ту|ае з}1ачення ''}1и вивчае1ио
1ех11 'ог
[1рогратшування'', си:швольн! масиви: э!омо (6ез за3начен!{я роа- Б к|вц| рядка необх!дно поставити нуль-с}1мвол, тобто
*\1тааа1
тц|р},), !гааа1 (мо:ке м|стити до 10 символ|в) та1та7а2 (до 39 сиш:- +п+1)='\@';
во.т:т|в). 9 6|6д|отец! соп!о.}: визначен| стандартн! функц![ введен-
би:швольний масив з!омо тце мо)1сна оголосити так: !|'!-виведення рядк|в. Ёаприклад, 9е!с(), 9е|с[а() 3читу1оть по
сБаг э!омо[1 1] = "(!п!уегэ|1у"; ()/{цому си1утволу рядка' введет{ого з клав!атури, рш|с() та
а6о так 1;п;:с[аг() виводять окрети| си1у[воли рядка то1цо. } б|бл!отец!
:;!,с1|о.}ц описан! функц![ для введення 9е!з() та виведення рш[в()
с}:аг э!омо[] = [ш'' 'п'' '1', 'у', 'о', 'г','э','!','|'' 'у'' '\0'};
у()]'ого рядка. ,{еталън|тше по ц! та !н:ш1 функц!| написано у
1ут ттотр!бно вручну 3аписати нуль_символ, |нак:ше котип!- 7цлв|дниках.
лятор трактувати:ие зм!нну э!ото 11е як рядок' а як 1иасив.
Рядки 1ио}хна опрацьовувати посимволь}1о за допо1шого|о 2. Фупкц|! для опрацк)ваввя рядк1в. ,(ля опрац1овання
вказ!вник|в або на3ви масиву' наприклад' так: м::<:ив!в символ|в у мов! 6*+ е стандартн! функц!!, як| опи_
с';пг:! у тшодул! в1г!п9.}:. Розгляне:ио деяк! 3 них.
!ог (!п| п = 0; п < 11;п++) -(1гааа1+п) =
-(э!ото+п);
соц| << {гааа1; в|г!еп(<рядоо) _ визнанае фактинну к!льк!сть символ!в у
3тш!нн!й {гааа'| надаоться 311ачення ''1)п|уегв!Ёу'' ! ця фрава РяАк}' 8астоеовуеться у вира3ах;
виводиться на екра1{. ]нактпе це 1шо'1{на зробити так: в|гса!(г1 , г2) _ команда з'еднання рядк{в 11 е в один ря-
'
|ог(!п|п=0; п<11;п++) док' резулътат присвотое а:и!нн!й г1 ;
{гааа1[п] = э|оуо[п]; оош1 << !гааа]; в|гпса|(г1 , т2, п) - до зтш!нно! г1 додае пер|ших п сиш:вод|в
1|'вести весь масив символ|в мо)кна 3а допомого!о команди рядка Р, ко:шанда;
в|гсру(г1, г2) _ коп!1о€ сипдволи 3 рядка Р в рядок г1 ,
с]п >> <назва масиву>;
команда;
$[ктцо рядок даних м!стить символ пропуску' то ко1у|анда в!гпсру(г1 , Р, п) _ коп!тое пертпих п символ!в рядка г2 в
с!п >> 3читае дан| литпе до пер1пого пропуску. 14о6 8читати рядок г1 ' ко1!1анда;
весь рядок до символу вводу' необх!дно 3астооувати ко1шанду в|гсБг(г1 , <символ>) _ ви3начае пер1ше вход'1сення деякого
символу у рядок г1 так: повертае рядок' який почи-
с!п.9е1(<назва рядка>, <максимальна довжина рядка>); наеться в!д пер:пого вход)|се|{ня 3аданого си1шволу до
тс!нця рядка г1, 3астосовуеться у вира3ах;
Ёаприклад, с|п.9е1({га:а2, 40). 3нитати символ вводу ]шохсн&
так: с|п.9е|(). 3нитати рядок раао1и !з си:иволом вводу мохсна с:|ггс}тг(г1 , <символ>) - визнача€' останн€ вход'1сення зада_
одни1у1 !з способ!.в: ного си1\лволу у рядок' 8астосовуеться у вира8ах;
в!гврп(г1 , Р) _ визнача€ нош[ер пер1шого символу' який
1 ) с!п.9е|({га:а2' 4о):
входить у рядок г1, але не входить у рядок г2, застосо_
о!п.9е|()
2) с!п.9е1({га:а2, 40).9еф
3) с!п'9е1!!пе(1сааа2' 40|.

86 87
е) _ ви3начае в рядку г1 п|дрядок' що почит1а€ть-
5|г5!г(г1 , !|ръсюла0 3. Роагляне1ио ре3ультати д|! цих функц|й для
ся з пертпого вход}кення рядка т2 у рядок г1 , засто- ()!'()ло1шених ниэкче з:ш|нних.
совуеться у вира3ах; !п| п;
5|пок(г1 , т2) - визтаачас частину рядка г1 , яка зак|ннуеться ёоцб!е
сьаг
{;

11[5]'
-р;
перед пер1ши1и однакови1и си1у|воло1ш рядк|в 11 та 12;
э1гпэе|(г1, <символ>, п) _ вставляе п раз|в заданий сиутвол
!теред рядко1и г1 , застосову€ться у виразах;
э|гшрг(г'! ) - перетвортое ус| мал| л!тери рядка у велик|;
э|г!тшг(г1 ) _ перетвортое ус| велик1 л|тери рядка у штал|; "_з.1415"
з|ггет(г1) - записуо рядок у зворотному порядку.
Рядки символ|в ш|о}кна пор|внтовати м].эк собото. ,(ва ряд-
[!ршкла0 2. Розглянемо результати застосування функщ!й псп: пор|внтототь зл|ва направо посимвольно' причо1цу 'А' < 'в',
[!' < 'с' тощо. "Б!льтшим увапсаеться символ' який розти|ще_
до таких вм|нних:
;;::й в алфав|т| даль!це (в|н тшае 6;'льт:;ий номер у таблиц| код1в
сьаг !*т!м[] = "д"";.6ька пол!техн!ка",
;\|]()11, див. дал|). [ля пор|вняння рядк|в у штодул| з{г|п9.}т
|1

!!п "цу "'


1зо1 =
г1[30] ='"; сп:п71ан| так! функц!!:
с}:аг "р; !п| п;
о э|гсгпр(г1 , г2) - пор|вн1ое рядки сиштвол|в т1 | г2 3 ураху-
3астосування функп!й Результат ванняш| рег|стра ддя датит{ського алфав!ту;
п = э1г!еп(!-у!у) п=21 о э!г!спр(г1 е) - пор|вн:ое рядки г1 | т2, не розр|зня}очи
э{гса1([.]п, !-у!у) [.!п = "Р!} !!ьв!вська пол!техн!ка'' '
э1гпоа1([_.!п. !-у!у. 1 0) г1 = "Р|! ]1ьв!вська''
великих | малих л|тер латинського алфав|ту.
в{гсру(г'| . !-у!у) г1 = ''[!ьв!вська пол1техн.ка" Результатом викот{ання цих функц|й е в|д'е:шне число
('!!(!т]о рядок г1 птенлший в|д рядка г2), 0 (яктцо
э1гпсоу(г'1 . |у!у. 10) г1 = ''[!ьв1вська" рядки однаков1)
р = э1гс[г(!-у!у, '[1') р = "пол!техн!ка" .!{)() /{одатне число (рядок г'! б|льтший за
рядок г2).
р = в1ггс|г(!-у!у''|') р = ''!ка'' [ршюла0 4. Розглянемо результат д|! функц|й
п = э1гэрп([-у1у. "]|ьв|в'') [=5
о = 51гз{г(!-у!у. "тех") р = "техн!ка"
п = ч1Ёо[/! у!у "кс"\ о = "[1ьв!в"
о = з1гпэе1(!_у!у. 'х'. 10) о =''ххххххххххпол!техн! ка"
р = 5![цр[(''| !-оуе}оц'') р = "! !оуе уоц"
р = э|г!шг("! !-оуе }оц'') р = "! !-Ф!Ё [Ф!..]''
п = ч!ггеу1''теун|кя'') о = ''ак!нхет"
3ауваэюення 2. Функц|! перетворення л!тер э|г!шг 1 з|гшрг д|тоть {|о0ача 1 (про дов}[сину фрази). ]['вести рядок сиутвол{в тд
ли1пе для латинського алфав1ту. [{р!м того, у деяких верс|ях !!!!:!!1|1чити його довэкину.
мови €** ц1 функц!| мо)*суть записуватись 1нактпе: {}робипло це двома способами:
-в!г1тмг,
_вЁгцрг.
| ) за допомого}о вказ|вника типу с}таг | вид!лення ди!|{!-
]{' б!бл|отец| в{01!б.}: о стандартн! функц!| перетворення *::,пглс;| пам'ят!:
тип!в даних. 3окрема, функц|я а!о!(г1 ) перетвор1о€ рядок сим- #!пс!ц6е <!оэ1геап.б> |/ !овжшна ряёка сцмвол!в
вол!в г1 у дане ц|лого типу !п|' а функц!я !1оа(<нислове дане>, г1 мо!6 па!п()
<система числення>) * дане ц|лого типу !п| у рядок г1 . ,(ля пере-
,

{
сбаг *э; |/ Феолосоуемо вказ!внцк на ря0ок
творення даних типу ёошб|е у рядок си1\11вол!в ви3начена функ- $-= пеш сбаг[50]; |/ 8цё|ляемо пам'я/пь 0ля вве0ення
ря0ка
лц1я 9см1(<нислове дане>, <к!льк!сть знак!в у числ|>, г'|), а о6ернену д|то с!п >> э;
ви1{онус функц!я э1г1о6. !п{с=0;

8в в9
:ш}:!]е (-э++) 0++;
сош| << ",{овжина рядка г1 - " << к << "\г:';
соц| << 0;
(!п| != 0; ! < }<; !++) // 1ерееляёасмо вс| сцмволи ряёка
'ог || (г1|ц ==' ) /| |1!укаемо пропуск
)

2) визнанив1пи р13ницк) адрес пер111ого й оотаннього


{
си1ш- п++; !| 8цзначасмо номерц першоео

вол|в:
!! (п == 1) п1 = !; // па ёруеоео
!{ (п == 2\ п2 = 1', !/ пропуск!в
#!пс]шс|е <!о$1[еап.п> !/ дов)кцна ряока сцмвол|в )
то1{ гпа!п() || 8цвоёцмо слово м|ж ёвома пропускамц
{ог (! = п: + 1; |< п2 - 1; !++) соц[ << г1[!];
'р;
{
ёБаг -э, !/ Феолош;уомо вка3,внцкц 9е1сь();
5 = по{!' сБат[50]; !! 8цёйяомо пам'ягпь0ля ввеёення ряёка ]
с!п >> $;
!! 8каз!вншк р вка3уе на персло;й сомвол ряёка 3о0оча 3 (про столиц1). Бвед|ть п'ять назв столиць евро_
р=5;
!/ 8каз]внцк э !пепер вка3ува!пцме г:с.{.!ських кра[н. )['порядкуйте 1х 3а алфав|тош:. Бивед!ть упо-
ш[т|!е (-э++); !! на осгпанн|й сомвол ря0ка
!}'!/(кований масив на екратт.
!п| 0;
!! 8цзначаемо ёов>кцну ряёка як р|зноцю а0рес // с[полцц| кра[н
*|по|ц6е <!оз1гвагп.|>
6 = 9 - р + 1;
#]пс!ш6е <${г.п9.ь>
соц| << 6;
#1пс|ц6е <соп!о.[:>
)
#6е'|пе ш 5
3о0очш 2 (про по|шук одова у фраз1). Ёехай 3адано рядок мо10 па!п()
"6коро будутъ ка1{!кули''. Бизначити дов}1сину рядка. Бивести ( /! Фаолосшусмо А] вказ|внцк1в на ряёкш
с[аг р[[!][16]; /! 0овжцною 0о 15 сцмвол!в
}{а екра[1 друге слово цього рядка. с}:аг гп[16];
(|п[ ! = 0; ! < [ч,!; !++)
#|пс!шёе <!оэ{геап.}:> !! 1оолук 0руеоео спова за 0опомоеою функфй -(р
'оу с|п >> +!); // Бвоёимо ряёок |
#!пс]цёе <51г!п9.п> _ '|; !++)
!ог (! = 0; ! < }..!
уо|ё гпа!п()
{
{
(|п|, = 0; ! < }| - !;,!++)
спаг г1п = "€коро будгь кан!щли";
с]:аг
*р; 'ог {

<< г1 <<'\п';
!! (э!гспр(р[]' р[+1]) > 0) !! 1ор!внюемо ря0ко
соц!
рядка г1 = " << э[г!еп(г1) <<'ъ'' у раз| погпребц, м]няемо
// |'
соц! << ".[овжина {

!! 8сгпановлюсмо вказ!внцк р на перо;лшй пропуск в!гсру(п' р[!]); !/ !\ м|ссцямц

р = э{гс!':(г1, ' '); !! у ряёц г1 $!гсру(рш]' рш+1]);


/! 3 ряёка р вцлучасмо вс| сцмволц п|сля йоео этсру(р[+1], п);
9!!!ок(р' ''); !! перш;оео пропусц )
соц! << р; )
!
)
|ог (! = 0; | < \; !++) соц| << р[!] << '\п'';
ще оди}1 спос1б розв'я3ан}{я 3ад&ч! 2, в якошгу ря_
||одаш:о )
док розглядаеться як 1шасив си1швол!в ! функц!! для роботи 3
3. }(риптограф1чп| вадап!. !екстов! фувкц!! 8&стоеову1оть-
рядками не викориетову1оться.
|| Ряаок як масцв сцмвол,в
!!}! для розв'яаування 38дач код}гватт1{я даних 3 меток) збере-
#.пс|цое <|оэ!геап.[т>
#!пс!ц6о <соп!о.п> |!((!|]ня еекрет}тост! !нфор:иац!1. 1сттуе 11аука _ ,сршп]поэроф1я,
#!пс!ц6е <$1г!п9.п> ,|!! |]ивчак)ться ! створк)1оться р|зн! а.!1горитми кодування |н_
то|ё па!п()
{
;|псл1;мац!!. Фсновн! задан! криптограф!! це тпифрування текс- -
с!гзсг(); |'у, 11ередача його на в!дставь | детпифр}гвання. 1{е використо-
с}:аг г1[] = "скоро 6удгь кан!цли'; |!у(]!'ься у банк1вських справ&)(, 9 воегтших ц!лях, у д1яльност!
-р;
сьаг
!п[ п1. п2, к' п; |)!]!!]их ф1рш:, п|д тао пересилання !нфорш[ац|! в локальних чи
п=0; ;'::сгбальних ш{ере)1сах тощо.
!< = з!г!еп(г1 );

90 91
.(ревнеримський 1типератор {езар кодував сво! секретн1
вказ1вки так: кох(на л|тера тексту за:ш!н:оваласъ на Бправи
четверту
п|сля не[ л|теру з алфав!ту. ?акий шифр назив&€ться 1. 6клад1ть програ1!|у розв'язування оадан! 1, використав|ци етатич_
в крип-
тограф|| :пифром з1 сталим зм|щенням (тут 4), або эсоцй масутв та функц!то зЁ!еп.
тшифро:ш в
одни1!| кл}оче]и. 2. ]['вед!ть фразу з к!лькох сл|в | вивед1ть !| так, щоб ус! слова були
:пс>браэ*сен! в вворотному порядку' збер!гтпи порядок сл!в, двома способа_
3о0очо 4 (про |пифр |!езаря). €класти програму
ддя ко- ми: а) з використав1|ям функц!й з б!бл!отеки в0г|п9.}:; б) без використан-
дування деякого тексту до 5Ф символ|в тпифро:ш п::: функц!й з б!бл|отеки в{г|п9.}:. Ёаприклад, фразу "3аняття з програ-
{езаря, затш!-
нив1ши ко'*сну л|теру на Р-ту (наприклад' четверту)
п|сля не[ муван[!я" треба вивести так: "яття!]аз з яннавумаргорп'' (модиф!куйте
л|теру з алфав|ту. |]й алфаз|тотл цього програ!у1у Рядок як масив символ!в).
розулш|ти таблицто А$с]!. д.,!я
// 1роерама !{о0 !-|езаря "'*" 3. Розв'яотс|ть зад&чу про столиц! кра!н бев 3астосування функц|й з
#!пс]шёе <!ов1геап.[> модуля в{г!п9.}т.
#!пс]ц6е <51г|п9.ь> 4. }1одиф|куйте програму (од !-{езаря, тцо6 моэ*сна було затпифрувати
мо10 па!п() '|'(||{ст' уведений у дек!лька рядк!в.
{
5. 6клад!ть програму розтшифровуван}тя тексту' 3акодованого кодом
с}:аг а[50];
соц[ << ''8вед!ть текст:\п.; !(<:заря.
с!п.9е1(а, 50); 6. €клад!ть процраму кодування тексту так: пертпий символ зам!нити
|ог (1п| &, п = 0; п < э1г!еп(а); п++) зпх А-{а, пдо розм{щений в алфав|т! п!сля нього (тобто зам!нити з кроком
( :;м|щення &), коэкний ваступний символ замйтовати 3 кроком 3ц!тт\ення на
ц = -(а+п) + 4; -(а + п) |; ,} одиниць б!ль:пим, н|эк попередно зм!щення. Алфав!т (таблицто код!в ни
=
!'1 фрагмент) ро3глядати цикл|чно' Ёаг:риклад, о6мехситиося алфав|топт 0, 1,
)
соц| << а;
) ,|, 3, 4, б, 6,7,8, 9. .{ля А:2, гп:1 чиседьн!сть в!йськового гарн|зону
12290 вояк!в 6уде за:пифрована числом 85646. 1ахий лпифр назива€ться
3о0ачо 5 (про зам1ну сл|в). 6класти програ1\{у'
яка скр|зь !!!шфром з] зло1ннцм 3м1щенням (а6о плшфром з 0вомо клю+алсш)'
у 3аданому текст|. гпу{ех1 зам|}тить деяке слово |.нтпиш: сдово1и 7. 3апитц!ть програму 3ам!на сл!в без використання функц!й з б!бл!о-
тако| }1{ дов}1{ини (ттог01 на ттогё2). 'гс:лси вЁг!п9.}:.
#!пс|ц0о <!оэ!геагп.|> // 1роерама 3ам]на сл]в 8. 3акодуйте фразу так: вил}гч!ть з не! пропуски та копли, |нпт|
#!пс|ц0о <$!г!п9.п> |:!{мволи продублтойте. 8ивести результат.
мо!6 па!п() 9. 1!1асив з! 100 рядк1в ! 1"0 отовпц!в заповн!ть ц!лими числами' що
{ !!!!одяться з клав|атури. 8кщо чергове число мен!пе в|д 0, ваповнення
сЁаг шог6 1 [5], шогс2[5], пу1ех{[5о];
'|'||кого рядк& припин!ть. |[1сля чисел у ко'1(т{ому рядку запигп|ть ще од-
с}:аг -р;
соц| << ''8вед!ть текст\п,,; с!п.9е!(гпу{ех|, 50); !!(! число - к!льк|сть чисел у ньому. 8ивед|ть масив.
соц! <<
'с|п 10. Розв'яхс!ть аадав! п! 16, 17 ! 18 з розд|лу "3адач!'' ва|цотю вар|анта
]!вел!ть шукане слово\й.; шо!с:;
соц| << ''8вед!ть |нше олово\п,,; с!п >> шог02; '' 71шрма способами:
!п| & = в11|9д1щ9161;. а) з використанням функц!й з б!бл1отеки в0г!п9.}т;
б) без використант{я функц|й з б!бл1отеки в{г1п9.}:.
р = пиех1;
!ог (!п| ! = 0; !< э1г!еп(пу1ех1) _
Фпра'с1йЁ/""'
к; 1++) //
// ря0ок р ''",""',""'
{

// 3нахо0цмо шога1
$ 14. стРуктуРи' списки, ств]{и'
р = ${г51г(р, шог01);
|/
'ерс,е "'ооження
!/ у ря0ку р
1кщо !пакоео вхоёхсення немае, /по
чшРги' оБ'еднАння
1! (р == цццц;6'""1. // вцхо0цмо 3 ццкпу € руктд:и. (тпрутстпур0 _ це спец!альний тип
1. т д{}|1их'
(!п|, =0;,! < &;
// | ряёку р зам!нюемо
]++)'-(р *;) -сшой*,)1-
шос111-'''-
на шог62
,!!{ий створ|оо кориотувач для опрацтовання |нформац|| про
=
)'ог сгб'екти 3 деяко! пред1у1етно| област!. 1ака !нформац|я мо}ке
соц! пу1ек;
<<
(]|{ладатися з да11их р!3них тип!в. €труктура складаеться 3
::атбору по]ь|в _ даних р|зних тип!в' ! !! тип описуоться т&к:

92
93
Фгодосити ли1це зшт!нн| ш[охс1та так:
9|гцс! <назва типу струкцри>
$|гшс|
{
<тип п0ля '|> <назва поля 1>; {
с!таг папе[20]' 5цгпагпе[20];
.!', ,'," п> <на3ва поля п>;
{!оа1 5ёфа!!;
} 9г1' 9г2,'р;
];
[труктцэа 1\[озке м!стити поля типу сц)уктура.
Фпио етруктури обов' я3ково зак1нтуеться си}[воло1!['';''. 1ршкла0 3. Фголосимо структуру 9гшра1 та дв1 з:и|вн! 9гА,
|!ршкла0 -|. бтруктуру' яка:ш!стить анкетн| дан! студент|в
9г8 цього типу. Ёехай структура 9гшра1 пЁстить поля пр1ввище'
(пр|авитце, !1ш'я та середн|й 6ал), мох(на описати так: !м'я, серед:т|й ба.тт ! структуру дату ттарод}}{е11ня (б|Ё}:6ау), яка
5|гцс{ 9гцра (:!{ладаеться 3 пол1в: р1к, :ш!сяць' число.
1
с}:аг пагпе[20], вшгпагпе[20]; $!]шс| $гцра1
[!оа1 зегБа!|; {
с}:аг папе[20]' зцпапе[20];
); $1гцо1
1. 11!д час оголо||]ення структури мо}*сна 3адавати
3аувоэ:сесст+я {
|п{ уеаг, поп|[, 0ау;
обсяг пам'ят!, який займатимуть зм|нн! певного поля. ,(ля б!пб0ау;
}
цього п!оля на8ви подя ставиться в1|ак двокрапки та 3&зна- |!оа{ вегба!|;
ча€ться ц!ле виело або стала _ к|льк|еть байт!в. ?ак| поля } 9гА' 9г8;
н&зива1оть 6]тповцлсш' Бизначити о6сяг, який займае ц1ла
3м!нн| типу структп)& 1шо'*сна !н1ц|ал!зувати в!дразу п1д
структура' мо''сна так: з|аео(<на3ва типу струкгури>).
|[||с оголотттення.
}{оли у програ1и! описана структура' то оголосити зтш!нн! [1рштсла8 4. Фголоси1шо та про!н!ц!ал!зуемо зм!нну 9г
або вказ!вники цього типу што'{сна так:
5|гцс| 0гцра
|
<назва типу струкцри> <список 3м!нних ! вказ!вник!в>, 1

с!таг папе[20]' вцгпапе[20];


{!оа| эегба!!;
$априклад' оголосимо 3м!нн| 9г1 | 9г2, вка31вник р ддя } 9г = {'йрмолю(', "Флександра''' 4.9};
структу;}и з прикладу 1
1ут поле папе зм,.нно! 9г 1шае з}1ачення '{ртшол1ок' т:0де
0гмра9г1' 9г2; _ 3начення ФлексанАРа, а поде 5егьа|| _ 4,9.
9гцра'р; '{!!гпа.тпе
8годосити з:ш!нЁ1 типу структура.
,(оступ до конкрет1{ого т1оля 3,м]11но[ т'|лу етруктура дае
1шох{на гце й так: (1|сл9 4е}1е !м'я вигляду
$1гцо{ <назва типу струкцри>
<назва зм!нно]>.<назва поля>
{
<тип поля 1> <назва поля 1>;
[ршкла0 5. 3м!нништ 9гА та 8гв з прикладу 3 :иоэкна
.{'' ,'," п> <на3ва поля п>;
|!'!/(&ти 3начення
} <список зм!нних ! вказ!вник!в>;
5{гору(9гА. папе, "ь{айковський'');
'[ктцо тип стру1{тури ви3т1ач&ти не обов'язково' а достат. ог8.Б!Ё}т6ау.0ау = 28;

!{ьо лит11е оголосити !! з:ш!шн|, т0 на3ву типу структури 1шо}1{нц !{о:*ска тако}к створ1овати вкаа!вники на структури (див.
[{е 3а3}{ачати. !![)иклад 2). Аоступ до пол|в вка3'внц,са !{а сп[ру,споуру зд|йс-
!1ршкла0 2. [труктуру та зм1нн!. 3 прикладу 1 оголоси:у:о та]с: |!1(х;ться де1що !нак:пе, н!эгс до пол!в в!дпов!дно[ зм!нно|, а само:
51гцс| 9гшра
<на3ва вказ1вника> _> <назва поля>
{с[аг папе[20], вшпапо[20];
{|оа[ эефа!!;} 9г1' 9г2' -р;

95
94
[1ршкла0 6. 0толосутшто вказ1вник р на структуру 9гшра1 соц| << "\п Ф!рма пропонуе так! машини:\п";
прикладу 3 та про!н|ц!ал!ауемо його. соц| << "назва\| р|к випусц \1 ц!на\г:.;
{ог (! = 0; ! < п; !++)
0гцра1 'р; // 8каз!вншк р вказуо сош| << а1[!]'паг&а << ,'\1\1" << а1[|].уеаг ,,\п',;
на аёросу зм|нно[ 9гА << "\!'<< а.|[!].рг!се <.
р = &9гА; /|
Аш1о_0ез[(а1);
|/ 3аповнюомо 3начення пол|в вегБа||
)
р->зегба!! = 4.7; уо!ё Аш!о_0еэп(5тцф Аиорг!се .р)
р_>ь!Ёп6ау.уеаг =
'!986;
// па б!г!!т6ау'уеаг
{

1!1асив зм|нних типу структура мо}кна оголосити так: сош! << ''\п йащини дешевш., н!ж $3000:\п'';
соц! << "назва\{ р|к випуощ\г:,;
<назва типу струкцра> <на3ва масиву>[к!льк|сть елемент!в]; !ог(|п|!=0; !<п; !++)
|! (р[!].рг!се < 300о)
,(оступ до пол!.в окремих елемент!в масиву зд|йсн:оетъся так: соц! ,,\1\1,,
<< р[!].паг[а << <<
р[!].уеаг << "й";
<на3ва елемента>[!ндекс]. <назва поля> )

2. 1!оняття про сппоок. Ровгл,яне:ио структуру даних _ о0_


3м!нн| типу структура мо'куть 6ути аргу1шента1ши функ_
(о0но3в,,я3аншй) спшсок. (пшеото _ це ск!кче_
}

ц|й. [ля них д|:оть т! э*с сам! правила' тцо ! для зм|нних ста1т_ '!онаправленшй
|!ий наб!р да|1их одного типу' м!пс якими палагод}|сено
дарт1{их тип!в.
}

:!!;'язок. Бле:шент однопаправленого


3о0очо _1 (про автопдо61л!). Бикористову}очи масив типу списку складаеться {! двох
!!||стиц: самого
структура' склаети програму' за допош{ого:о яко[ мо'кна ввес- даного (насто скла.деного) та вказ|вника на
!!!|ступний елепдент списку.
ти у па:ш'ять ко1ип']отера дан! про наявн|сть на склад! авто1иа_ .(ля опису описку використову1оть
штин | отримати !нформац|1о про марки та р|к випуску мат]1ин'
'|'!.'[п даних структура ! вкав|вттик' а саме:
ц|на яких ме}{1па' н!э*с $3000. э|гцс! <назв а типу списц>
[ехай структура шт!стить так! поля: марка' р!к випуску та {
<тип поля 1> <назва поля 1>;
ц|на матшини. вивести на екран !нформац!1о про вс| тиатшини |
...;
додатково про т!, ц|на яких ментша' н!э*с $3000. <тип поля п> <на3ва поля п>;
// 1роерама Авгпомоб1п| <тип вка3!вника> *<назва типу описщ>;
#1пс|цёе <!о51геап.п>
);
#!пс!цёе <соп!о'[> <назва типу списщ> *<назва вка3!вника .| >,
#!пс]цёе <э1г!п9.['т> .
'. ,

#6в|]пе п 3 *<на3ва
вка3!вника п>;
|/ Феолосцмо поп Ат|орг!се
5|гцс| Аиорг!ое |1ршюла0 7. (твор*тмо стру1стуру про
( р!чку (г!1<а), яка пд!.с_
1'!'|'гь поля: па{|ва' дов'*си1|а
сБат гпа*а[15]; р1вки к1лоплещ>ах у та площа ба-
!п| уеаг, рг!ое; с;сгйн} у 1свадрат|тих к1лометрах' | поставимо
[й у в!дпов1дн|сть
);
|' Феолосцмо функц!ю, ареуменпом яко[ с вка3!внцк на спрукгпуру -| Ё.,]()менти списку:
уо!6 Аш1о_6еэп(5|гшс| Аиорг!се'р); 5[гцс| пка !| €гпворлоемо гпцп й*а
то16 па!п() {
{ с}:аг па:ма[12];
с!гэог(); !п| 0оу;
Айорг!ое а1[п]; масцв а1 гпшпу Айорг!се |оп9 !п|
|ог(!п||=0; !<п; !++)
// @еолосцмо
{&а .6а|!;
р|;
|! ёпворооемо поле вказ!внцк на пцп г!*а
{ );
соц| << "}вед!ть марку машини, р!к випуску та ц!ну:\п"; г!&а *е!опоп!, 'регэБ!!, *рорвге0п!!, *пощ|;
с!п >> а1[!].паг!а >> а1[!].уеаг >> а1[!].рг|се;
)
11п'е!епеп! _ вказБпик (ттп: структура г!}ка) на потот!ний еле-
н(!}]т списку' е|епеп[-> 6оу - динам!нна зм|нна ц|лого типу (|п:),

96 ? с[+
97
яка р!чки' а е|епеп1 -> ёа!! _ вказ!вник
1\(|стить 3начення дов'*сини 8пайд|ть у програт,!| м!сце,
де новий елемент записуеться
на насц/т[ний еле:иент списку. 3в!дси виплива€' що е!епеп1 '> у список пер]1ти1ш' €аме так
вносять зм!тти у
ёа!! -> 6оу _ це дов}кина насцд1но! р!нки, а е!епеп| -> 6а!! '> 6а!! - |)егляда]оть його на екран|. "''""'* |-""'" ,'"-
вкав!вттик на ш{е т{аступну р!чку | т.д.
3о0очо 2 (про р1нки). !['творити список' який:и|стить !н- поля для трьох да}{их
поле вказ|вттика
формац|то про р!нки. Бивести цей спиоок на екран. ,(одати на
початок списку новпй 3апис. Бивести список з| зм|нашди.
11[об увести дан| про вс! р!ики, 1ио}кт1а використати ту1т\ о) эраф1нне зоброэсенн.я елеменп'а *е!етпеп!
епцс,су;
даних - 1шасив структур. Бва:*сатимемо' ш{о к!льк!сть р|вок,
про як| необх|дно ввести !нфор:иац!то, нев!дошла' то1шу звичай-
ний масив використати не мо}1сна. Ёав!ть якщо к!льк!сть да-
них в!дошта' то прац}овати з таки}[ 1иасиво1и не рац!онально.
&э*се щоб вставиту!. в середину масиву новий еле1у|е1тт' потр!б_
но зти!щувати ''хв|ст масиву'' правору{. 1{об уникнути цього' регоб!/ -рореге0п|!
3астосову|оть список.
|[рограма €писок р!к розв'язуе поставлену задачу ! детшонст-
ру€ ос1{овн! прийоми опрац1овання списку. 0лементи сциску
опращьовук)ть один за од11им 3а допомого1о команд циклу. в) вшлутення 0оншх про
АА/{!сс1с!п1 (елепенпо *эа||х)
6понатку створ1оють описок ! вводять !в кдав|атури в нього 3! спцску;

дан!. 14об 3авертпити введення даних' доштовимося ввести нул1 регэ|!.!

для 3начень назви' дов){{ини та площ| басейну р!нки. |[!сля


завер1пе11}1'{ введен}1я буде створено зайвий (останн!й) елеш|ент
списку (з нулями). його сл!д п!зн!тпе л!кв!дувати' 3аздалег!дь е!епеп1 = рег$п.-,;
пому ]-> 6а!! 6|969д1;
оголосивтши 1це один вка3!вник (на попередн!й елем€Ё! €||}16. =
регэ|!,!- пощ!;
ку) | прийняв1ши рореге6п!.! -> 6а!! = шш|-!-. €уттева перевага спио- а) перех|0 0о понатпку спцсюу ! 0олунення
к|в у тому' що вилучити заф|ксо.ваний (тобто вибраний в!дпо. 0аншх про р!нку
!н|про;
в|дно до деяко! утиови) елетт[ент 1у[о'к1{а 3а допо1шого:о одно| ко.
манди переадресац|! вигляду рорегеёп!! -> 6а!| =:а!!х -> 0а||.
Биводимо список на екра}{. Фтвортоемо новий елемет1т
ку ! вводимо в його поля дан!. [овий елеме1{т зробимо
у списку. 6уттева перевага списку над ш!асиво:ш ! в цьо1иу
щоб вставити яовий елемент п!сля заф!ксованого' п оа!;;
ли1ше дв| команди переадресац|! ! экодно! "6рудно! роботи :#_]#'==;}}">
хвостом''. Бказ!вник нового елеме1{та переадресовуемо 1!| (|().|!учен}|я 0оншх про р1нку
!н!стпер (елеленпь *пооу!) у спцсок
куди вказував вказ|вник заф|ксовано елемента' а вказ|вн
заф!ксованого елемента ''втикае1шо'' в повий елемент:
з !|оео елемс:нй"й
пому!->6а1! = аа{!х->6а!|; |'с>;з:'ляньте
рис. 1| програму 6писокр!к. Биконайте
:а{!х->0а!! = поуу'; н|''|']! !|()експериментуй'" про]'р11-
" "1,.
98
[ 99
// ёлшсок р!к
соц| в|епеп{ -> па2уа << "\{" <<
<<
е!епеп1 _> 0оу << '\1" << е!епеп1 ->
#!по!ц6€ <!о5|гоагп.п> р! << "\п";
#!пс!ц0е <соп!о.[г> е|епоп| = е!епеп{ _> 0а!!;
|/ €тлворюемо гпцп г!*а
з|гцо! г|ка )

||..-..---____-_
{
)
сБаг паауа[1 2];
!п| 6оу; мо! 6 5шофу}',|!щ| Ё!епеп|(мо!6)
|оп9 !п| р!; {

г!&а
*6а!|; !! ёгпворюсмо поле вказ!внцк гпшпу й*а поч, = пеш (г!ка)'
); -е!епеп*, -регэ|!!, -ророгеёп||' -пощ!;
.
соц| << "}вед!ть на3ву, Аовжину та площу ново| р!нки\г:";
с!п >> поч| -> па2уа >> пощ,! -> 0оу >> пощ,! -> р!;
г!ка
)
мо16 $шогу1у$руво[<(мо16); !/ Функц|7 спворення спцску
,':] йр"6ыш|Ёкгай(уо:с); !/ Функи!7 вцве0ення спцску на екран 3. €теки та черги. €тпетс -
це структура да11их' у як!й еле-
й'!а эййш|ч!Ё!ейеп:(уо!ё); !! Функфя с!пворення ново2о олемен1па м()[1т' 8апиеыну1й оста11н!м' 3читу1оть (в!н достут!т\|т{\ для опра-
:1:<>вання) пер[пим. [1ринцип ''останн!й шрийшов _ пертдий п!-
мо!6 па!п()
{
!!!()в'' використовуеться в багатьох техт1!чних пристроях 1 в
соц1 << ''6творення списфп" ::с;бут!: р1:*сок в!.д автомат8; пооадка паса)*сир!в у вагон, яку|й
соп,о| << "!ля зак!ннення введ!ть ус! нул!\п";
$1тогу|у9руэок();
м|!с ли1пе одп! двер! тощо. €тек використовутоть у програму-
!ууеэ{у[']аЁ&гап(); ш!!!!н[' зокрема' ддя реа.'т!зац!1 рекурс!|. Рекурс!я виконуеться
${уоц{уш]щ! Ё!епеп{() ;
'г!!|с: спочатку вс! виклики нагро}дад}1сук)ться (атталог|я така:
// Ао66емо 0о понагпщ спосц новшй елеменгп
е!егпеп! = регэ[!|; !!|)упсина стиока€ться), а пот!м виковук)ться вкладе}1! функц!!
пому! -> оа!! = е|епеп|; (
: :
рухсива ро3прямляеться).
пош;
рег5п!, =
соц1 << "Ёовий список \г':";
6тек опису:оть ! отворто1оть у пам'ят! за допомого1о типу
!ревц}х!аЁ[гап(); /(1||!их структура. Ёад еле!дентами стека ви81{ачен1 литпе дв!'
) сгппс:рац!!: аанесення едемента у стек та вил)гче11ня елеме11та 3|
(!'!1)ка. } стеку аав}!сди доступ:тий е ли1це верхв!й елеш[ент'
то1ё $1мофу5рузо[(то10)
{ :::сий називатоть веР1шшною стпе1со. Розглянепло типову 3адачу
е!епеп{ пеш (т![а);
1:стботи з| стеком.
=
регз[т!! = е!епеп{;
0о 3о0очо 3 (про символи). }вести посл!довн!сть символ|в'
{ |{ра.пка (".") е о8нако1о 3ак!|1чення введоння. 3ивести введе-
= о!епеп1;
ророге6п1!
соц| <<
.!ведпь на3ву, довжину та плоц{у р!нки\п'; :з! символи на екран у зворотно1шу порядку.
^('
с!п >> е|епеп1 -> па:уа; Розв'я'*се:шо ц1о з9дачу !з ваотосува111тя1у[ стека (э|ас|<), якутй
с]п >> е!епеп|'> 6ом; м!с:тить так! поля: оимвол (сБ), вказ!в}1ик ||а наступний еле_
с!п >> е|епеп1 -> р|;
е!епеп| _> 6а!! = пеш (г!|<а); мстппт стека (ёа!!).
е!епеп| = е!епеп| -> 0а!!; #!пс!ц6е <|о5!гвап.ь> !! 11роерама €гпек
) #!пс]цсв <ооп!о.[>
-> р! != 0);
ш}:!!е (5орегФп[! '> 0ом != 0 !! рореге0п1!
-> 6а!1 = }ч!('!]-!-;
рореге6п|! в|;цс| 5|аск !! @еолосдення гпопу в[ас*
) {
с[аг сб;
з1ас&'0а!!;
{ );
ёоц| << "€творено такий список:\гт'; 5|аск -5!,-е!епеп|;
е!епеп[ = регэ|!!;
ш}:!|о (е1епеп1 != ш1-]|_!-)
уо ]6 5&огу|у$1е[(э1ас[ -э|);
{

100 101
-в1);
[5пег9а -91мофу7в|ег9ш(шо!6)
уо!а уу|цспепп!а7!3{е1<ц(э1ас& {
то|6 па!п() спаг а;
( е!епеп1 = пеш (19ьег9а);
э1 = ]',!(]!_!-; //3апам'ягповусмо а0ресу перо;оео елеменп'а черац
5!уогш91ек(5!); регзп!'= е!епеп!;
!у!шо[епп!а2|5!е!<ш(э1); с!п >> а;
) шь|]е(а != '.') /! 1окц не ввеёена крапка
{
-э1)
мо!ё 5{моу|у9!ек(51аок е!егпеп{_>сь = а; |/ 3аповнюемо елеменпц черец
{ е!епеп[ _> 6а!|
= пеш (|з[тег9а);
спа. а; е!ёпеп1 = е!епеп1 -> оа!!;
со // !воёцмо ёан| у сгпек с!п >> а; /! 8во0цмо нас[пупну л'(перу
{
/! 3ншпуемо сцмвол, увеёеной з клав!агпуро )
д = 9е!об(); е|егпеп| = ш!..,!-!-;
е!ейеп| = пе|у (51аск); /! 8ц0|ляемо м!сце ёля новоео елемен/па ге|шгп регэ[!!;
е!епеп1 -> 6а|! = з!; // 1еренаправляемо вка3!внцкц )
5| = е!епеп{;
е!епёп| -> сп = а; 3а6ирати елеме}1т !з терги 1\[о}1сна 3а допо1шогото функц!!
) мо!ё !у!шс!'топп!а2[в!':ег9ш(1э!тег9а -!в[)
ш}:||е (а !='.'); !/ 1окц не ввеёена крапка
{
) шь|]о (15п != ш|,!-!-)
-э{) {
то!ё !у|шс[гепп!а7!5!е&ш(з|ас& е!егпеп{ = 1з[:;
{ // 8олунення елеменгп!в з] спека гпа
соц| << е!епёп1 _> сь;
6о !/ вцве0ення ]\ на екран
|э[ = е|9гп"'1 _' -"','
{
)
5{ =е!епеп1 -> оа!!; е!епеп| = $1;
сош| << э1 -> с[; )

)
шп!!е (Б! -> 0а!! != [(.|!-!-);
1!1аксимально допустишл| розм|ри стека | терги _ вахсдив|
) х1)рактеристики реа'т!зац!! мови програ1у[ування. Бони ви3нача-
|!ереш _ це отруктура даних' у як!й елемент' аап |()ть коло 8адач' як| ш[охсна ро3в'я3ати.

пертшим' 3читутоть пер1пим. 1ут д|е принцип ''перший 4. Ф6'едп'ашпя (шп!оп). Фпис об'еднань у шлов! €** нагадуо
1шов - шерший п!1|1ов'', добре в!до:ший з побуту: черга у ()|1исструктш)' а.'те !хне призначеввя !птпе. Фб'едттання слугу-
3ин1 то1цо. |()ть для збер|гання (поол|довного' :те одночаст1ого) в деяк|й
9ергу, як | стек' описук)ть 3 використа}{няш! структури 711лянц| оперативно[ пам'ят! комп'}отера даних р!вних тип!в.
Ёад елемент&1ши черги ви3начен! операц!!: занесеттня елеме ||отреба в цьо1цу ву!'1у!кае, наприклад, п|д нас створет1ня таб-
у чергу та 3абирати 8 черги. )[' нерз! доступним е ли1пе н
'лпиц| з дани1у[и р!зних тип|в. Фб'еднання мо'{сна оцисати т&к:
н1и елемент.
[!ршкла0 8. Фголосимо нову структуру 1э}:ег9а та два в цп!оп <на3ва типу об'еднання>
з|вники на цей тип {
<тип поля 1> <назва поля 1>;
5{ц]цс| |9пег9а
{
с}тат сб; <тип поля п> <назва поля п>;
-0а!!;
э{ас[ );
1.
,,
-|з}т,*е!епеп1;
|$пег9а !/с! правила' як| розглядалися для опису та використп[|!|'!
!!/ цьотшу випадку' наприклад' етворити в!дпов|дну (]'['руктур' д|тоть | для об'еднань.
(5п мо}кна за допомогото функц![:

103
|о2
3.9 програм! 6тек викокайте виведення да1|их у т!й эке посл|дов-
3о0очо4 (про копферевц[:о)' [ля у{&ст! у конферевц|| що | введепня.
потр!бно заповнити 3аявку: пр!звип1е, !м'я, адре€}'
& тако)к :т<>ст!,
1!0казюо: перенес!'ть введен! дан! у другий стек' а з нього в}1{е
}китло
зазйачати' чи тре6а бронтовати номер у готел!' '{,кщо
!накште -
|!иводьте на екра[{.
непотр|бне' то 3аписати св!й контактний телефон' 4. 1['вед!ть у стек посл!довн!сть символ!в. 8илут|ть !в ц!е! посл!дов_
програ1шу' яка б давала
3а3начити 1{азву готел1о. €творити ::ост! вс! л!тери с.
з1иогу ввести отриман! дан! у баау да:тих конференц!!' 5. Розв'яхс[ть 3&дачу 3 (про символи), використову1очи чергу.
6. 1!1одиф1куйте програму Автомо6|л!, вв!в:пи поле кол1р (со1ог).
|/|Фнференц!я
*!пс]цёе <!о5!геагп.п>
!|ивед|ть дан! про б!л| та вервон1 модел{, ц!на яких _ в1д двох до чо-
'|'ирьох тисяч умовних одит|иць.
#!пс!ц6е <соп!о.[т>
цп1оп 9о1е!-|е! 9. 1!1одиф|куйте програму про конференц!по так, пдоб |{83ву готел}о
( мо)ква було би вибирати !з запропоновавого списку. 8каз1вка: викорис-
с[аг 9о!е![20]; 'г:цйте команду вибору взг*Ёс1д.
с|а:
10. Розв'яяс!ть задаву ].{! 19 ватцого вар!анта з розд!лу "3адан!",
!е![7];
);
_ з1гцс| !<оп1ег !! !' користовук)чи:

{
а) списки;
ё}:аг папе[1 5], эшгпапе[1 5], аёгоэ[1 5]; б) структуру;
!п| ьг; // 1 - преба 6ронювапо номер' 2 - н|
в) об'еднанпя.
0о{е!_|е! бгоп; 11. Розв'я:гс!ть задаку !,,|! 20 ваштого вар!анта з розд!лу "3адан!''.
);
то!6 па!п()
{
1п| п = 1; $ 15. гРАФткА :

&оп!ег а;
шь1!о (п == 1) 1. |раф!тппй реэ[сип!. Роэглятте1шо' як виконув&ти граф!нн!
{
ёоц[.. "\п !вед!ть пр!звище, !м'я та адреоу\г'т';
::с>будови у середовищах 6++ ддя операц!йно! систе}1и оо5'
с!п >> :.папо >> 2.5шгпапе >>:.а0гов; ]!()!{рема'у середовитц| коштп|лятора [шгбо с++ 3.0.
соц| << "\п [реба житло? 1 - так, 0 - н! ";
[раф|нний екра1{ дисплея складаеться 8 точок' як! мох(на
1

с|п >> а.бг;


!' (:.б0 ;:::св!нувати певни1и кольоро]ш чи гасити' у ре3ультат1 чого на
{
соц| << "\п }вед!ть назву готелю\п';
!}|(ра1{! утвор:оеться деяке во6раэкення. 1очки н83ива|оться
с!п >>:.бгоп.9о{е!; л|.кселя:шш. 1{|льк!сть точок }{а екран! мо}1се бути р|зно:о. {е
)
о!9е
;|!!ле}кить в!д характеристик ! нала:птування мон!тора. Ро3-
|''|!яне:у!о екран' який мае 640 точок у гори3о!ттально1шу (т) тта_
1

(
оош| << "\п !вед!ть номер телефону\п";
с!п >> 2.ьгоп.{о!; !!])ямку ! 480 у вертикаль}тому (у). Б!дл|к точок ведуть 3 л|во_
)
_
!\) верх11ього кута екрана. $охсна точка характеризуеться дво-
соц| << ''\п !-!асгупна заявка? 1 _ так, 0 н! ";
с|п >> п; м'! координатами (х, у). ||риклади розтатпува}!ня деяких то-
)
'!()|{ на екран! покаван! на рис. 2.
Бизначити к1льк!сть точок уздов'{с осей 0х та Ф! ш[о}к|'|[!
)

8правш
:т!,л1пов!дно 3а допомого1о коп[анд 9е|пахх ( ) ! 9е|.паху( ) .
1. йодиф!куйте програму €писок р|к так' щоб: а) ви'гучити оетанн!й
новий елемент у к!нець списку; в) вотавити новий
|[рогратии, що викону:оть граф|нн| побудови' перевпл{||() с]
елемевт; б) додати
елемент трет!м у списку. !:г|йнитши | складалоться 3 виклик!в стандартних гр&ф!.||[их
пй
':
2. йодифйуйте процраму 6тек так, п1об час введення ситивол1ш ,|пулпкц|й, як| описан! у б1бл!отечнош[у файл! 6гар}п!св.}:.
мохсна було натискати на клав!тпу вводу.

104 105
5е|у1е!шроп(х1,у1,х2,9, п) _ задае координати нового раф!нного в!кна.
!-|!лонисельна зм!нна п задао режим в!дс!кання зо6раження, яке
виходитиме за меж! в[кна;
с!гс!е(х, у Р) - риоус коло 3 рад!усом Р ! центром у точц! (х' у);
агс(х, у, <початковий кр>, <к!нцевий кр>' <рад!у*) - рисуо дугу;
р!еэ!1се(х, у' <початковий кр>, <к!нцевий цт>, <рад!ус>) рису6 -
зафарбований сектор;
е!]!рэе(х, и <початковий кг>, <к]нцевий (Р),
<горизонт. рад!ус>'
<вертик. рад|уф) - рисуе ел!пс чи дуц ел|пса;
эеЁ[!!!э!у1е(<заповнення>' <кол!р>) -
3адас спос!б заповнення замкнугот
област! 3алежно в!д знанення параметра 3аповнення: о
заповнення кольором фону, 1 - оуц!льне 3аповнення, 2 - заповнення
товстими горизонтальними л!н!ями, 3 -
3аповнення нахиленими
479 л!н!ями' ...,
1о _
заповнення точками,'1 1-
щ!льне 3аповнення
(160,479) (639,479) точками;
|!оо6!|!| (х' у, <кол[р меж!>) - заповнюо 3амкнену область, що м!стить тонку
Ршс. 2- Ёоор0цнапьц п[очоЁ 1'{' ароф|+ному екран| 64Фх480 (х'у);
с!оэе9гар}:() - закривае раф|нний режим;
.(ля того, що6 створити зобраэ*се1{ня' спочатку треба оц[[ех[(<текст>) - виводить заданий тексг .3 поточнот позиц[[;
ти граф!нний реэ*сим. [е викону}оть так: оц{[ех|ху(х, у, <текст>) - виводить тексг у заданому м!сц!;
5е1!ехьы!е(<шрифт>, <напрям>' <розм!р>) - 3адао вигляд символ!в,
/| ,!ля оласу харакперцспцк 0цсплея напрямок виведення: 0 - горизонтально чи 1 - вертик€шьно' а також
!п!90г!мег = овтЁст, 9по0е, еггогсо0е; розм1ри символ!в '|, 2, 3
// 3аёання ераф!нноео режшму
!п|19гар}т(&90г!тег, &9поёе,',,'} Розглянемо деяк! функц!!' як! використову1оться у ви-
еггогсо0е = 9гар!.:геэш!{();
!! (еггогсо6е 1= 9гФ&)
[)шзах.
{
соц1 << " граф!нний режим задати не вдалося.\п";
-
0гарпгезц]!() повертао код помилки, якщо неможливо 3адати раф!нний
режим; 0 - у раз! 3адання;
соц1 <<''[]омилка:,, << 9гар}:еггогпэ9(егогсоёе),
$е|пахх() - повертае значення розм!ру екрана вздовж ос! 0х;
ооц1
:< ''\п !ля виходу натисн!ть на будь_ящ клав!шу,'; 9е|паху() - повертао 3начення розм!ру екрана в3довж ос! 0у;
9е1с[т(); че|оо!ог() - повертао 3начення поточного кольору;
$е0(0' 9е[ю -
ех!1(1 ); повертають координати пото;ною п!ксел:я
)

2. Фупкц|! для- граф!пших побудов. Розглянемо 3. $ольори. 1{ольори задак)ть числами а6о англ!йськими
б|бл1отеки
функц|[ !|113ва1ши:
9гар}:!ся.}:' як| використ;вуються як команди.
в|_Аок=0-чорний; оАпксвАу - темно-с!рий;
= 8
!-!снтв1-0в _ яскраво-син!й
в|-!'.]Б ='| -оин!й; = 9

се[ес!згарь(<драйвер>, <режим>) _ ,о.е!'а. снпЁш=2-зелений; |_!снтспЁвш = 10 _ яскраво-зелений;


3начення характеристик 6}А},!=3-6лакитний; !-!онтсуАш = 1 1 _ яскраво-6лакитний;
дисплея;
3е|со|о(<кол!р>} - задае кол|р майбщнього зобраоення; РЁ9=4-нервоний; !-!снтвЁо 12 _ яораво-нервоний;
=
зе[б&со!ог(<кол|р>) - задае кол!р тла; мАсЁштА = 5 - ф!олетовий; ]_16нтмАсЁштА = 1 3 _ яскраво-ф!олетовий;
рш[р|хе!(х, у, <кол|р>) - висв!тлюе тонку (х,у) 3аданим кольором; внФ9\'=6-коринневий; уБ!-|_ош = 14-жовтий;
!!1"$1' у1, х2, {2| - рисуе л!н!ю
";*
д.о|,]'о"*й|; |_[снтсвАу = 7 - св!тло-с!рий; шн!тЁ=15_б!лий.
]|!?19!}: у) - рисус л!н!ю в|д поточнотточки до тонки (х, у);
!!пе|е](сх' ёу) - рисуе л!н!ю в!д поточнот точйи !з заданими
приростами;
Р1]!'].' у1, х2, у2|: рисуе зафарбований 3ш0очо.1 (про копцептричн! кола). }{ариоувати р|з1|ими
ьагзо(х1 х2, у2, <о6,смна глибина>, 'р"й'1Ёй"*;
Ё) - р'оуо-.;;;;;;'';;;#динатами
паралелеп!пед; !(ольора1!!и деоять ко1{центричних к!л' як! ма1оть сп|льтгий
Р) -
' -у1 '
гес|ап91е01, у-1, х|' рису€ .р""'*й'''* 16
|(ентр посередин! екрана (в тонц! 3 граф|чними координ0тдми
та
(:\2Ф;24Ф)), ! описати навколо к1л тервоний прямокутник.

|06 !

1о7
#!пс]цае <$|6!!ь.ь !! |Фла 9е|о}:();
ех!|(1);
*!пс]цое <!оз|геап.}:>
#!пс]ц6о <ооп!о.б> )

#|пс]ц6е <9гар[!св.[> зе|Б&со!о(0);


!п! па!п() эе1со!ог(3);
гес!ап916(1 о0, 0, 300' 200);
(
зе1{!|!э{у!е(1 3);
|п| 90{тег = РЁ1Ё61' 9по6е, еггогсоёе; '
!п| х' у' ,"6;ц5 = 19! {!оо6$!!(200' 100' 3);
!п!|9гар}:(&96Ётег, &9по0е, ");
еггогсо6е = 9гар}тгевш!|(); зе|со!ог(14);
|| (еггогсо6о != 9гФ[) с|гс!е(200, 10Ф' 100);
5е1|!!!51у!е(1 14);
( '
{[оо0{|!!(200, 100' 14);
соц! << "[1омилка: '' << 9гар}:еггоггпч(еггогсо0е);
соц| <<'\г': Р{атион!ть на будь-яц клав!шу"; эе!оо!о(0);
с!гс!е(200, 100' 100);
9е|о|т();
ве{|ех1э!['е(0, 0' 3);
ех!|(1);
оцшехь<у(': до, 95' "!!ьв!в'');
)
х= 9е{гпаж()/2; у= 9етт:ац() /2; оо1с[();
ш[!|в (га6!шэ <= 100) с!оэе9тарБ();
:о1цгп 0;
{
10);
3 (про граф!к фупкц|0' Ёарисувати граф!к
ве|оо!ог(га6|цэ/ о!гс!е(х, у' га6!шэ); )
гао!ц9 += '| 1; 3о0очо
) с|гункц|! !:2з1п2х * 1 тпапро1ш!}1ску [0;
2п]' табулюк)чи функ_
эе|со!о(РЁР); експери1ше1!т!в' 31ш!н1о1очи
г€сип9!е(22о' 4$' 429, 349|; :(|:о з крокош[ !ь:Ф'!. ![' результат!
(за допомогото 1![но}*сника 1{)'
1

9е{сь(); {}!|ачення ам''л!'уди в п!{селях


:гстбразити граф!к на екрав! якшайкраще'
с[озщгарБ();
ге|цгп 0;

3о0очо 2 (про еплблеппу).


Ёарисувати емблепду. |/ верхн1й
л!в!й чаетин|' граф!нпого екрана
ва чорпо1!дду фоп! варисувати
бдакитпий квадрат' а в пьоплу _
#ъв1в чор}1е коло' зафар6оване }ковтим
кольоро|ш. у цевтр! емблепди
чорвими л!тератши вяписати сло_
во'.}1ъв|в''. ;4:=Ёз !гт2эс+!
#|пс|ц6е <в!0!|б.[:> // Ём6лема
*|пс!ц6в <!о$!геап.ь>
*|пс|ц6в <соп!о.б>
*!по!ц6е <9гарб!сз.}п>
|п[ (па!п() !![раф1к
*]пс]ц6о <э|0!!б-}:>
{
#!пс]ц{е <!ов1геап.|>
|п| 9ёг!тег = 0Бтвот' 9посо, оггогсо6е;
|п!|9гар}:(&96Ётог' &9по6е, ");
*!пс|ц6о <па1!'т.}:>
*]пс|ц6е <соп!о.[:>
егоюо6е = 9врБгеэш|!();
!! (еггогсо0е != 9Ф&)
*|пс!ц6е <9гар}:!сэ-б>
|!оа1 |(!!оа1 х);
{
, то16 па!п()
соц| << "[1ошилка: << 9гар}':ешогтпэ9(еггогсоёе);
{
соц| <<'\г: }!атисн!ть на будь-ягу ш:ав!ш|'';

109
108
соп5|'|оа|а = 0, б = 2. 3.14,п = о.1;
сопз| !п| |1 = $, у6 = 60, уо = ацо, ?'А 50;
=
3о0очо 4 (про дипа1}[1чний ефект). 3образити }{а чорнош|у
|п|96г!мэг = овтЁот, 9пьсе, еггй;6е; '|'.'! ! екрана рух зеленого кола вверх-вниз.
|п| х1, у1;
!|оа! х, у; #]пс]цёе <51о!!ь.п> |!Ёфекгп руху
!п!19гар|(&96г!уог, &9поое,,,,,); #]пс]цёе <!о5!геап.п>
е-ггогоо0е = 9гар[геэш!1() ; #!пс!ц6е <соп!о'п>
!т (еггогсо6е != 9го&) #!пс]цёе <9гар[!сэ.|>
{ #1пс!ц{е <6оэ.}т>
соц| << ,'[-!омилка ' << 9гар|еггогпэ9(епогсоёе); мо|ё па!п()
соц[ << ,'\п Р{атисн!ть на будь-яц *л]|;шу''; {

9о1сь(); !п| 96г|мег = 9Ё]ЁФ[' 9по6е, еггогооое;


ех!!(1); !п!!9гар!':(&96г!уег' &9гпо6е' "");
) еггогсосо = 9гар!'тгеэш|1();
ве{б&со!ог('! ); !! (еггогсо6в ;= о@[)
зе{со!ог(14); {
!!пе(20, у0, 600, у0); со0{ <<''[омилка" << 9гарьеггоппэ9(еггогсо0е);
|'пе(хо, 440, х0, 20); соц1 <<'\п Батисн!ть на будь-яку клав!шу";
х=?] ое1с}п();
х'| =1$+й*х; ех!1(1 );
у = |(х); )
у1=у0-й-у; эе1б&оо!ог(8!-А6();
поуе1о(х1, у.!); эе1со|о(6РЁЁ|х!);
зе!со!ог(15); !п*у=69'5у=4'г=50;
6о !ппх=9е1пахх()/2;

!

{,
}+|(х); у1 =у0-(й-у); {
!!пе|о(х1, у1); с1гс|е (х' у' г);
х1 +=}:1. х=х+|. 0е!ау(30);
) эе{оо!ог(8!-А6$;
ш}:!|е (х <= !); с!го!е (х' у' г);
эе|1ех!э|у!е( 0, 0, 1); $е1со!ог(спвЁш);
оц1!ехщ(60,245, .0-); у += 5}!
оц({ех{ху(з60, 245,,,6.3"); 1{ (у < 60 !! у > 9е{пац() - 60)
$е{{еп$1у!е( 0, 0, 2); 5у ='$у;
ош!|ех|ху(1 00, 380,,'|-раф!к )
функц!! у=2э!п2х+.|,');
9е|сь(); с!озе9гар|(); тшп1|е(!&б!'':!1()); | докц не на!пцсну[па 6у6ьяка клав!ц]а
, 9е{с[();
х) с!озе9гар[();
'|оа! {'('|оа! )
{]оа| !цпс;
1цпо 2- = э!п (2 - х) + 1; Функц!я
ёе|ау(п), яка описана у б!бл!отец!! 6ов.}:, при3на-
ге|цгп 1цпс; |!(}н& для 3атримки на екран! ревультат!в виконання програми
] !||! п м!кросекунд.

4. |м1тац1я руху об'екта :га екран1. Функц|[ кьь]|0 повертае 3начення хибн!сть (або 0), якщо
.(ля |:и|тац|! руху зоб_ !|{1тиснута будь-яка кдав!.1ша на кдав!атур!' або |стина (дов!-
ра}1{ення об'екта на екран| необх!дно викоЁати
рит1ш:
такий а.'1го- .,]1'|{е ц|ле число) у протиле}1сному випадку. Бона описа1{0 у
1. Ёарисувати об'€кт б!бл!отец| соп!о.ь.
у заданфй тонц|.
2. Битерти о6'€кт, 3арисував1пи його колъором тла. 3прави
3. 3м|нити координати об'екта. 1. Ёатиаллойте в центр1 екрана правильну чотирикутну п!рам1ду.
4. |[ерейти до пункту 1. 2. 3обрао!ть рух сонця на блакитному неб!.
3. Розв'яяс|ть задак| }'[е 2|, 22,23 ватшого вар!анта з розд!лу "3адан!''.

110
111
$ 16. встуш до оБ'ектно-оР1ентовАного !!'1 точки. Фпис кдасу 1Ро!п| мае такий вигляд:
пРогРАмувАння с!азэ 7Ро!п|

|оловното в|дтл!нтт!стю с++ в1д 6 е :шоэтслив!сть опрацьову. {


р!о|ес|ёс:
вати новий тип даних' _ класу полягае в об'еднай- !п| х,у; // |Фор0анагпш
н| даших ! алгоритм!в !х 'слос.1дея
опрац1ова|{ня. ,{ан! нааива}оться рць]|с:
1Ро!п1(!п| а' !п| б); /! |н!ц!ал|зус поля коор0шна{п чцсламц а ь
11я1'1ш клосу' алгоритми _ ;петпо0о]шш' а властте об'еднання'1о.
!

- мо!6 @п() // Рцсуе [почку попочнцм кольором


йтсопсуляч]ао. 1!1етоди опрацьову1оть поля ! зовзт!тпн! дан!, {Ргаш(9е|со!о());}
власне вони реал|3у:01ъ !де:о класу. $ласи волод!:оть властив!с-
то|6 @#() // 8шгпарае почц - малюо |т кольором фону
{9гаш(9о{б&со!ог()) ;)
тто успа,0пуво,"1я, яка зафвпеч/е використання клаео1ш-на]цад- у|г|ца] уо!6 9гаш(!п! со!оф /! Ршсус почку кольором со|ог
ком (надал! - пох!дни:и класо:и) пол!в | метод|в базового класу {рш1р|хе!(х' у' оо!ог);}
|/ |1ерем|щае [почц на екран! на 6х вправо ! на ёу вназ
(предка, батьк1вського класу). }[охсний клас пдоясе мати то!6 йоме(!п| 6х, !п! 0у);
до-
в!льну к|льк!сть цяцадк!в, що дае 3могу створк)вати |ерарх|нн1 );

дерева успадкування. нятт1адок 1\[о}ке перекривати деяк| 1шетоди Функц1я 1Ро!п1 створ1ое екзеш|пляр класу |. заповн:ое його
предка' 1 тод: 1шетод 3 одни!\{ |:шене:и для р|зних клас!в вико- ||()ля конкретт]ими значення1итл. \акий метод класу на3иваеть-
н}|вати1иеться пор|зно'шу. це називак)ть пол|лоорф|а]шо л1 метод!в. сл кон,с!пру'с/поро].4. }€онструктор зовэю0ш ма€ на3ву класу.
]]птачення кл1очового сдова у!г|ца| в опис| 1иетоду 9гаш() буде по-
1. 1нкапсуляц!я. €творення }1ового класу аналог1нне
до них{че.
створе1тня ново! структури: '!()|1ено
3авначи:шо' що 3начення пол|в класу баэкано з:ц|нтовати за
с|аэз <назва класу> /\()г1о}1ого}о тшетод|в. ![априклад, з:и!нити розти|шдення точки
{
мо)кна 3а допомого:о методу [т:|оме.
<специф|катор доступР: |{оза описом класу 3аголовок 1шетоду шлао такий вигляд:
<тип поля 1> <на3ви пол!в 1>;
| .назва класу>::<на3ва методу>(<списокформальнь:х параметр!в>);
;

|.'1
.'й,',оля
!

[ч!> <на3ви
пол!в }п,!>;
<декларацг' чи описи метод|в класу>; Фпитше:шо методи створеного клаоу:
); 1Ро!п{::1Ро!п1(|п| а' !п| ь)
{

1!1етодами класу е функц|[, як! визпанен1 для пол1в чи х=а; у=ь;


зовн!гпн!х в:ш!нних. )
уо!6 [Ро|п{::]ч:|оме(!п| 6х' !п! 6у)
€пециф!катори доступу описук)ться так: {
Ф1|0;
€пецпф!катор х += ох; } += 0у;
постутгу Фпис Фп();
)
рг!та|е Аоступн1сть ли1пе для метод1в класу
.(оотупн!сть ли1пе для метод!в класу т8 метод!в 3шл|нну (о6'ект) класу оголошу,оть аналоЁчно до |нтших клас|в:
рго!ес!е6
пох!днцх клас1в 1Ро|п1 п(1 2'24)' п(1 00'200);
ршб!!с 4оступн1оть для будь-яко! зовн!тцвьо! функп|! 1!1етод класу викликатоть так:
Б опис! класу специф!катор доступу бути в!деутн!й.
пдо''се <назва об'екта>.<на3ва методу>(<список фактинних параметр!в>)
?од! за 3а1![овчуванням актив![и1ш е специф|к.тор рпта["'
поки
;

явно не задано !н:пе. 3азначипло' що структура в Фголосити й використати ек3е1![пляр класу 1Ро!п| молс-
усьому
лог1чна до класу' кр1м того, що за вамовнувйням !! поля та
апа- Ро!п1
!|1!' наприклад' так:
1шетоди зага.]1ьцодоступн! (рцБ!|с). 8й структш) пе мояспа }Ро!п{ Ро!п|(50'50);
ус_
падкувати класи_пащадтси. Ро!п{.@п();
6творимо, ||априклад' клае [Ро!п|, який м!ститиме коорди- Ро!п!.йоуе(35' 70);
Ро!п|'о1'();
нати точки ! так! ]|{етоди: засв!нуванпя, гас!нпя й перем1щетл_

1\2 |] () ь+ 113
або за доцош{ого1о ди|та1ш'чних 3ш[!11них: ' в опис| операт0р-методу орега{ог() викориетовуемо п0си.'1ання
['<;плу
[Ро!п{" Ро!п{Р1г = пеш Ро!п1(100'100);
Ро!п1Р1г->0п();
Ёотианда ге1цгп 1шае повертати екве1шттляр (знанення з:ш|н-
|'Ро|г":1&'
Ро!п1Р1г->]у|оуе(35' 70); ::сл|) типу ]Ро!п|. Фск|льки на момент опису класу !:и'я зм1но!
Ро!п1Р!г->Ф1{(); !{|,ого кл&су нев!до:ие, у с++ |снуе спец|альне кл|оч0ве слово
|Б[в - вказ!вник на ц1о ам1нну.
,{ля клао!в ви3наче}тий спец|альний метод орега|ог' & са1ше:
2. }|'спадковувавня; )/спадковування вд|йснтоеться так:
<тип> орега|ог<символ>(<формальн! параметри>) { <т!ло методу>}
с|а95 <на3ва нащадка> : <специф!катор достпу
||/ цьому раз| як символ мо'*сна використовувати ус| ариф_ успадковування> :<назва предка>
метичн'. операц![, команду присвоення' команди присвоення' {
<додан| поля класу>;
сути|ш4ен| з арифмети!]ними операц!ятши та р!зн! п&ри ду]т{ок' <декларац!| чи описи доданих перевизнанених метод!в>;
наприклад: орвга|ог+' орега|ог/=' орега[ог=' орега|ог(} тощо.
!
)
|[равила опису власних оператор-1шетод!в аналог!чн! до правил
створе11ня ввичайних функщ!й ви метод!в. ,(ля визначе11!1я мо)*сливост| доступу до елеш[ент!в шох!дно_
3а,0очо -1. Бикористовулочи клае [Ро!п| та орега|о() (див. |1) класу керутоться наступ}{о}о таблището:
дал|) нарисуйте !000 точок' вишадково розм|ще11их |та екран!.
#|пс]цёе <9гар[!сэ.}"т>
#|пс|ц0е <соп!о.|:>
#!пс!ц0е <э!0!!б.[т>
с!аээ 1Ро1п{
(
рго1ес[ес: !п! х' у;
ршБ!!с:
[Ро!п|(!п{ а = 0' !п| Б = 0)
{
х=а; у=ь;
|{ро!лтоструетшо меха:л|зм успадков}|ва1{ня створет1ня1ш |ерар_
уо;с ог}с)
х!.пного дерева !н:ших клао!в _ клас!в !
о'$'"*(9е*со!о());} |(утник'! (див. рис. 3). ''коло''' ,,л!н!я'' ,'пря:ио_
"''6 {[гаш(9е|б&оо!о());) }Ро!п*
у!*ца] уо!ё 0гаш(!п| оо!оф \*- -\.=
{рш{р!хе!(х'
[Ро|п1& орега!ог()(!п! |'|п!
у' оо!ог);}
-------'/-
{
|)
} €!го1е !Бпа
х=!'у=|;
ге[цгп -|п!5;
!
!

) !

); 18,ео*
мо16 па!п() Рше. 3' [ерорх1*не 0ерево клас!в
$лас
{
!п[ 0ог!уег = РЁ]Ё€[' 9по6е, еггогсо0е; вибрано батьк1вськи:ш, оск|льки в!н :цае сп|льтт|
1Ро|п1
!п!!9гар[(&9ёг!мег, &9по6е,''''); !!.'!цстивоет! для вс!х граф|'лних клас1в: коордиттати' методи 3&_
|Ро!п{ Р;
гап0оп!ае(); с::з1иування, гас|ння ! руху, як! будуть уепадкован! !нтшими
!= 0; ! < 1000; !++) Р(гап0оп(!)' гап6оп(!) ).9п(); !с/!{1сами. 1{оло вивнача€ться його центром (тонкото) ! рад!усоти
'ог(!п|
9е{сп(); (:{!литш тислом). ?ому клас 16!гс!е як нащадок класу [Ро!п1 6у7ддс;
о!оэе9гар!'т();
) /(()||овнет{ий поле:ш щ!лого типу г. Б!др!зок виз}1ача.€ться 0д[1им
:с!птцем (тонкото) { з:и|щення:ш в|дт*осно нього другого :с|нт1я.
9 ц|й програм! дл'т зада:{т1я ко0рдинат точки вик0рист0ву_
'[\:;иу клас 1!-!пе до11овнимо ц!литши полями Бь!{!х 1 $п!'|у
е:шо орега1о(). ш{об 1шон.снд. було застосувати' н&11риклад ко1!танди
;пм|:цень другого к|.нця в!дносно осей Ф)( | оу. $лас 18ес1
Р(30'80).оп() або Р('!00,200)'о1'0' орега1ог() м8е }1а.,1е]*{ати т}1пу [Ро!п!.
(:пряплокутник) аналог!.чний до класу }1_!пе: протилеэкн| ве{)1ши*

114
115
1Ро!п1::9гаш(!п| со!о0
ни пря1!|окутника 3ада1оться координата1\[и точки 1 11 8м1щет1. {рш{р!хе!(х' у' со!о0;} /| Буёе нарасована почка, а не коло
ням. для ус!х пох|дних клас|в реал|зац![ ш!етод|в @п()' Ф{{() та 1{об уникнути ц!е| ситуац1|, в опис| методу 9гаш() у базо-
1т4оте() 6удуть од}{аковиш[и' тому перевизначати [х не потр1.бно.
:пому клас1 використовук)ть слуэ*сбове слово у|Ёца!:
!(онструктори та 1иетоди рисування ус!х успадкова|1их клас!в
у!г|ца! уо]ё 9гаш(!п| со!ог);
р|зн|. 1о:шу !х необх!дно переви3начати.
Фголотпення й реал!зац!я класу ]6!гс!е мае вигляд: } цьошлу випадку адреса виклику потр!бного 1иетоду 9гаш()
с[аээ 1Ф!гс!е:рц!!1с | Ро!п1 |!|13начаеться ли1]]е на етап| виконання програш{и. Биклик
( 6дптьк|вського 1иетоду Фп() класоти [6!гс!е веде до виклику в}|се
]п| г; // Раё!ус !|()ревизначеного методу 9гаш():
ршБ!|с:
|@!го!е(!п| а, 3п| б' !п| с); // |н|ц|ал|зуе поля клаоу уо!6 [6!гс!е:: 9гаш(1п| оо!ог)
у!г|ца] уо!ё 9гаш(!п| оо!ог); // Рцце коло кольором со!ог {

); ве|со!ог(со!оф;
]Ф!гс!е::16!гс!е(!п| а' !п1 б' 1п| с):1Ро!п1(а' б) с|гс!е(х' у, г); // Буёе наросоване коло
{г = с;} )
уо]6 1Ф|гс!е::9гаш(!п| со|о0
1_{ей механ!з:и називатоть 0шноуш1нюшлш, а6о п|зн]:п 3в'я3у-
а 1иетод 9гаш() _ в|рпъуалънш1'1 1иетодом.
{
эе{со!ог(со!о0; ош|{,!я]}0,
с!го!е(х' у'
)
г);
3о0очо 2. \|арпеувати десять ко|{центричних к!л' як| ма-
:сгт'ь оп!льний центр посередин| екрана.
Б конструктор| [6!гс|е в!дбуваеться виклик батьк|вського #!по!цёе <9гар[!сэ.Б>
конструктора' який !н!ц|ал|зуе успадкован! поля х ! у. #!пс!ц6е <соп!о.Б>
Фголотшення клаоу 1!-!пе мае такий вигляд: с!аэз 1Ро!п!
с!аээ ]!-!пе: ршБ!!с [Ро!п{ {
х,у;
рго|ес!е{: !п1

]п| $}:!{!!,' 5}:![11;


{
!! 3м|щення 0руеоао к|нар ршБ|3с:
тРо!п|(!п| а' |п| б);
рц6!]с: !! (\1 ; у1) | (\2; !2) - коор0шнагпо к!нц1в в!1р!зка
[!-!пе (!п| !,1 !п| 11' !п| )€' |п| {2);
то|ё Фп() {}гашл(9е1со!о());}
' мо!0 Ф1!() {9гаш(9е1б[оо!о());}
у!г[ца! уо!0 9гаш(|п[ со!ог); // Ршсуе в|1р!зок кольором со!ог у!г|ца| уо[а 9гаш(!п| со!оф {рш{р!хе!(х' у, оо!ог);}
1.
!' !.
',
3. ||ол!тшорф|зм. [!ол1льорф!злш - це мо'*{лив!сть викорис-
]Ро!п1::]Ро!п1(!п| а' !п| б)
{х=а; у=$;}
товувати однаков| !мена для метод!в р!зних клас!в. Ёаприк- с!азз }€!гс!е: ршБ!|с [Ро|п1
лад' 1у!етоди створет{ня й рисування вс!х побудов&них клас|в {
!п| г;
1ша1оть однаков! !тшена - 6геа1е | 9гаш, а.'те ко}}сний граф!тний ршБ|1с:16!го!е(!п| а' !п| б' !п| с);
клас реал|зуо !х по-р|зному. у!г|ца[ уо16 9гаш(!п| со!оф;
Розглянемо д|то успа,оковано2о методу оп() класу ]3!гс!е. );
[@!го!е::[Ф!гс!е(!п! а, 1п[ б' !п| с):[Ро!п!(а' б)
Фск|дьки цей ш:етод у 16!гс!е не перевизн&чався' його реал|за- {г = с;)
ц!я береться 3 класу тРо!п{: уо!0 1€!гс|е::9гаш(!п|
{
со!ог)

1Ро!п|::@п() зе!со!ог(со!ог);
{9гаш(9е1со!о());} !| вцклцкао мегпо0 Ргаш() с!гс!е(х, у' г);
методу оп() зале'1сить в|д штетоду 9гаш(). Ёа- )
'{|я якщо 9гаш() малк)о коло' реал!зац!|
приклад' Фп() його засв!чуе поточним
шо!0 па!п()
(

кольором. |[еревизнанати метод Фп() не треба, оск|льки його !п! 90г!мег = 0Ё1Ё@1' 9по0е, еггогоо0е;
!п!19гар|(&90г!уег, &9поёе, "");
реал|зац!я справедлива 8а умови' що успадкований метод ! = 10; ! <= '|00; ! += 10)
9гашл() перевизначений. Фписи цих метод!в були ровти|тцен| в 'о](!п|{[6!гс!е 6!го!е(9е!гпахх(у2' 9е|пац(у2' !);

батьк!вськотшу клас! 1Ро!п|. 3г!дно з прийнятупу1 с!тъ(',пшчшшл3 !€ гс!е.Фп();}


9е{сп();
(ранн!м) механ|змом виклику функц!й 3ав'кди виконувати- с!о5е9гарь();
меться про1.рамний код 0гаш() базового класу 1Ро!п1, а саме: )

71.7
116
|{ереваги о6,ёктно-ор|снтоваттог0 ттрограш1уван}1я найб!льтп * ддя викона}1ня прогр&1![и;
8цп
в|дчут*| ш1д нас створен}т,я складних ! великих ва о6сягом Фогпр!!о _ для кош:п|ляц!! ]1рогра1т[и та створення ехе-файлу;
програм. Ёласиф!кац!я функц!й за о3}!ако1о налехсност! до 0еБш9 _ для 1{алагодэкенн8 програ}ди;
певт{о1'о класу сшротцу€ пр0цес шрограш|ування й нав|гац!:о по Рго]ес! _ для створен}{ проект|в;
тексту програми на етап| розробки. 3авдяки насл!дуваннто ! ор|!оп$ _ д]1я конф!гурування еередови1ца;
пол!шторф!"йу шр,грам1стов| не гтотр!бтто ошисувати однотипн|
!9!пёош - для конф|гурування в!кон | роботи з ни1ци;
м"''д:'у пох!дних класах' д|1 яких однаков|. 3 наведеного ви- не!р
ще прикладу вид1{о, що 6ез ви1{ористання ФФ|{ довелось би - для шадш{ня дошо1шоги
описувати ]иетоди руху 1\л1оте(), засв!тування 6п() та гас!ння Ф1{() |{отр!бний пункт вибиратоть стр!лка1ии пере:и!тцення кур_
окреш[о для ко)к!{ого !з клас1в 16!гс!е, 1!-!пе | ]Рес!,
_ а ще вай-
(]()ра а6о 1шитпко:о ! натиска:оть на клав|тшу вводу. 1!1оэкна ско-
вих дев'ять функщ!й. [)истатися комб!нац|е:о клав!тп А!1+<висв!тлена буква>: натиснув-
3прави плти й утриш|у1очи к.::ав!тшу А!!, натиека}оть на клав!тпу з висв|т_

1' 0питш!ть методи класу ?!-!пе й уепадкуйте в!д нього клас тпес1' ;|0но}0 л!терото | в!дттуека:оть о6идв| клав1тп|.
2. }спадкуйте клас [|ех{ (текст) в!д ]Ро1п1, який 6и виводив на ек_ Розглянемо головн! ета!1и' з яких складаеться сеанс роботи.
_
ран текст у задан!й глозиц1| поточним кодьором. 1. Актив!зу10ть голов!{е мен1о (натискатоть на г10) | пункт
3. 1!1одиф{куйте клас 1Ро!п{ так, щф користувач м!г зад&ти кол!р тот' Б!!е. Фдерэку1оть додаткове (с:тадне) мен1о. )/ ньо:шу вибира:оть
ки: а) з:ш1ттто}очи поточний кол|р; б) додав:ши у кд8с тРо!п1 поле кольору' |(()манду }.!еш (записуватиш{е1у|о так: Ё10 =+ Ё!!е =+ },!еш). €ередо_
4. ||/ задан! 1 точки намал:ойте вип&дковими кодьорами. !!|4ще переходить у ре'}сим створе11ня н0вого файлу 3 1{азво|о
5. 1!1одиф!куйте задаиу 2 так; а) намалтог}те кола р!звими кольора'
тии;' б) зафар6уйте кола р|зними кольора!у1и. г.10шАмв00.сРР. Ёабиратоть текст програми.
6. Розв-'яхс{ть вадач! п! 21, 23 в{тцого вар!анта з розд|лу "3ада'л|'', 2. ['ля виправлення очевидних шомилок уведет1ня корис-
викор}1стовутони побудован| вишде кл&су!- '|'у!оться традиц!йними прийо1шами редагування тексту' 3окре-
м1[' таки1у1и ко:иб!нац!ями клав!1ш для роботи з блокашти (фраг-
мс:пттами) тексту:
$ 17. сшРвдовищв шРогРАмувАнн,{ 8++
1. €ередовище програмувапня с++. у р!зних операц!йних
5[т!1{+стр1лки - виокреш{ити чи 3!{яти виокре1шленття бдока
тексту;
сиетемах |снуе по дек!лька середови1ц програмувант1я ш|ово1о
с++. }{априклад, для операц|йт:о1 системи \['!пёотмз _ цо
61г!+!пэе( - коп!товати блок у буфер обм1шу;
$[!{1+9е! _ перетш|сттттп 6лок |в тексту у буфер;
1шгБо €**, Бог1апа с++ 3"1, Бог1а:т0 €++ Бш11ёег тощо. Бони $[!1{+!пэей * вст&вити текст !з буфера у позттаче1{е курсором
при3[1ачен| для п|дготовки текст!в програп{ 1шов01о б++, [хньо! шх|сце ос[{ов1'ого тексту;
ко:шп1ляц|! (переведення програ1шного коду в тшатпинний) та Ф|г!+9е! _ вилу!ити виокре1шлений бдок |з тексту;
виконання. ||ринципи складання програш: (окр!м ро6оти в 6|г!+| _ вилу{ити рядок' де е кш)сор;
граф!кото у \РР'!пёотм$) дл'1 них однаков!. Розгля1{е1\[о правилд 6!г!+@, | _ вил1гчц.дц текст в|д ки)сор& до к!нця рядк&;
роооти на ]1риклад! середовитца 1шгБо 6** ддя }Ф$. !!г!+]\,! - вставити рядок;
Аля "*'ду у середовитце треба виконати ко1шанду !с.ехе' } 01г!+Р90р - перейти до цочатку тексту;
верхньо1иу рядку екра11& 6уде розм1щене головне 1шен|о' а в 61г!+Р99п - перейти до к|шця тексту
ни'к1{ьому - опис деяких функц!ональ:тих клав!;ш.
1{об актив!вувати (ув!йти в) головне ш[ен1о' потр!6но на' [| акорди па1у1'ятати не обов'я3ково. Фпис пер1пих чотирьох
тис11ути на клав!тпу Б10. } розпоряд:тсеттн! користувача будуть *:с:бпните, актллв!зувавтпи пункт головногт} менк) Ё6!| (А!|+Ё).
так! пункти ме1{к): 3. 8кщо очевидних помилок }1е1шао' програ1шу 1ио}кна ком-
1!|.'!!овати ! виконати (г10=+Рцп або за допомого1о комб|нац||
Р1!е _ для роботи з файла:ши; 6|г!+Ё9).
Ёё|| -_ для редагува[{}{я файлу; ;*::гпв|.тп
4. ,Ё,кщо система виявить си1ттаксичн! помилки' то про це
$еагсп ддя в!дтцукання (зашт!ни) з&да1!ого фраг:иента бм71с: негайно пов!домлено. $урсор буде в РяАк}, де допуще}[о
тексту;
!!!|милку' або безпосередньо вказуватиш[е на позищ|:о з по1шил-

118 119
г 1{о!о. на екран| з'явиться рядок червоного кольору з пов|допл- 2. [ирективи препроцесора. Ёаведемо директиви препро-
ле}1ня}и ттро зтш|ст по1цилки' що суттево полег1шуе |! виправ_ !ц()сора та [хн| 3начення (табл. !0):
./{я|{ня. €ередовище пере6увати1ше в реэким! редагування | по_ ! аб лшця 1 0. !шрекпъшвш препроцесора
1иилку 1ио}кна буде виправити. 1епер вдруге кошлп|лтототь | ви-
,{иректива Фпис директиви
!{ону1оть програму (натиска:оть на 61г!+Б9). Биправлятоть нас-
тупну по1у[илку у раз| потреби ! т.д. # |[ороакня директива. Ёе задае акодних д!й
5.8ктцо синтаксичних помилок не виявлено' але отрима- #0е!!пе 3адае сталу або описуе макрос
н| результати програми неправильн|' 3а допомого}о коман71 1_{хо директиву мо}кна розм|щувати у середин|
Рцп э 5{ер омег (або гв) викону}оть покрокову комп|ляц1то. [а- #е|!{ умовних директив #!'6е', #!'пое{, #!|. 8кпдо стала
ко)к 1цо}*ст1а просте}тситу!, як 3м!н1о1оться 3начення зшт|нних ш!;ц (умова), 3аписана у ц|й директив1, визнанена (|с-
час коптп|ляц|[. .(ля цього викону1оть ко:т]анди 9ебш9 э \0а{с|ов тина), то викону1оться в!дпов|дн| команди
э А00 ша1с[... =) вводять назву зшт!нно| э Ф[< (натиска1оть нд {то директиву моЁ(1{а розм!щувати у середин1
61/+Ё7). умовних директив. ![кщо во1 отал! (умови), запи-
6.8кщо синтаксичних помилок немае' програма буде ви_ #е!эе сан| у директивах #.{ае' (#!{псе{' #!|) та #е[!!, не ви-
конана. Результати 1ио)кна ло6ачити у в|кн| результат!в' для значен! (хибн!)' то викону1оться кош|анди, що м|с-
чого натиска1оть на А!1+Ё5 або використову1оть заео6и пункту тяться м!:к лиоективами #е!зе та #епё!{
)ебш9. Ёатиснувтпи п|сля перегляду результат|в на будь-яку #еп6!{ 3ак1нвуе опио директив #!{6е|, #!!п6е!, #!|
клав|тшу, переходять у реэким редагування програ1ши.
)/казуе комп|лятору, що треба вивести в|дпов|дне
7. 1{об для 3аданого срр-файлу створити ехе-файл, посл|- #еггог
пов!дотилення про по1иилку та переривае його роботу
довно виконуеу|о Ё10 =+ €опр!!е =+ 9еэ1!па{|оп э 9!э&. Ёатискатот:, ||ерев|ряе умову. 8кщо вона !стинна' то вико]1у_
на А!1+Р9 | в поточний каталог на диску 6уде записано ехе- #!| 1оться команди' розм!щен! до директив #е!!!, #е!эе або
файл, який мох{на виконувати поза середови1цем. #еп6!!, якшто хибна _ то ц! команди не викону|оться
8. 1{об зберегти текст програми у файл! 3 роз1ширенням
срр' актив|зулоть Ё10 =э Ё|!е + $аме Аэ, якщо файлу да}оть ново |{ерев!ряе, чи ви3начена пев'1а стала. .$кщо стала
|:ш'я, або Б10 + Б!!е э $ауе (достатньо натиснути на клав|тшу Р2) #!!0е1
визначена' то викону'оться команди до директив
#е!||, #е!зе або #епё!|' якщо не визначена _ ц! ко:иан-
для збер|гання с}айлу з| старим ].мене:ш. ди не викону1оться
9. ,(ля зак|нчення сеансу роботи | виходу !з середови1ца по_
тр|бно виконати Ё10.+ Ё!!е э Ёх!1 або натиснути на клав|:ш| А!1+х. #!!п0е|
Аналог!чна до директиви #еп0!!, але перев!ряеться'
10. ,(ля ро6оти 3 програ:шо}о' що о на диску' викону}оть чи не визначена певна ста.'та
Р10 =+ Ё!!е + 6реп або натиска}оть на клав!тшу Ё3. Фдерэкитшо д|а- #.пс|цае |[|д'еднуе файл ваголовк|в
логове в{кно. 3а допомого1о клав'1п| 1аб переходи1ио в ни}кн|о 3м!н:ое л!чильник рядк|в процра1\м компйятора. ,[к-
частину в{кна ! вибираемо серед |мен файл1в потр|бний файл, #!!пе що програма складаеться з дек!лькох файл|в' то фе:о
натискае1ио на клав!1шу вводу. 1екст програми буде занееено у директивок) мо}кна явно вказату!' 3 яку!х номер!в по-
в!кно редагування. чинати тгсптеоа_тт|то оялк|в файл!в. тпо пй'едттутоть
11. Б!кон з програмами мо)ке бути дек|лька. |{ереходити ,(ае змогу 3а допомогото спец!альних команд керу_
в!д одно| програп1и до !нтпо| мо}кна за допомогото клав!тп! Р6. #рга9па вати мо)кливостями компйятора. !! д!я 3але}ки1'!,
1[об розкрити т1а весь екран чи 3горнути в|кно, користу}отьс'| в1д моакливостей певного компйятора
клав!тпе:о Ё5. 3рутно ро3та1пувати в!кна на екран| мо}кна 3а- #шп6е{ 6касовуе устат|овки вйповйно! директиви #ёе{!по.
собами пункту \:!!п6ош. 11{об закрити активне в|кно, натискс:_
}оть на А!1+Ё3 або клацатоть ш[и11|е1о на значку прямокутника ш 3. !аблиця код|в А$ст1. 1аблиця код!в А$с1| (Аптст'|сслтл
раштт1| в|кна. '\!суп4аг4. ёо4.е [ог [п|огпта[1оп 1п[егс!топ9е) склада€ть()'! :! /1!!()х
12. 8кщо потр|6на додаткова |нфорштац|я' натиска|оть нд
клав|тпу Р1 | читатоть 1нформац|йно_дов!дков! тексти шро сере- '!1!стин: базово| 3 кодами в!д 0 до |27 1розтширеллот з лс<;71::мг|
оз1д |28 до 2бб. Розгляньте таблицто код|в в|д 30 до 2|'л|у.
дови1це та синтаксичн| конструкц!! утови €*+.

120 121
!аблшця 1 1. 1|о0ц А-8(!1
7 !
ш
Розд!д 2
дт! $ъ6!
3АдАч]
#
{ {!*+ "|п1
аз45 6
.?
в9:;
6 \}! в д вс}э
7 г6нт 0 к ьшг{о Р|зних 3а тема1ши 3адач е 23. Б!льтш!сть аадач ма]оть тхо 25
ш Р0!5 т ш т т{ х 'т [:п7цив|дуаль}{11х завдань. Ёо:шер 3авдан1{я' яке штае розв'язати
э т,|\] 'аьс {:'|'удент' у к0нкретн!й задан| визначаеться числ01ш | - нотшерошл
10 Ёе*ч ь ;1 5ь1:ш ;;от1;[анта. Ёо:шер вар!анта _ це 1{о1шер студента в атсурнал1 або
11 1|Ф1)ц г з с 1.1 1/ 1'' !{}|(].,|о' утворе;{е з останн!х двох щифр но]шера зал|ково!
1а хуа\ ) -пдБ }{!!]{}кки. Фск!льки вар!ант|в 3авдань € ли1ше 25, | якщо ]> 2б,
вгдв у|йкл
!

1э, ж з 'п'сг :з|д числа -{ потр!бно в!дняти 2б а6о 50, а6о 7б. .{,к:цо в
1+ шноп Р туфх умс;в| задат! ттемае 1{онкретних даних' то !х тре6а задати на
15 цчшщ ъ ш ьэюя с'п:!!'! ровсуд' керу}оч?1сь {! зпд!стотш. $кр!зь ви1у!8гаеться скласти
16 а6вп д е жзий |||}()граму для розв'я3ування задан!. !/ к1нц| кохсно| програми
!!!;жж!
11{|
1? кл}!н п {п]||]0чити свое шр|звище'
![тд_ш
0
1-в 1} утшовах багатьох задач с посилання на функц1|. ||отр|6н!
г|ву::гс:1|[ сл!д вибирати в!д:тов!дно до 3наче}1ня числа п' яке
1 {!
1

!г!
19 [_

|1- !

][д1[ !'.1',!(!]кить в!д номера конкретпого вар!анта ! та умови задан|


+
20 ..п_ 1г

г_г {г;ч

г |,гц:::п. та6. 1). Ёаприклад' ро3гля11е1шо вар|ант 21. $[кщо в
,' {!
тРфх : ':
функц|я ! {; + :р(т), то | * 19
!|!! в с умс::л! деяко! задан| 3а3н&чена
,2 цчц]щ ъ ьх ь9юя = :| ! г 19 : 4Ф. Фск!дь}си ще число б!ль:пе, н!эк 25, то в!д ньо-
з{ ЁЁее т 1 уЁо- 1';; п:!71п.т!штаетцо 25 ! отримуемо нош{ер !ндив!дуального 3авдання
9г '{ш[ | и 4() * 25:1б. Фт:*се, ви6ираемо з таблиц| фушкц!то з номе-
|||!м ,! : 15.
|облшця 1. Функц|!
9 ц!й таблиц! коди в!д 0 до 32 3аре3ервован| для сиотом. п Функц|я #-{*)
них си1швол!в, коди в1д 128 до |75 \ в|д 224 до 255 _ для 9,2соз2х_|в!п*/1'1|
вол1в нац|ональних алфав!т!в, коди в!д 176 до 223 _ для 2 12'4в|п|х / 2'1] - 8,3сов1,2т
вол!в псевдограф!ки, 8а до]1омого1о яких 1!|о)'сна створити 3 эозх / 2.т1+ 9.1в!п{1'2эс+ 1)
складн! граф|нн! зобрахсення в текстовош[у ре:*сим! ек 4 з!пх / 3"|2 + сов*2|_ 8'3в|п3*
|!ертпа ни першт! дв! цифри коду поа11ача1оть }1о1шер рядка'
сов|2.т| / |'12 _ сов(3т - 2) + 6'1б
остання _ но1шер стовпця' на перетин| яких ровм!щений б

в!дний еи1ивол. Ёаприклад' чисдо 75 е кодом ведико! з!плсов2.тв!п(т * |'4'' / о'85 + т,\4
сько! л|тери $, а кириличн!й л!тер! )1 в!дпов|дае код 139. [ !з!п(2х - 1.5) + 3в|п4л! + 2.38
1.1 совл2в!п(2х_1)+4.29
1
|) еоэ(х2'ц + 1) _ !в!п2т - 5'76'
|0 в!п.т _ созл3в!п(л2 _ 4.2| + 4,27
!] !в!п12тсоз!2х\ / 3\ + 4.2!
!2 совт3 / 2,\ * еоэх2 / 1,| - 8,3з|п(3* * 1)
!|! в|п.зс2сов*3 _ з|пт * 5,2
|4 2в|п*я]п(2л _ 1.5)соз(2л + 1.5) _ 6

123
?х_4)_ц.дц трьох трф, як| напов1{1о1оть
0,1б - 5,8 [[л.}вести продуктивцост| роботи
бкйьки води набра:то в басейн|?
6асейн,1 час ]хцьо! роботи.
+ 10,51
* ]1,73сов(т"6, _ !(!.8ку площу ! периметр 1шати]у{е квадр&т' описа:тий навкодо
1 круга задано| площ! 8.
17. ?!ло пад&€ 3 црискорен1{я1!| 9. 8изначити шройдет*ий т1до:и
4,5 - 9,7в|Б[7-}|1 1шлях }т : 9ф / 2 п|сля пертшо[ та друго1 секунд пад|ння.
|8. Фбчислити периметр | площу пр,я1шокутного трикут}{ика за за-
0,1 + 9,4-Б@7! !{).
дану{у[ц катета1ши.
1елефонн| розтшови 3 трьом8 населени1у!и шункт&ми ко11]ту,оть
!],2сов12л _!!! €1, €2, с3 коп/хв. Розтшови тривали |,1, 12, Ё3 хв в|дшов|дно.
,{,ку суму 1тарахуе коштп'тотер до оплати 3а ко'*с1{у ! вс! роз-
3адата 1' тшови?
пРоста проц)а1ша. €класти | 20.Ф6числутти пдощу б!чшо[ поверхн! 8:2пгА та об'ем |: пг2!т
ра]иу' 3адав1|1и'(уэ*се
вх1дн!
виконати прог.
дан! самоЁт!йн'. д|этски за 3ада1{о1о висото1о |а та рад!усом оспови ,".
1. Бв|ткова клумба_мае.форму круг&. ]] | . }{в|ткова клум6а мае форшту кв&др8та. Фбчислити {! перитшетр
66чцелпти |! периметр |
- :]'щу 3а 3адани1ш рад1усй.-
2. ! площу 3а заданото еторонок).
]трямокутного трикут1{ика ',',2.96числтати катет т& площу ]трямокут}{ого трикутника 3а 3ада-
38
"'.1:;?#11*::ч":*:-:::зу
Фбчислити дов)кину ;"; ;-;;;;у
нитши г|поте1{узо1о та други1ш катето1ш.
крула 3а 3адани1и д!амет. 1]!}. Фбчислити сторот{у та площу 8 : а2 / 2 къадрата, якщо в|до-
ро]у1.
;ша його д|агональ 4.
96чиелити площу б|чно[ поверхн| 8 : пг1 та об'ем у :
4.
*Ё;ж']:1"нт'ф.'му р|вноб|тно| трапец|!. Фбтислити [1
24.
пг2п 1 3 конуса 3а ваданото висото}о }а, тв!рното | та рад1усотш
5.
|;;;;;;#;"1;"'а:ну#}##:т"-ж8,5Фгрн".-,""*"*,
к[ по 2,40_грн'
с1шетану &2 -&3 основи г.
вертпки $! п' а,:Ёгр/ ;;;;"*". !||-;. |{о!зд !хав Ё1 год в! штвидк|стто р1 к1у|/год' [2 го!, з| тпвидк|сть
потр!бн! ддя куп!вл:
;ы:*"' '*р"#**
продукт!'в, | загальгту о2 | ф год з| тшвидк!стто о3. [}изнатити пройдеш! :цдяхи з
6. р|зното :пвидк|стто ! весь 1плях.
ма|оть доба, тиэкдень,
7. 3:.*:у-тку}{д
;''|жгж.":::т:т, ! ?п, ;-;:';;;г;';; р!к?
";;;"".1альну Р : 3адача 2 (про трикутник). 1рикутник 3адано координата-
задано! масу[
;}"?::1^:,.:а.о.
штвидк!ст:о ;;;;;;ж;ъ;; 7пвп
Аз!
ми вер1пин А(0; Ф)' в(';
'_1)
та б(_/; |*1), де ! _ нотшер вар!анта.
! . Ф6чутслитц висоту !т' та 6|сектрпсу'||'".
8' товар|в 3росли на в;дсотк!в. ||. Ф6члелтттта тиед|ану тп' | 6|сектрътсу'\|'5.
*ж#ъж.види р 8ивести стар!
;!. 06чутслуттп б|сектрису '1|'' та рад1ус впис&цого кола ,'.
9. Ф6чтаслптц площу поверхн|
5:4пг2 та об.ем |: 4пг3/ 3 сфе_ '| . Фбчислити висоту !т., 1 мед|атту пъь.
-_ ри 3а 3ада1{им рад!усом г.
!л. Фбчислити штед|ану &6 та 6\сектрису'||'".
10'пт;##;;ъ;;''"" 299792 км/с. $ку (|' Ф6чиелтцти б!еектриоу Р', ! рад!ус опио&ного кола Ё.
в|дстань дола€ св|тдо за
11. ]/вести вройайн|сть трьох 7. Ф6чрхслцти висоту !ъ6 та 6|сектрпеу'\|''.
площ! трьох'тг:']Р;" сорт1в птш-ениц! (в6, 4о, 44
т/га) | |{. 66чиелити висоту }ъ6 | мед|ану тп".
3 ко}|(ного поля | з трьох "'й-]",). с;й;;;{'11"=,*"*'ц;
9-чд-ц'д,д |). Фбчислити висоту !ъ' та рад|уе вписа|{ого кода г.
пол|в разопт ? !(). Фбчтаслити штед!аву га" | б|сектрису'|1/'.
12' Рад!ус й!сяця 1?40;;.'ь;;;;;;;
.*-""^"' площу поверхн! 8 :
об'ем планети у : 4пг3/ ь. 4пР та 1 ! . Фбчиолити висоту !т.6 та 6|сектриеу'\|'".
-- !|''' Ф6чцслцти тшед|атту пт" | рад1уе впис&т{ого кола. г.
13. Фбчисду!тц дов11<у\ну г|потет*у3и та площу
кутника 3а зРпаними двома й''*'й'. [тря]цокутного три_ !1]. Фбчислити висоту й6 та тшед!ан! &*
14' Фбчистпгти оо'# т8 пло11п/ |'! . Ф6чпелттти мед!апу пь' | рад\уе опис&ного кола .8.
б!'дтто! ,.""р*"; кфа, | [г. Фбчиолити мед|ану т'а та 6\сектрису'||'".
ят<що в1дош:е ребро.

124
125
16. Фбчисдити висоту |а" | 6!сектрису'\['а. !. |[вести |{о1\4ер студента. 8ивести його пр|звище та 1в!ц|али-
17. Ф6чисдити тшед|ан! &6 та рад'ус вт|иса;1ого кола г. :|. € дан| про а8томо6й| нотирьох тшоделей. ,{,к вх1дне д&не ввести
18. Фбчиедити висоту }ъ" | мзед|ану тп.. ко}[ер тшодел! й отри:шати характериотики: рй витуску ! ц|тту.
19. Фбчислити :иед!ан! 7п6 та 6|сектршсу'1|''. :.. 8вести }{омер по!зда. Бивести т1&3ви пу:ткт!в в|дправлешня т&
20. Фбчислити :иед|ан! |пс \ р&д!ус о1тисашого кода л. при3наче:т1{я.
2|. Ф6чцслити висоту й6 та б!сектршсу1г|'6. ,1. Бвести пер1шу л|теру на3ви кра|ни. Бртвести 8а;!ву !1 столиф та
22.06чцслити висоту }т6 \ мед|аву пъ6. кйьк|сть н&седен}{я.
23. Фбчисдити висоту &, та рад!ус описацого кола.|?. [л. 8вести 11опдер двя ти'1{1{я. 3пвести його ттазву дво}да 1шов81ши:
24. Фбчпслити виеоту !о' | 6|еектрлсу'||'6. укра|нськото та аягл!йсько:о.
25. Фбчислити висоту !т' та мед1ану тп". (|. 8вести но1иер трамвая. 8шести 1т&3ви йото к!нцев:о< зу']ивок.
'! . 8вести ттертцу л|теру ц&3ви кратни. 3ивести на3ву ко1[тишевта
3адата 3. Ровгалу}|сепня. |,/вести дов!ль[те т& та |! плоп1у.
обчислити 8начення фу:ткц|] 'на'че1!}тя ' н. 8вести тто]\дер тш!сяця. 8ивести ||азву шори року дво]ша 1шова-
тши: усра!нськото та яттгл|йськото.
< :о, !). Бвести 1{опдер студе|тта у списку. 8ивести його !:ш'я.
", _ [[,-э<о:, "кш'
[4*з(о), якшо :.о,
|*|

|*|
> !(). Бвести йер:пу л!теру }1азви м!ста. 8ивести дов|дку про к!ль-
к|сть населення ! площу м!ста.
де 0=с9@+о|-:овдР+т|, о ="{7;;{т, | _ но:иер вар|анта. ! |. 8вести 1{о1иер ввтобуса. Бивести к|льк!сть 3у|1инок його
€клаети дв! програми' використ0ву1очи: 1!1ар|шруту.
!1,}. Бвести л|теру |{авви кра:ни. 8ивеети к!льк!сть цасе-
1тер1[1у
1) повну ко1иа|тду ро3галу'*сенвя !|;
лешт]я ! к!льк!сть тш|ет ц!е! кра!тти.
2) коротку ко1\{ах{ду роага.'тухсення ![. !:1. Бвести телефовний код райцетттру. Бивести його шазву.
Бх|дн| дан! (х, а, 6, с,4) увесттт в клав!атури дов|льн!. Ро- 1,1. Бвести нош,ер дня ти}к!{я. Бивести ро3к4д пар у цей детгь.
3ульт8ти о6числень вивести на екран ! у файл. |{,. € дак! про ш|сть товар!в. 3вести числовий код одвого з вих'
отри1цати довйку про ц!цу ! кйьк!сть товару на склад!.
3адача 4. Розгалу!шеввя. Ёехдй оплат8 роб!т залеа*сить в1д 10. 3вести номер м!сяця. Бивести к!льк!сть д:*!в у ньому.
ттш{ виконано! роботи чи виду п|дприемницько! д!яльттост[
(А,
17. 3вести числовий код групи. Бивести повну :|азву групи |
Б, 3) ! нараховуеться аа фор:шулото к!льк|сть студент!в у н!й.
|1оо|['-2('' + 50| для роб!т типу А, ]н. Бвести 1{о1!дер йсщя. 8ивести ттязву:и|сяця | шомер ква}}та.'гу.
и = ]\5||[а*'(;) + 100[ для роб|т типу Б, [!). 3вести ч!ив':о з д1апазотгу в! 0 до 5. 8твести його натдтсалш*я ,рош[а
[200|/,+4(') + 135| для роб!т тишу 8, мов&ми.
_ но1у|ер вар!'анта. ,(ля
роб1т типу А податок ста1'овить
Бвести т{о1шеР по!?да. Бивеоти дов!дку про час в!дшразлення.
49 ' 1}!{}.
1ооА, для Б _ 16%, А[8 в _ 2о%. ]/вести тип '}| ! . |}вести пер|]ту л!теру на3ви р!вки. 8ивести дов!дку про !1 дов-
нараховану суму' су1![и податку ! суму до видат|. роб!т. Бр:вестп| кйьк|сть 1тр!(гок.
эпсину |
Розв'язат}| 1|!]. !}вести числовий код суз!р'я. Бивести к!льк!сть з!рок у
з&дачу чотирьма способами' використову1очи:
1) шовну коту[а1{ду ро3галу}1сення !|; 1!|, 'тьо1шу.
!}вести 1{омер дня ти'{свя. 3:двести йото шазву |' к1льк!сть пар.
2) коротку ко}данду ро3галу?|{екня !|; !|4. |}вести номер квартири в 6удинку. Бивести к!льк|еть к|:шндт 1

3) коппанду ви6ору зтш![с!; 4) котшанду мелпканц!в у н!й.


9о|о.
3адача 5. 8и61р. бкласти програму для розв'я3яттня паво. }{б. ]{'весттт чис]то в д!апазоту вц 5 до 9. 3тдвес:тд його зттачетлня '|'рьомд
мов&ми.
де|1ого нихсче 3авда'ння дво1\[а способами' використову1очи :
1) команду зш|{с}:; {}адана 6. {икли. ?а6лиця м1р. |[обудувати таблицло в!д_
2) 2) ко:шанду !{. :;г::г!71ностей м!шс шт!ратши. |[очаткове 3начення м!ри, :срок зтш!-
|{ридутшати 1 задати вх!дк! дан1 так,
щоб виб|р 6ув з {Ф[}|. |'!| |(!'ого 3начепня та к!льк!сть рядк!в у таблиц! (10 _ 1б) за-
ръох _ семи адьтернатив. ,1.!'!']| с&1иост!йно у реэ*сиш:! д|алогу. Фформити та6лиц:о якттпй-
|
!. ! | | {о' використовук)1{и форлпаттт виведен1{я.
'!

126 \27
1. 1 унц|я :: 28-353495 т : |42 карати; 3адана 8. |{икли. Ф6численця суми зпакозм|ппого неск|н_
2. 1 1рахут !.77]85 г:0'06249 унц!й; |!о!|пого ряду. Фбнислу|ту! суму 2'н , де аь (-1| ['*т@,)"'
3. 1 карат -_ |-2 т: 2.94|2 тран; ряду =
ь=7
п!'
4. 1 грйн:0.068 г:0.038378 драхш:; | _
т дов|льне дане
- ношхер вар|анта, з шрошт!этску (0; 1) 3 точ-
5. 1 па*ш :54"\8 :пек: 417'33(с1ш,!_:
л; :
::|стто е 0,001. €к!льки потр!бно доданк|в для досягнення
6. т "'"'" (брит.) : |.2 талотт : 3'785 4'546 л; :;:пдано[ точност|? Биконайте програ1шу трин| для р|зних
7. 1 галон (стшд: 0.0347 сак уу;

8. 1 нарка :: 0.0568 л : 0'00012 туайута; ;!|!{|чень точност|.


9. 1 квартет : 29! л: 5123'24 нарок; 3адаиа 9. 1{икли. ?абулговання фупкц1| | пошлук даних.
10. 1 страйк 72.73 л:1'280'46 чарок; !11>ота6ултовати функц|1о у: [а+в(х) на прошт|хску [0; |] з кро-
11. 1 челдрон: 1.309 д:0'149 пека; :с<;м й : 0.1!, де _ но1\[ер вар1анта. Ревультати обчислень
12. 1 сак: 109 л:1.499 страйка;
13. 1 цек : 8.81 л: Ф.|7929 сака;
!|!{|]ести у вигляд! 'таблиц| пар чисел х, у. 3иконати 3авдання
т *,рд малий :3.624 куб' шт ку6' фут|в;
:-\^2-8 ||()|цуку даних в!дпов!дно до ва1пого вар|анта. ,![кщо 1шуканих
1+.
15. 1 стйттдарт : 4-672 ку6- шт : 0'16б рода; /(,!|{их нема€' вивести про ще пов!до:шлення.
16. 1 род :2в.в ку6. ти : 1000 куб' фут|в; !. Ф6чутелуттц суму ттертшого й оста!{нього значет1ь функц|[. Биз-
1т. т буд|вельний:30.48 м: 100 фут|в; начити к!льк!сть ус!х зттанень.
18. ! ""а" :
ф|нгер :11.4 см 4.5 дтойм|в; ']'- Ф6числуттц суму й до6уток ус!х знанень функц|[ у, д]!я $ку[х
19. 1 йейд : :
б.? стш 2.25 дтойтц!в; викону!оться нер|вност\ у < -3,2 а6о у > Ф.
20. 1 фут : 0.3048 мл: |2 дтойшт|в; ;!. Фбчислити до6уток та к|льк|сть ус!х з!1ачень функц|| !, Аля
21. 1 ярд : о.9144 м: 3 фути; викону1оться нер|вност| у < _3 а6о у > 0,4,
22.\ к16ельт Брит. :0.183 кти : 680 фут|в; 'тких
'| 0бчислити добуток ус!х в!д'оштт{их 3начень функц!! у та в?т-
23. | ка6ельт €йА :2|9.5 м: 72Ф фут!в; .]начити к|льк|сть додатвих.
24.1 дтойм: 2.54 смт: |2 л!н!й; !л Фбчислити до6уток зт{ачень аргуш[ент& (х), для яких досяга-
25. 1 мороька 1цидя : |-852 кш: : 6076 фут!в' !оться тш|н!мальце та макси1у[аль1{е 3цаченння функц!! у.
3адача 7. |{икли. Фбчислепця ск!нченних су1ш 1 добутк1в' |'. €к!льки 6уло в|д'етшних значень? Бизт*ачити ш[&кси1иальне
Фбчислити 311ачення зм!нно! 2 свого вар|анта: '!.
:}!{аченЁя.
!]изначити су1щ/ додатних значень функц1! та к!льк|сть в|д'е:тштих.
|\э:о*0; !|)э:о6-тт: \9\э:||2а-ь|; }{ ()к!льки в!д'етиних ! додатних зн&чень ллае функц!я у?
2\э:а0; \!)э:а_20; 2Ф)э:2а_0; !} ()бчисдити у{одудь р!зниц1 макоимадьт!ого та цер1цот0 3начень у.
3')а:|9(0)_а: |2\ а : 0а; 21) э: 19@ + 0);
1().
()бчислити добуток в|д'ештних 3начень функц|[ у' $ як\й тонц!
4\а:(о+0)21 13\ э -- соз(с0); 22)а:|п|о+40|; ! (.г) функц!я набувае ш[акси1иадьного значення?
5)э:5а0_4; 14)а:1а-ь1; 23)а:3а0-0; ()6.тислцти су{шу квадратБ ус!х додатних зт{аче1{ь функцй у. Биз-

6)э:в1п(о)+0; !5)э:с\9(2а)-0; 24)э:о*ехр(0); !!11чити' для якого л функц|я набувае тий|:шального 3начення.

|6) э : 25)э:5а-20. ()бчислити супду та к|дьк!сть додатних 3начень функц|| у.


7) э: аь7 ехр(3с}); !:1
()бчислиуп сушту вс|х 3начень функц|! !, Аля яких вико1{ут()'|'!)
8)а:о2+3ь; |7'1а:40а-0; ! ;{
(:'| нер!вност| у < |'2 а6о у > 4. Бизначити 1у|аксим|1.]||)!!(|
9) э : @ь1т7+' |8)э:2о_0; : } ! ! [чет:{1тя фу:ткц|[.
де ()б.тпелу1ти добуток дода.тних зт{ачень | к|дьк|сть в1д'емттттх.
,+5 ,+8
()6чтаслитц добуток ус!х знавень функц||
!, Аля я|{их с[|р1!|]/()|су_
,-'{к) ,
. =|! =п!!-6(!о ,
ь т:т':,ся нер!вн|сть 1 < у < 3,1. Бизначити' для якого т (;у:п:ст1!.::
::тбувао 1иакси1иадьт{ого 3начен1|я.
|<= т

| _ номер вар!анта, Ё _ц|л| числа' Функц|| | втт6рати


з табли- ;

116,гислитут к|льк|сть | добуток ус|х в|д'емних знд1!е!|ь ]/.


ц!. Бивести 3начення [, а,0, 2. 1)6стислити су:т4у квадрат|в | до6уток ус|х зтланетть (;ут::с;1!| :7,
./(.||'[ яких справдх{у€тьоя нер!вн|сть -2,4| < у < 5'

129
12в
та :и|н!:шального 12. Ф6чпелити су1шу збитк!в, що були у 1![еясах -7бо < ур< 200 (в
1шаксима-тьцого
18. Фбчисдити модуль до6утку у.о.). $оли дох!д був м!п|тиальпий?
з11ачень' встх-: в!д'еттштих значеяь фу*тсш!|'
!1]. Фбчислити су:иу прибутк!в ! збитк|в а& шершт| с!шт рок|в
Фб.тислити серед}1е арифметинне
1_9. та'йттдо к!'тьктсть' роботи та !х р!зницто. 8извач]4ги 1ша]сси1шадьпттй при6уток 3&
2Ф. Ф6чиелити с}'му ййй {"и додатнш(-3начень
тчх зн&чень функц!! у' дт$ якутх цей пер|од.
2|. 3найтутсеред1{е а!и6ш:етивне^ 14.Ф6чпелцти суми прибутк!в,- що бу4и в 1ше'*{ах у1<17Ф а6о
викону1оть"" у < 0 або у > 1' ур> 62Ф (в у.о.). €к|лъки рок|в ф|рм{ мала так| прибутки?
""р1'*Б"т| а т&кохс визначити 3на'
22.3найтутм:н;мал|не ""'*6"*' функц!!' !{_л. Фбчисдити суму збцтк!в 1 визначи4и, ск!льки рок!в ф!ртша
!!е11ня 8ргумент&' для якого воно досяг&еться' була збитковото? !/ якошту роц| збиток був макси:шадьний?
тих значе}1ь функц!| у, д][я яку[х
23. 96чттеух*'" "у*у та к!дьк!оть |(!. 8изпачити найб!льший збиток. )|' яко:шу роц! ф|ртиа штада най-
< 1'
виконуетьоя нер!вн!стъ 8 <-у
тих зн&чень функц|! !' !''|$'
24. Ф6числ'.* *:,'{*]"т" : д'буток < < 5'
б|льтций шрибуток?
!?. } як| роки ф!ртиа пдала вайб!льпт! шрибуток ! збиток?
яких викот{уються нер1вност! 1"3 у чи в!д'емних?
!|}. Фбчисдити су]шу збитк|в. т{и 6ув хоч ра8 нульовий баланс?
2б. $кттх3}1аче1{ь функц!! 6йь:це: д'д*{"** !!). Фбчисдити суми прибутк|в ! збитк|в ф!рми та |х р|зницто. Би-
Ёехай прибуток ф!рми аа значити м&кси1ша.'тьний вбиток ф|ртии.
3адана 10. Фдновипг!рн| ш!асиви' ууоввих оди' ]!(). Фбчислити су]шу збитк!в, для яких с1травд){суеться }]ттова }р<
1о-й р1к обчисл:оетьоя за ф'рмулч ур:||$[;,.9(Ё) _590 або ур> -336 (в у.о.). Бизначитити найб|льтз:ий прп6у-
ниць' де ь:1993;"1й, "', )ооз;"!-_
*'*"р вар|анта' .{,кщо
ма''1а при' ток ! в яко1шу роц| в|н був отритшаний?
тцо ф!рма пев1{ого року
9ь> Ф, '' *'**'{й*"*',' Бивести }т8 екран табли_ 11 ! . Фбчислити суму в6итк|в ф|ртии. ||' якотшу роц| прибуток 6ув
буток, а у випад"у'у|''о_ "6у;:у' найцдетттпий? 8ианачити його величину.
11риоутку'
ц}о: номер Рок9, величина д!яль:т|еть ф!рми
1''?'. 66числцти середн| арифштетитн| вс|х прибутк|в | з6итк!в.
|1отшук *.'";:"'?;;;;;;и; ф!нансову вавдання ватшого
1|!]. Фбчислити суми при6утк!в ! з6итк!в за пер:ш! п'ять рок!в ро-

!тротягом десяти рок:в' БикБнати додатково боти. 6кйьки рокБ п1ютятхэ1и цъого пер!оду ф!ршта п:ала прибугки?
;шука'
вар!анта, **"д"*Ё ви}кче' Бивести пов!домле11ня' як1цо !|'| . Ф6числити су1шу прибуткБ, як! 6ули в ]у[е*{ах 315 < ур<958 (в

г{их даних нема€' наприклад' як1цо зб!тк|в ни прибутк!в но у.о.). у яко1у[у роц| збитки 6ули найб!ль:ш!?
}![!. !фли при6утки булпт бйьтп1, ш!ак 580, та :шен:ш!, н!шс 100 у.о?
було взагал!.
макситшальний 1{оли був макси}ца.']ьний прибуток?
1. Фбчисдити суму при6утк|в ф!рми' 3изначити
збиток (якщо з6ттткя 6ули)' 3адана 11. Фдновипл|рв! масиви та складпий полпук. ]/тво_
2. Фбчиолити сушгу з6иткБ' 1[' якотшу роц! збтгток був:шаксимьтгьнутй?
1:::'ги | вивеоти 1у[асив у 3 елеме1{тымп уь: [о+то(Р), де !
_ но1шер
та |х р!звицто. $о'
3. Фбчислити ф!рзли шп1;!анта, Р : 1, 2, ..., 7. Биконати завдання ватшого вар|анта. )/
",*;;;;й;;;-'_,;й"!'
був максит!1альт{ии{
ли прибуток
було ментпе' н!"эк 1000' ало ;ш:;т! в|дсутност! тпуканих да}1их вивести шро це пов|домлення.
4. к€ йьки р.*;' |"]"_й-й!су'кь найб!льших збиткБ? !, [{ертпий додатнтй еле}{е:тг цомйяти :ш!сцятшт 3 макеипдаль}ти:ш.
бйьтше, н!гк 500 у'о? 1{оли ф!ртша "**''"'
при6угок був найб;_тьптий? ц' 1]найти су}ду третього та 1постого додатцих еле:утент!в.
б. 0бчиолити "упщ з6иткь. ]/ якотшу роц!
*й"! 6<у67|Ф (в у'о')' 9 !!' /{ругий в|д'етиний еле1![е]{т заш:!ттити :и!н!тшальтти:ш.
6. Фбчисдити суш:у прибутк!в у-.
найб!льтпих збитк!в? ., 0кйьки с елеме:*т|з з:ттй!:утапьним з|{аченням се;;эед додатних?
яко1у[у роц| ф!р#а ?00 у'о? ||' 9с| додатн! еле:шенти масиву' кр!м макси1ш&ль}{ого' 3&т{ести
"Ё,*''.
'1. €к|льки рок!в шри6утки були ' й*й'"
в!д до 200 в
!пт:ций 1шасив.
8к! це 6ули роки? 0. ()бчислити су1иу пер]цих чотирьох в!д'етшних едемент|в.
8.Фбчислити"у*у.'":*збитк!в.!!/якомуроц!збитокбувнай. \ !}ивести во1}!ер передостаннього додат;{ого елемент&.
ои{тши*т .9;кий це був збиток? ; !,]дештенти 1шасиву п|сля другого в!д'емного 3а}{ести в
для яки]' справд)ку!о-ться умовг[
9. Фбчис.тддти "р.у1"" збиткБ' визнан*'"
!нпттий
мпсив.
ур< -650 або ур' -т8о]! у'о')' з6итк!в' ч"9'*.ут^у:6уток'
6к!льки рок|в ф!рмо !|, |]гтайти добуток другого та четвертого елемент{в, б|'гльтпих,
10. 8изначити су1\ди "й"Ёй:" ! ::!эк 3.
була при6утковою?
,'!"оу'кБ, що бууп: у ме}т{!!!к 23^0'ур< 8500 |(!. [!1дксималь:ттд:1 едешхент по:ш|вяти шг!сця:тшт з др},ти]\[ щ/дьови1ш.
(
11. Фбчисллати
"у*у !!' ()станн!й в!д'емпий едемент зам!пити найб!льц:им.
мада так! прибутки?
у.о.). 6к!ль*', р'й!* ф;р*'

131
130
15. 9 ск|лькох ос!.б зароб|ток вищий за оередн!й?
|2. Ф6чиолутти добуток другого в!д'ештного та ш'ятого елемент|в' 16. )/ якому п!дрозд|л! менцтий середн!й зароб|ток?
13' 9и трет|й додатний елеш[ент е останн|:ш у масив|? | 7. ]/ ск!лькох оо!б зароб!ток в!дхиляеться в!д серБднього мен тпе'
|4. 3ив€х,уино1!1ери двох най6|льт:шос едеште:гтБ. Ф6'*тсуштуц й сушгу. н!эк на 10% ?
15.9иедваеле1у[ентисередв!д'еш:них|зм&кси1ша]1ь}|и1у{значеЁ. 18. 9 якотшу п!дроздй! був зафйсовавий вайб!.тьлпий заро б!ток?
ням? 19- €к|льки ос1б працтовали б!льпте, н! э*с 5, | 1шен1ше' в!э*с 12 дн|в?
16. 1!1аксималънпй еде1у!ент цо:и|ттяти м!сцяш:и з четвертий'
14Ф
20. $кцй середн!й зароб|ток пер1цих л'ятл ос76?
задовольняе уш[ову !ь> |' 21. ]/ ск|лькох ос!б зароб!'ток був :шенш:ий за середн!й?
17. [рет|й додатний еле1шент вам|нити макси1цальним' 1|2. $нутй середн|й зароб|ток останн|х вотирьох ос!.6?
1 8. 8изначити но1у|ер п'ятого в!д'емного ]/ якотиу п|дрозд!л| 6уло в!дпрацьовано б|льтшу к1льк|сть л:о-
еле1шет{та' 1]3.
19. об.'""'*.* добуток пертпих трьох додатних елеш:ент|в
та
дино-дн|в?
визт{ачити |хн{ номери. 1]4. \то заробив б|льтше, н|ак 100, ! ментпе, н|э*с 200 у.о.?
20. Ф6числити суму другого додатного та третього елеме1{т1в' ||11. €к|льки ос|б прац:овали два' три або нотири дн|?
ат.друтиьв!д'етшний*,'"*"*,пом!нятитш!сцями!зтрет|ш:додат. 3ав0ання п[0вшщено[ скло0ностп1. Ака к!льк!сть в|дпра-
ни1ц. !(|,ованих дн|.в найнаст|тше була заф!ксова|{а у коЁсно1шу п1д-
22.!творити ш[асив еле:шент!в, 3начен}1я яких 6 ут|эк значення:ши 1:стзд|л|?
третього та 1у!акси1!|адьного елетшеттт!в задаЁого масиву'
23. Ёутвести добуток вомерБ двох найтшен111их елеш:ентБ серед додат' 3адача 13. ,{вовити!рн| 1шасиви. [|ростий пошу1с. )['творити
них. м1!сив 3 елементаму| с[ьп: п[;+тт(А) + в!п(й)[11 э(п), Ае | _ ноштер
24. Булзначутти с},т/гу номер!в другого та третього вц €1!!$ого т;:п1;1анта, Р, п :|, 2, 3, 4. Бивести його на екран у вигляд| таб-
€'71€'

штегтт!в. .г::::ц| (:шатриц!). Биконати додатково 3авдання ва1пого вар|анта.


25.3ивеетут номери другого та четвертого додатних елеме11т1в' |. 3изначити |ттдекси шт1тт|мального еле1цента ]шасиву. Ф6чиолцтут
3адача 12. \у1асутв!в !з р1зпого к|льк!стк) еле1шешт|в. ]/ п|д' добуток його в|д'етшних едетшецт!в.
сп|вроб!тник!в, а в 6 _ 20. |[ротяго1ш ш!|сяця во- !,. Фбчислити к|льк!сть елеш:ешт|в 1ш&сиву' для яких виковуеться
розд!л|'1 е 15
йи в!дпрац|овали певну к!льк|сть дн!в, яка зада1{а як випад' нер!вн|еть|<ар'<6.
*''"'*']"ло 3| 3наче'й"* в!д 0 до 31. [енна оплата прац| |!. Фбчислити добуток 3начень тих
_!
едеп[ент|в, для яких справд'ку-
ё у.о. ||одаткова ставка 2о%" !!/творити масиви !, 8, вивест|4 1оться нер|вност! анп< а6о ар'} |.
3начення [хн|х елепдент!в на екран та у файл' Биконати 8ав' '
,| Ф6числити к|льк|сть додатних еле:шент|в та |хн|й добуток.
дання по]шуку даних 0ля юоэюно?о п'оро301лу' Р.ивести пов!'
ь. Ф6чтасухити суму квадрат|в елештент|в, зттанення яких 6|льтш|,
:т!эк 1.
домлення' якщо 111уканих даних немас' |}. ()6числитут добуток квадрат|в тих едемент{в ш:асиву' для яких
1. €к!льки ос!6 працтова]\и у ко}кнош!у п|дрозд!л| 6|дьтпе 16 !|иконуеться нер|вн|стъ |ар'| < 3.
дн!в? '!
' кйьк|сть тих еде1!1ент!в :иасиву' для яких вико|ту-
()6числиттт
2. )(то найшлентпе заробив у ко)*спо1шу п!дрозд!л|? пйроздй|? ор'> 3, та с}|1!гу елемешт|в :шец:пттх, тт|пс 9.
п;'гься нер|втх|еть
3. 1{оплу нарах''.*,' бй'*е, н0к 100 у'о', у ко}кно1\((у п!дрозд|л!? 0бчислити добуток в|д'еш|т{их еле:шент|в. 8ивначити !ндекси
4. €к!льки лтодино-дн|в було в!дпрацьоватто у ко)кт1оуту '
'1. м{1кси1иаль11ого елеш!ет{та.
5. $кутй середн|й зароб|ток у ко)кно1шу п1дрозд!л|? н|эк 120 ! ()бчислити сутшу д|аго}|альних еле:шент!в 1шасиву та к|льк|сть
6. 6к!льки ос|б отрймали б!льтше, н!эк 50, ! ментше, у.о.? тз!д'омттих еле:утент|в.
7. 6к!льки ос!б працтовали мен1ше, н1ак 10 дн|в? !(). ()бчислити добуток тих едемет{т!в масиву' ддя яких ви1{о[|у-
8. ,[ка сума податку була сплатет{а у ко}т{т{отиу ш!дрозд|л!? с:з'ься нер|вн!сть 2 < а2'< ||.
9. )(то сплатив най6!л|тший податок у ко}тснош[у п!дрозд|л|? ! !. !|гтзначити !ндекси 1шаксиш|аль11ого еле]шента ш[асиву. Фб.пис_
10. ][' ск!лькох ое|б податок перевищив 2Ф у'о'? .:::тти добуток елетше}1т!в шад голов1{о]о д!агоналлто.
11. .![кий середн|й податок був у коэ*снош:у п!дрозд|л!? !1| ()б.тислити добуток еле:шент!в пер1[|их двох рядк!в.
12. ]/ яко:иу п!дрозд|л! б!ль:ций середн!й зароб!ток? ]|! ()б,лислити су1шу елеш:ент1в :утасиву }|ад головното д11::т.олт::.л:г<:.
13. {то сплатив ттайтшентший податок у ко){сноп[у п!дрозд!л|? ! :: значити |ндекси шт|н|:иадьпого еле1шет{та.
14. 6к|льки ос!б шрацтовали литце один дег{ь у кохсно}ду п|дроо.
|

| '! ( )|;,тислити су]иу в!д'ештних еде:шент!в. 3найти :шаксимдль:лий.


д!л!?

133
132
7-

15. Фбчислити добуток м !в|п:альттого ! махсимальвого еле1!(е1! т!в (;. €к!льки виборц |в ввяли )в8оть у голосувавв| у ко}|сво1иу
1иасиву. 1{аселево!ду шувкт| ?
16. 8изначити !вдекси м !н!мальнбго | ш:акси1шальвого еле1шет| т!в 7 - )(то з кандидвт|в на6рав м&ксималь}{у к|льк!сть голос!в у
1шасиву. другопду в&селеному пункт!?
17. Блету:енти 1и&сиву' що дор'вн:ототь цул!о' зам|ттити на 1. 3най - |]. Б яких населених пувктах к!льк!сть опит&них б!льтша дея
ти су1иу еле1у[е1тт!в п!д головно1о д|аго1та.'1лк). кого з8давого числа п?
18. !}изттачити к!льк|сть в|д'€1ш|{их ! сутшу додатних елепдент|в. {). 3а кого в кат:дидат|в пода}! о к!дьк!сть голос|в, 1иектпу в|д дея
19. Фбчислити добуток тих еле:шент!в, для яких вико}ту1отьс$ Б€- кого вад8ного числа п?
р!вност| оьп < _б а6о ар, > 3. Бизначити |:*декси м|н!ш:адьного |0.8 яких ва.селених пунктах перптий к8цдид&т вабрав мак еу!-
еле1це}!та. мальву к|льк|еть голос!в?
20. Бизначити !ндекси 1шакси1иа.'1ьного та :ш!н|тшального елеш:ент!в | |. [то з кандидат!в вабрав найб|льп:е голос|в у другому !
1шасиву. Ф6чисдити !хн!й до6уток. третьо 1шу васеле!{их пушктах?
21. Фбчислити добуток еле:шент!в над головно1о д!агоналлто :шат- 12. 8 якоттсу населеному пув кт! перший ка|{дидат на5рав :и|н!
риц| та ви3начити ]хнто к|дьк|сть. мальцу к!льк!сть голоо!в, а в якот|гу - птаксимальну?
22. Ф6чиеухпти середт{е арифтиети.:т*е дод&тних едетцецт!в ]у[асиву. !1]. )(то 3 к&т{дидат!в ш:ао :т[акси1шальний рейтинг?
23. Фбчислити суму тих еле1шент!в масиву, для яких виконуеться [4. Б якотшу }1аееленопщ/ путкт| щ)о1тэлосувало най6!тгьпте лтодей?
нер|вн!сть | < ап'< 5. 3ттайти максимальний еде:шент. 1б.9 кого з-пом')к другого' четвертого ! п'ятого кандидат|в най_
24. Ф6чутслити суму д|агональних елемент!в тшатриц| та к|льк|сть вищий рейтинг?
еле:шент|в, 3начоння яких 1шен!ц{, н|хс 3. |{!. )(то на6рав }{&ксималь$]|', & хто _ ш:|н!мальну к!дьк|сть го_
25.06числити добуток елемент|в п!д головшото д|агонадл}о на су. лос!в у пер1шо1шу т{&селе1{ош{у пу:ткт|?
1у{у еле]у[ент|в на головно:о д!аговаллто. !?. ]/ яких на'селених 1ту}1ктах перш:ий ! п'ятий кандидат набра-
3адача 14. ,(вовим|рн| масиви. 3адача про вибори. Ёехай ли 6|льт::е, н!х* 100 голос]в?
||}. 8к! но1шери }{&оеде,{их пункт1в, де к|льк|сть учаспик|в вибо-
гп!сть 11аселених пункт!в (Ё) познанен! но:шерами в|д 1 до 6, а
п'ять кандидат!в (п) _ номерами в!д 1 до 5. $!льк|сть голос!в' р|в ше перевищила 4б0?
[9. ]/ кого в к4}тдидат|в рейтинг 6|льп:ий в{д деякого 3адаттого чис-
набраних кандидатами у ко)1с11ому пу1|кт|' ви3нача€ться ла п?
фортшуло:о 8кп = |&[6оп(10! + 50)' де ,
_ номер вар!анта' а сума 2(). Б яких т*|стах кйьк|сть виборц!в 1![е!{тпа в|д деякого 3адаттого
голое!в' поданих 3а кандидата' виз1|&чве його рейтинг. Би. чиела?
вести на екран та6лицто результат!в голосування' де у рядках 1. ,{,к| ка.1{дид&ти набрали м!н!тиаль:ту к!льк|сть голос|в у ]{о)к-
е дан! 3 населе}тих пун1(т|в' а у стовпцях _ дан| щодо конк-
1]

но:шу !з населе1{их путткт|в?


ретних кандидат!в. Бизначуттп | вивести 31{ачення величин 8 |.}2. ,$,к| капдид&ти на6рали м&ксит'[а.,тьт*у ! тш|н|ш:адь|{у к!льк|сть
додаткового завда11ня. €творити одновим!рний тт!асив !з штука. голос!в в друго]шу | п'ятотшу н&селених пунктах?
ни1ши даниш!и. ]]1]. 9 кого 3 кандидат!в найментций рейтинг?

8к! п!деумков! !]4' 9 скйькох катц14датБ рейтта:тг перезитцу€ деяке 3адане чуюло п?
1. результ&ти ко,)тсного кандидата? ([/!0юазюаз
утворити однови:ш!рпий штасив !з су:ш 3н&чекь ус|х стовшцБ таб.
21->.в яких :1аселених пунктвх трет!й каттдидат на6рав 1шакси-
лиц|). м&льну к!льк|сть голос|в?
2. 8к| номери :!аселених пувкт|в, де к!льк!сть пода.них голос|в 3адата 15. Робота 3 1шатрицятши. } файл а.ЁхЁ ваписати 3п_
перев]!1цила 150 (1!0казко: )пгворити одт:овитш!рний тшасив !в с':<лбп:шитекстового редактора 8начення еле1шент!в ц!лочисель-
цтпс но:шер|в)? :п<л| :иатриц1 А розм!ротч1 пхп, а у файл Б.1х! _ 3т1ачення е'|е-
3. }то з кашдидат|в набрав м&ксимальЁ}, & хто _ :ш!н|тшальну мс:птт|в матриц! Б ровти!роти пхп, де п: 4. Ф6числити матри11то
к!льк!сть голос!в у четвертому шаселе|!ому пункт|? ( ] зг!дко з в&р|анто1ш' викориотавтпи
4. 8ка к!льк|сть годос!в була подана 8а перц|ого ! третьо|о 1{а1{. функц!! користува!!а. Рс_
1!у.,]ьтати обчислень 3анести у файл с.!!х!!.
дидат!в у вс!х н&селе}{их пунктах?
5. Б яких |{аседе1{!1х пу:!ктах другий 1 нетвертий к&ндидат}1 на. |' Фбчислити € : 1а'ат1э - 23
брали 1шакои1ш&льну к!льк|сть голос!в? ',|'' Фбчислити с : 2А.в _ в4
:!. Фбчислити с:А2.в- 3в2

134 135
4. Ф6числити с : (в.А - 5А.в;э !!]. Бивести дане без п ропуск!в. 6к!льки букв е в !пден!?
5' 06числитис : (А + 9в).Ат !!). 8ивести дов)кини трьох сл|в.
6. Фбчислити с : 3(Атв _ в) .в ||(). Бивеоти !м'я та к|льк|сть букв у пр|звищ|.
7. Фбчислитха с : 2А.в + в.А3 Бивести !.м'я, пр!звище.
.
Ф6чпсллти с : А3 -в2
]|1
8. ||14. Ёо;кну 6укву !мен| продубл:овати.
9. Ф6члслпти с : (А-в _ А2.в)3 ]|]]. Бивести пр!звище у 3воротнош1у порядку.
10. Фбчислити !: 5А3 - 8в2 ]],! . 8изначити ск!льки букв 'а' та'б' о у пр|звищ!.
11. Фбчислити € : (Атв - 3в1 'в |]]-;.3ивести трето сдово та к|льк|сть букв у пр|звищ|.
|2. 6бчислити 6 : (А.ат;з *
13. @бчислити €:4 '"
3тд: - 3з 3ацаза \7. 1екстов! дап1. 1{риптограф!я. ||ридуштати й
\4" Ф6числити € : А.в.А - 2в2 {)!!исати одовесно власний спос|б шифруват{ня тексту. €класти
15. Фбчислити 6 : (2А + в) .вт !!|)огра1иу для введення тексту як даного типу в{г|пв (до 255
16. Фбчислити € : (23.н _ д+;: ('!|мвол|в)' його :пифрування. Результати вивед1ть у файл.
17. Ф6чиелтати € : 8 в.А.в _ А.в4 3адача 18. 1{е ра3 про криптограф!го. Бикористову1очи
18. Фбчислити € : (Ат _ 7в2) .А створений п|д час виконання задан| 17, скласти програ-
19. @бчислити 6 :
с|л::{{л,
_ 4в
му детпифрування тексту. текст вивести на ек-
2Ф. Фбчислити € : ^2.^т
(6дт - в) .в3 '(етпифроват]ий
21. Ф6чпслпти 6 : (А)з _ 73:
|
;;;п:т у файл.

22. Ф6чтлслити б : (Ат3а - 5в) .в 3адача 19. €труктури. |[ридумати й описатут структуру та
23. Фбчислити 6 : (4Б.А * 3:;з ('!(.'гасти програму для створення 1шасиву з 1шести-оеми еле1иен-
24. Фбчислити € : 8.(вт1: * * :'!:; ц|е| структури й опрацтованЁя в!дпов|дних даних 3г|дно 3
2б. 66чтт'слтати € : 3 в.А.в _ 2А.в2 '/((.'|т{и1ц о}о)т'етом. 9 стоэкет| 3адати ! описати критер|й потпуку
3адана 16. 1екстов! дан|' Бвести пр|звище, |м'я та шо :1,'т;тсо| !нформац|!.
батьков| як одне текстове дане. Бизначити дов}кину даного 1 |!рикладатти структур 1![о'куть бути: датт! про отудент|в (пр|з-
к|льк|сть букв "а'' у ньому. Розв'язати 3адачу в!.дпов|дно до !!!|!|{е' !м'я, оц!нки 3 певних предтшет|в)' адреси та телефони дру-
ваш]ого вар!анта дво1ша способа:ши: :!!!!, характеристики комп"1отер|в, автотиоб|л!в, ауд|отехн|ки'
:ц,:пз|дки про кра[ни (назва, к|льк|сть населення, площа) то|ц0.
а) використову|очи функц|| з б|бл|отеки в{г|п9.}:;
б) розгляда}очи введений текст як масив си:цвол!в. |[риклад с1о}кету: створити ! вивести на екран масив 3апи-
,'!:; ттро автомоб|л| на склад| (назва ш[одел|' р!к випуску' ц|на'
1. Бивест'и |:и'я та к|льк1оть букв третьо1иу слов1.
2. 3изна.лити ск!льки букв 'а' е уупр!звищ!'. гкс;.;л!р), а тако}к знайти у тшасив| ! вивести на екран назви ш|о-
.;:','.:пей червоного кольору' як! випускалися в 2001 роц|.
3. Бивести три букви - сво| !н|ц!али з крапками.
4. 8ивести дов}кини пр!звища та |мен!. ' 3адача 20. 11отшук даних у файл!. ,(ля деяко! предметно[
5. Бивести пр|звище та |н|ц|али. створити 3асобами текстового €клас-
6. Бивести |п:'я та к|льк|сть букв у пр1звищ|. ,г{:.тп:тст| файл редактора.
7, Бизначити ск!льки букв 'о' е в |тшен].. |'!| 1|рогра1у[у для виведення вти|сту файлу на екран та потпуку
8. 8ивести найдовтпе слово. /(1!!|их у файл! за деякип{ критер|ем. €тоакет для напов}1е|||!'!
9. Бил1гчц.дц ус| букви 'а' та 'о' з пр|звища. с|л:т[|лу та критер|й потпуку придумати са1шост!йно.
10. Бивести |тш'я у отовпчик.
11. 9и починаеться хоч би одне слово з букви '1!1'? 3адана 21. |раф!ка. 1!1оя еплблетиа. ]/ задан|й частитт1 :'1>::<|;1,;
12. !ст букви '!' в !мен1 продубл:овати. екрана нарисувати ф|гуру 1, у середин| с}|гури 1 <|>!;'у1;у
11
![()!\)
1'3. Бивести пр!звище та к|дьк1сть букв у !мен|. ||,:: } середин| ф|гури 2 _ коло. ]['с| елементи рисут|[{1] |]|!|(() 1

14. Бивести |ш:"я у зворотг1ому порядку. п'п':т р|3ними кольора:ши. 3амкнен| област| залити 1{о]| !,( )|)1! м ! .
: г : 1

1б. Бивести пр|звитце у стовпчик. 9астини екрана' типи ф|гур визначак)ть зг|дтто з в:п1>!:ппп'птлм | ;

16. Бивести 1:и'я та по батьков1 та к|льк|сть букв у |мен|. |'/!!с: п:!% 9-частинаекрана; ь:|% 5 ф|гур:: !, с|>!п'м1;::2.
17' Бцвести найкороттше слово. 1

136 137
Розд1л 3

воп'1,Аш} с++ в0!],пвв

1. вступ до в13уАльного шРогРАмувАння


Фтэке' у пиэ*ст*|й пгав|й
*"рп Б'о'й# ;;*;;'й{:,
коло' в }{ьому _ квад)ат'_' Ё };*.
{,

;г# .'.др*т!' _ знову нарисувати 1.0сповн1 попяття. 1ехнолог!я роботи у середовищ| €++
базуеться :та 1деях об'ектно-ор!ентованого т& в1зуаль-
!|ц:110ег
!!()го програмування. 1дея об'ектно-ор!ентованого програму-
_*^!'*":" 22. |раф!к
: фупкц|!. програ1иу
рисув&ння |!!|ння поляг&е в !нкапсуляц|| (о6'еднанн|) даних | засоб|в !х
функтл|! у
]|]Ф:каса:иост1йно). -€класти пром|этску (пром|э*со:с
|:+т]@) на деякому
8адати ()|!рац|ова1{ня (:шетод!в) у тип, який назива6ться класом. }(онк-
}нйсл|док експеримент!в
м|стити його на екран!. правильно ро3- |)()тно1о зм|нното певного класу ! е об'ект. |!рикладашти о6'ек-
':'|в тио:куть 6ути елементи керуван1{я у в!кн!: кнопки' списки'
3ада*а 23. ,{иналл1чп! об,ект'. ':т:тсстов! поля тощо. €ередовище в1зуального програ1иуван}{я
вати дво- або тРиколФ""**''р'!'! 11"ч:*о прапор. Ёарису- (;!+ Бш!1ёег ще граф!нна &втомати3ована о6олонка над
01р' наприклад. у1г**1', деяко1 дер'}сави на св!й ви-
р.1:!; 6йнц1[, дан!|, 111вец|т слб'€ктно_ор|ентовано1о мово1о програмуванття 6**. .[[ктцо у
Реал|зувати дин'.д1чй^;ф";;#;''" тощо.
пра]тора на щоглу.
мс;в| €! структур}1ими одиницями е дан| та ко]ша!1ди' то тут
'|'!!ко}о структурно|о оди}{ице:о е в1зуальний об'ект, який на3и_
| €'ться ,со ]1|0по'{е|1]по ]}1. Авто:иатизац|я програмуван}1я досяга-
}1!

(;'|'ься 3авдяки }[о'кливост! переносити ко1ц|1о}1е|{т т{а форму (у


п:рограму) з пал!три ко1шпонент!в | зм!нтовати його власти-
:;с>ст!., не вносячи вручну з:тг!н до програтшт{ого коду.
Ф о р лт,ото ]{азива1оть ко1шпонент, як*тй волод!е вл&стивостя-
ми в!кна '\0'!п0о:ллв ! признанений для розтатшування |нтпих
!(ош!понент!в. 1(оштпоненти 1{а форм| мо)куть бути види1у!и:!ти та 1

||овиди1!|и1ии. 3идш:! при3начен! для орган!зац!! д!алогу з ко-


])истувачем. 1{е р!зп! кнопки' списки' текстов! поля' зобра_ 1

)|сен['я то1цо. 3они в|добра*катоться на екран| п|д нас виконан_


!!я прогр8ми. Ёевиди:ш| ко:ипоненти при3начен! для доступу
/(() систе1шних ресурс|в комп'тотера.
!7роеютп _ це сукупн|сть файл!в, 3 яких складаеться € + -;
11

!}ш!10ег-програма.
11
2. 1шструтшент!! середовища @** 8ц1|0ег. 3|кно середови|[('|
м|стить головне мен]о' панел| !нструмент!в (1оо1Багз), :: ттп-
|со)к:
.
1;
пал!тру ко1ипоне1{т!в (€огпропеп1 Ра1е[{е);
о в!кт:о властивостей об'ект!в (ФБ]ес{ [пзрес{ог);
о в!кно форми;
. редактор коду програми .
|3{
139
(| |нстру1\[ецти ста]оть
Бй]0ег: три 3находяться достуц}{и1ши_ п!сля запуску €*
у в!кн| (верхня частин!! 3и да1{их. ]/ тцетт:о ]оо!э шл|стяться кош'анди для зада11ня пара]у1ет-
!

ре1пта _ в"'''',*'му
е}{рана' рис" 1)' а
окремих в|кнах. !! в!кна .''''''] р1в середови1ца.
мо}+спа в|дкрити командами
6опропеп1 Ра|е11е, !!еш.+ Фб.!ес1 "'.й.вн'"' мен}о !!еш =+ 1оо!8агв . ||анель |нстру:иент1в слуэкить для ро3татшування кнопок
:,"р'"1'] Ёа н!й штохсуть ти|ститися кнопки вс!х зазначе_
|{онергова актив|зац'"''й;-ь;;;и' у;"ш.+ Рогпэ та [|еш =+ (_]п!{в.
>

1нструътент|в.
та коду програми зд|йс- 1{их команд.
головного *6''- м;еш .+"то9.9ББ]й:ш';,
;:"?н:#]иандо}о .'' 4. [|ал1тра компонент!в. |{ал|тра компонент!в розта111ова-
3. |оловне :ше}|к) [та у головно:шу в|кн| ! штае вигляд багатостор!нкового блоктто-
'га. Ёоэкн!й стор|нц1 в|дпов|дас св|й наб|р ко1ипонент|в (див.
,

1даеться з фяит'т ^11_-11"9"ь-!нструплент|в. [оловнее ]шен](]


мен]()
3жЁ;:;:ж;,*"+:,:":::тт: г1! г}:1, й;;;, ,]йй"":, пцп, 1;ис' 1). 1{о6 пом!стити кош{понент у центр! в!кна форшти, дв!н!.
""'?::::1
9а1абаэе, т"':.,_й}й_
-'г с;;;.'
\6'д9' ;;":;;
у\|''\'' !слаца1оть на його ш|ктограшт!. ,{ктцо потр|6но ро3татпувати
.'
]![енто Ё!!е м|.стить
ко:шаттди для роботи з !{омпонент десь на форти|, клаца}оть один ра3 на його п|ктог-
и проекту_ -^-^|]11Рртн! фай_
##ъу"'#?{:'.'::"::^?у::;ши1;;;;;;-;;;;#:;;;;"*::: рати| та один раз у потр!бнотиу м1сц! форми. ,(ля 6агаторазово-
ж;г;ъ ;-( } ?*:* :з;*]ЁтъЁ;?#. # :ж;' ;"^1ъж ъ; |'о вставляння одного й того }1с ко]цпонента потр|бно натис-
;тг#'к1;г""*'^.""*у]:9ф.Ё,ы;Ё;;;;;:;,;й###;Ё# !1ути на клав|тпу $пш1 ! клацнути на його п|ктограм| - тепер
Ё #;#;;;#?3#1
!:у;ъ:'::' "^Р:у^ф,;;; Б;;; ъ#; мо}кна клацати у в|кн| форми. 1{о6 в|дмовиту|ся в|д цього ре-
)!{иму' треба натиснути на кнопку з зобраэкенням стр|лкут.3и-
(>раний компонент 1шо}кна перем!пцати на форшт|, а такоэк зти|-
!{товати розм!ри, перетягу|очи його маркери.
|!!е !Ё!! $еагс}"т ч/|еш !га.|вс{
5. |нспектор об'ект!в. 3а допо1\1ого1о |нспектора об'ект|в
ш#-й
&шп !опропеп1 0а1аБазе |оо!э

# мо.ж{т1а задавати початков| 3начення властивостей об'екта та


й## ф. 51впЁат8


!А06!||опа! ] \,л'з2 ] 5'з:, [хнто реакц|то на стандартн| под!|. Б|кно |нспектора об'ект|в
$; т'_] *_..]
Ё: 1 д шш м1стить список ко1ипонент!в поточно| форпли, а тако)к дв! зак-
.'!адки: властивостей (Ргоре;1!еэ) та под|й (Ёмеп|э). 1]1об актив|зу-
:зати в!кно |нспектора об'ект|в, використову1оть клав|тшу Р1 1.
|1анель |о.:товне [)озглянемо це в|кно (рис. 2). 3акладка властивостей скла-
!нсгруменг!в [в-гл!гра
меню компоненг]в /(11еться 3 двох стовпц|в: л|вий пд|стить назви властивостей
Ршс. 1. !оловне в,кно с++
!(омпонент|в, а правий _ |хн| 3начення. 8ластивост| моакуть
Бц|!4ег бути прост'|у\14 або кошлплексни1у1и. }0ош:плексн| властивост|
(]|{лада}оться з набору {нтпих властивостей. ?ак| властивост| в
,';#.##::::
понег1ти .::у:т т:.:*
в|дносно с|тки *й
ЁФ{ тиоакна вир|внтовати
й;;;;й; ком_
''
вати порядок в!до6ра}кення
(8г|п9
;-3#5йБ: #х.
*Бй!]"'*''1в, як! перетиЁта}оться
1с:пектор| об,скт|в позначен! си1\{воло1ш "*'', наприклад +Ёоп1.
3акладка под|й тако'к мае два стовпц!. )/ л|возлу в|добра-
1о Ёгоп!' $еп01о 8ас&),
,й:"й'"]" розм|р ви6раного компо- )|{а1оться !штена ста1{дартних под!й, на як! об'ект 1цо)*{е реагу_
""т:*'ъ)"; .'7' |||\ти' а в правому - |ш:ена шлетод|в-о6робник!в (функц|й), ят<!
##"#*'
у
" "';;;;;1 _" омпоненти $са!е) тощо.
(
1;т:ал|зовуватиш!уть реакц|то на под|:о. $оэкн1й стандартн!й т:о-
6рагтиент/ ;;;;#'|#;г-;н*:'3Ё:.1.Ё###:"*'жъ;ш};
|нтц|' 9 мен}о тйш знаходяться 71!1 в|дпов!дае на3ва }детоду' яка 3'явля6ться п|сля подв|й;;о:'<;

середовища. 1![енто Рго]ео1 команди в|зуал|зац|| елемент1в !{.,тацання ш[и1ше!о у правому стовпц|. ]/ цей 1шо1це11т у ;з!:с;;с;
*ъ'"!] ]'й-д-Р$о; '|'()|ссту програш!и додаеться тпаблон базового коду (<|;уп:пс:1!'[)
'*''дй 1?1т,""" жБ.ж
*
_3окрема файл;в ЁлжЁъ 71.:гя в!дпов|дного ш[етоду' який треба заповнити.

;;н"н}*Ё"#т| (6опр!!е Ё"п, Б1;й А!: вго1ес!). й;;;'н,' *;"- ,(ля введення 3начень властивостей числового | 1'()!с(]'|'()|}( )!'()
';':.т:ту (\:!!01б, \апе 19тт{о) використовуеться станд{1})т!1() |().,!() !|!}()
1*^тР'1'-р;;;.;й;'н1ж#ж,"':1#&"###"т#"";#}
!

,/(()|гня. 3начення властивостей перерахованого т'ил:у (А!!г1г':, ()г:г-


тгент1в' ]!1енто 0а|абаэе
*;"'"й]1'{Ё.' !нструтшент!в ,,,>г тощо) 3ада}оться комб!нованиш1 списком, зтз!,л1лс;а :;г:б::1л:::<:':':,
'"*'ику ба_
::с;тр|бне. Аеяк! комплексн| властивост| (Роп1, Р|с1шго, 6!у1;[ ':'с>

'40
141
тт{о) використову1оть
д!алогов! в|кна' наб!р керу}очих елеш|ен_ 7. $труктура проекту. |{роектош: на3ивак)ть сукул!т1сть фай-
т!в як],1х за.'1е'*сить в|д певно| вл&стивост!. .::[в, з яких б** 9й16ег створ1о€ готову дл'{ викона1{ня процра-
:иу. ,(о скла]п/ ко}кного проекту обов'язково входять так! файли:
|Рогп] . файл проекту *.Брг. !'е невеликий файл, якутй }л|стить
поси.,1ання на вс! файлпт проекту й |йфал|зу€ црогра]шу;
. файли опису вс|х фортш, як! входять у проект: файл
тексту програ1\[и *.срр ! файл форми *.ё{тп;
файл ресурс|в програ1ши *.ге5. ![' ньому описан! рееур-
си, як! не входять у фортшу' }{априклац, п|ктограма
програ1ши;
.
файли заголовк!в *.ь. у них €++ Бш1}6ег авто:шатич}то
розм|.тцуо описи пород)кених клас|в, а користувач'
_
декларац|! новостворених функц|й;
9с! |нтш| файли створю1оться п|сля котип!ляц!! проекту.
[{ля збере}кення проекту необх!дно 3адати |ш:ена модул1в
(1!|]томатич}{о пропону1оться |мена 1_]п|11.срр, 0п!*2.срр, ...) та
:м'я проекту (Рго]ес11.брг). {| |мена мо}кна зпт!нити на влас_
г:!. [ля перем!тцення проекту на {нтший котип'тотер необх1дно
3акладка 3аклпдка м::'ги файли таких тип!в: *.брг, *.6.{гп, *.ге5 та *.}:. 1нтш|
властивостея под!й '."рр,
;|л;: [1-тли створ}о]оться &втотшатично.
Ршс. 2. 81кно [нспекп'орс' об'еютп1в
8. Редактор коду. Редактор коду 3}1аходиться в окреш|ош|у
6. в1кно форпти. Фор:ша _ це в!кно '\['!п6.отмз, яке г;!:слт1.{е в|кно склада€ться з двох пол0винок. |!рава половин&
еться в одно,у[у 3 мо}|сливих для в|кон стил!в. 9весь утвор|о- ,';лт'шн|3ована як багатостор|нковий блокнот в!дкритих у певний
1

'"у'р_!*-
т:1й прост|р е робоно:о областто' як& :иае с|тку вир!вн1оват1ня |и()мент файл!в. )1!ва половина _ в1кно 9!азэ Ёр!огег, у яко:шу в|_
для зру{ного ро3та1пування компонент!в на фор:и|. ,(ля вико_ ';1с;бра*каеться |ерарх!я створеттих клас!в ! функц|| проекту. {е
нанг1я груцових ошерац|й дек|лька ко,шпонент{в :шоэгсна !!!!сно мо;1кна в|дкритк
об'ед- чи 3акрити командо1о головного ме}|}о
нувати. ,(ля цього необх!дно }1&тиснути на л|ву клав!.тшу митп! \./:с':ш =+ 6!авэ Ёхр|огег а тако}к командок) !|еш Ёхр!огег контекст0вог0
! перем!щенням вка,|в}{ика потр!6н| й'й'''*""''. мс:::то багатостор!нкового блокнота. ||1д час створення ново[
9 грушу долуча]оться компоненти''"'''''ияк|вс1
хоча 6 потрап_ у файл 1!п!11.срр, який в!дпов!дао форм| Ёоггп1, редак-
''"'*о''
с|л<г1>:т|}:1
.]!я1оть в охошлену о6ласть. 1!1оясна тако}к '|'()|) автоматично
заносить пор0}!{н1о заготовку ко11структора
1

долунэттп/вил)гчити
окремий елемент. ,{ля цього нео6х!дно натист{ути на клав!тпу !!слгп1::}Ёогп1 класу 1Роггп]. 1!ей клас породхсу€тьоя в/д |нтег-
$Б!{1 та, не в|дпуска1очи !!, ви6рати тци]ше|о
потр!бний ко1шпо_ |){)!!{|ного у €++ Бц!16ег класу 1Рогп (Форма), який волод!е ус|-
1

нент на форм|. Бил1гч6цр" виокремлених компоттент!в чи гру_ м1! !]ластивостя1ши ста1тдартного в|кна'Р'|пёотшв. Фпис ттасл|ду_
|

пи виконуеться клав!:ше:о 8е!е|е, перем!щення виокреш|леного !|!!|!1{я класу користувача ]Роггп1 в|д готового кдасу 1Роггп знд_
ко1у1понента в ме}*с&х форпли ми1пе}о. Ёад компонент1ми
н1шхи груш&1ши мо}кна вико11увати операц!! вир!зання,
та |х- ц()/(иться у 3аголовоч}{ошту файл! {_}п!{1.}ц. |1осилання на п1ой
коп!то_ ,|п::11.лх (1пс|шёе), а тако}к опис з:ш|нно| Рогп'| типу }Ёоггп| ро:;м1
вання в буфер обти|ну та вставляння з бу6ера.
Бир!внтовати компо1{енти мо}|сн'
г:1,.пт| у шлодул1 0гп|11 .срр ||!д час дод&вання нових |{ом!|()||()|]
в!кна форми, |'!|! /1о форш:и у файл {_}п!1,.ё{гп автом&ти1гно заносят1,с'{ ()][и()1|
так | один в!днос}1о од}!ого. ,{ля цього "к-'}д!''сно
використовуеться ко- г г; т ::тметр!в цих компонент!в (висота, 1ширина' ро3т&11!у|'|! ! ! ]'['
манда Ё0!| + А!!9п головного мен1о або пал!т!'
; ]

('|'][.'|ь тощо). 3астосування методу до певного об'ектд в()/((} /{()


(кома::да !!еш =+ А!!9ппвп| Ра!е11е головного менто). '"р{'*.вання
1йша мо)кли- !|()1!!}и 3аготовки базового :соду в|дпов|дно| функ:'ц!г у п;|:с:г!
в|сть-__ безпосередньо 3адати властивост| !-е{: | тор (тшаблон) складаеться
йБмпонен_ |'('/\1!](тора. 3аготовка |з заго;л<;:::с:п с};улг:с-
т|в. $омпоненти у груп! вир!впто:оться в!дносно того кош1по- !!!! '!'& ошераторних ду}кок { }. 3аготовку зат|ов1!|о() |соРи()'!'у-
г!ет{та' який потрапив у групу пер111им. ::;:,:. (Райл 0п|{1 .Б мае тактай вигляд:
1

142
\43
// Ацрекгпцвц препроцеоора
$ 2. 3АдАчА шРо Ан}скту
с!а55 тгогп1 : ршб!1о }Ёогп // 7Рогп1 пороёжуегпься в!0 7Роггп
[1рограшлуван[1я [с[{0!1Фж. Ф6'екти: фор:*яа,
!|
// |{омпоненгпц, вц0цм| в @б!ес[ !пзрес[ог' те!{стове т1о;!е' 3обра3{сен}{я' кнФп1{Ё}
-ршБ!!э[её: // па |1н! мегпоёц
1БцЁоп *8ц1{оп"! &[ета роботи' [творити форпду "Анкета студента,' 3 дани1ии
!тр0 се6е !. двошта фотограф1ями (портретно}о | хуло:кньою)' як;
;
-Ё0!{1
1 Ё0!{ ;

|/ |нш! компоненгпц !1ерекрива}0ть 0дна одну ; ша}оть з'$1влятися в реаульта'т| на-


уо!ё -$еп6ег)
! БшЁ1оп 1 €!!с|<([9б.!ес1
уо!ё -'а5|са| Ё0!116бап9е]тоь1ес* -$еп0е|);
;
'|иск&яня !та кшопки (рис' 6)"
-{аэ|оа|| /| |нсц| мепоёц Фана'т?отшитися 3 т&1{ими об'ектами: форма (Ёоггп), твк*т0в8
рг!уа|е: |/ 1ршвапн! оеоло|/!ення :толе (!*аБе!}, зо6раэке}1т{я (|па$в), :сног:ка {8ш{1оп} та |хн1тши ос-
ршБ|!с: // 3 а е аль н о0осгпу пн! оеолоо;ен ня !!ов1{ими влаетивостя1{}:: п.1дшие {сар!!оп), кол|р {[о:ог), тшрифт
|{онспрукпор папу
/| (Ёгэп{}, нид1и:ш!еть (?}*!}!е), 1ширин3 (ш!с{п}, в}тсот& (Ёе}9п{) та 1н.
}Ёогп1 (16опропеп1" Фшпе0;
-{аз|са!! // |0нець опцсу !пцпу 7Роггп1 ?еоротиин1 вфоттто*т1. 8б'ект Рогтш вик0ри*т0ву}оть дл$1
Файл 0п|11.срр тцае такий загальний вигляд: н0вог0 в|кка. Розэ'ляяем0 тан! власти_
(]1'}]с}рен!{${ т1р{:}грамс)}о
:тост!. форзли:
/ /,!и ре кгп авс: п ре п роце сор а, 3окрема г
#!пс!ц6е "|..]п!11'5'' /| Аоёасгпься опцс пц[пу 7Роггп1 8.тае.гшлв1еть 0пие влаетивост! {|рттклади аначе}!ь
#рга9па ге5оцгсе''*.о'п'' // !о0аспься файл з опцсом формш авдангг.я &кт'{в*
]Ёогп1 *Ёогп'!; // @пцс зм!нно!'Роггп'| гполу 7Ёоггп1 "{ля 0б,€кт&
Ас{!уесоп}г0! ногФ 8ш11оп1, Ё6п2
(фо:суса} у форпх|
1Рогп 1 ::1Рогп1 (}€опропеп{- @шпег) Ё*яатт1сть у форпт!
: }Ёогп(Фшпег)
-!аэ1са|! // |{онопрукгпор Ац1о$сго!! 7гце, Ёа|эе
е]и'уг п1}ок0учуванЁя
бз$!аеа}|е (в|кно в
{

]
1\{оэклив|сть дов!льт*ими розм|-
уо1ё ]Ёогп1 ::8ц{1оп1 Ф!|с&(}Фб!ес1 "$еп0еф 8ог6ег${у!о 3м|н:ов&ти розвт{р*т рами}, бв&|а!о9"
-{аэ|са!!
{
в!нн* бв|ч|опе (в!кно з фйоо-
// 7уп кориспувач 3апцсус гп!ло функц[{
]
1{1ирина ! виеота 58$, 224 (ниолове
!6!}-|, Р!е19!з1
уо!6 [Рогп"! ::Ё6|11 Ф}тап9е[Фб]ес{
-5еп0еф \:\]
в!к:+а у п1кселях вначення}
-'а51са!!
{ $о:чтплетсон8 вл&!ети-
// 7угп коршспувач 3апцсуе гп!ло функц[[
[-:оп1 [!1рътфт я!еть, 3ада6ть*я у
)
|/------------------ д|длоговозду в|кх*|
/| ..' Реал!зац!я 1нсшах мегпо0|в !1ог1а5сго!!8аг }1араш:етрз* стшуг 1{оштплексхта
!еп"1$сго!13аг пт]Фк1}учтЁв.нття вдастив!()ть
(}ч]ог:е) _ етандартн8
Бправи 3адаепво г,!ктогра!иу'
г{'ктогра1ч[& д.п,я
1. 3апуст|ть систему в|зуального програмування €++ Бш110ег | роз- !сс:п
яка 6уде в 3аголФвку 8**Бш!1ёег, вбо
гляньте головне мен{о! цанел| |т*струмент1в, пал|тру котипонент].в, в|кно форми п1д час вихо- 3&в&нт&}}{е!{а 3
властивостей об'скт|в, в!кно форми | редактор коду програми. Бивч|ть }1&н}{я ттрогр8ми *'.
р|зн! способи актив|зац|! в!кон €** Бш|10ег. д9р9о-{1 фд!д!, !,,('

2. ||оекспериментуйте з в!зуальними коп1понентами середовищ8 шап'}е 1пт'я с&орми [огш'! (|"дцетттиф!кдц1 ;1л)

програп{ування €++ Бш!10ег: почергово долунайте !х на форму а пал|три (;ар!|оп 3агодовок форми ,{ов{льт*ттй рлдо!{
котттпонент|в' виокремлтойте !х зокрема та разом' вир!вн:ойте ко1!{андами 9}:цв.9{1ч-_ _-. -.
головного менто Ё0!1 та знищуйте (див. пп. 3,4, та 6 цього параграфа). (;010г о с16гос.:г:, с!!п{о0}<
[(озт!р фогт]," формш {перел!иений'г:тдт)'тгт
$004525в1
"
(.т.птс.::<;ттс:

!(}(:!+ '145
1,14
3!1&че11ня - 3адаеться ||риведення ровшт!ру
т п|алоговош[у в!кн!) $1ге1с[: зобраясення до 3ада- [гцо, Ра!эе
Бигляд вказ!вшика них о6'екта
оозтш|о|в
сг!га9, сг6гоэз, сгЁе!р, |1риведення розм|ру
тшитш! ша фортш| п!д сАггош
6цгэог
час викоЁа}{т{я Аш!о$!ае об'екта до реальних ]гце, Ёа!зе
(перед|чепий тип) оозти|о|в зобоаэкення
цроекту
.(остушн|сть для д|й Ф6'ект 8ц!1оп викориотову:оть для створення к!{опок на
Ёпаб!е6 об'окт!в у форм| п|д [гше, Ёа!эе форм|. }{нопки ма1оть так! влаотивост|: !!э!б!е' ш!с|п' Ёе!9[!, Ёоп1'
час виконання 6о!ог, |,,|апе, 6ар!!оп, 6шгэог, Ёпаб!е6, !-е|{, [ор та !н.
1{оординати л!вого 200' 1о8
!-е{|, 1ор верхнього кутка (вислове знакення) )(|д роботи
в|кна у п|кселях
1. 3авашташсто середовище в1зуальцого програ1шувацпя 8ог1ап0
Розм!щення | розм!- €** 8ш|10ег.
ро5сгееп6еп|ег'
Роэ!1!оп ри в!кша у 1шомент ро9еэ!9пе6 3апуск систе]ши в|вуадьного прогр&щування 6** Бц!10ег вико-
запуску прогоа1ши Ё. @ .о'
}ту1оть кл&ца}1ням допо1у!огото каскад-
€тан в!ктта у 1шомент Рго9гапэ (!-1рограми) =э".8ог!ап0 €++ 8ц!|0ег х.0 =+
'|*''"рй:
шэ[,,!огпа!, шэ[/ах!п1:е6,
\л!!п6ош${а!е }{ого 1ше111о $1ап ([1уск)
запуску програ1![и шэ]т:1!п!п!ае0
€++ 8ц!!0ег х.0' де ;
=+
39р6!д програш[и. Фтримаолшо чотири в|кна.
Фб'ект ]-абе! використовук)ть для створення текстових по' 2. - актив!зац1! чотирьох в!коп
.{осл!д!ть слосо6ц €** 8ш|10ег:
л|в (напис!в) у в!кн! програми. Ёр!м аналог!чних до шаведо' . головцого в|кпа 6*+ -
Бш|10ег х.0 Рго]ес!1, А@ €
п&недь
них у ви1це3аз}1ачен|й таблиц| властивостей \{!61!т' Ёе!9|1' Ёоп|' |нструш:ент|в, пал!тра коу{понент!в | головне 1у[ег{то;
о в|кца 1нспектора о6'скт1в ФБ]ес1 1пзрес{{ог з| значення:ци
€о!ог, \апе, Фар1!оп, 6шгэог, ЁпаБ!е0' !_е{|, 1ор, в|н волод|е ще й та'
кими: властивостей активного об'екта;
. в|кша фор:ши Роггп1, в яко1шу будуть ро3татшован! ревульта-
8лвстив1сть 0пис властивост| !1риклади значень ти роботи майбутньо[ програми;
Бир!.внтовання поля а!8о{|оп, а!Ф!!еп1'
о в1кша тексту програми (1-тп|11.срр).
А!!9п в|днооно об'екта, що а![_е!1, а![х!опе, а![ор 3оувоэюення /. 3|кно тексту програми мохсе чаотково перекри_
його шт!стить (форми) ватися в!кном форми. Актив!зувати в!кна (а такоэк зм!нтовати
8ир!внтован|{я тексту !асеп|ег, |а!-е[!3шз|![у' |хн! розм|ри чи ро3та1пування) мо)кна 3а допо1\логото :шитп| а6о
А!!9ппеп1
в 1ие}{сах подя 1аР!о!'т!.]шэ1!{у використовутони функц1ональн! клав|тп! на клав1атур!:
|{риведення ме)к поля 1гце, Ёа|эе Р10 _для актив!зац!! головного мек;о (п|сля цього натисн!ть
Аш{о$!ае
по ппяниттъ тексту на клав!тпу Ёэс);
!!э|0!е Рттптлш1сть об'екта 1гце' Ра!эе Р11 - для актив!зац!! в!кна 1:лспектора об'екта;
|[еренесення сл|в [гше, Ёа|эе Р12 _ для переходу ти!э*с в!кнами форми та коду програ1ти.
![ог6\А/гар
тексту у новий рядок
:|. 3апуст!ть програ1иу Рго]ес11 }|а виконапня 1 ровгляньте в!тстт<>
Фб'ект !гпа9е використову1оть для вставлян}1я граф|нних порошспьо[ поки 1цо фортии. ||оекспериптевтуйте з в1кнопт фор-
об'ект!в |з файл!в типу *.ьтпр, *.етп{, *.!со, *'тмгп{ у форш!у' 1ии.
$р|м в|домих властивостей А!!9п, \4/!6|!':, Ёе!9Б|, [\*|апе, 6шгэог, Ёпаб' 3апустити шрогра1шу 1цо'*(на дек!лько1ца спосо6атши :
!е6, !-е'1, [ор, !!э!б!е, використову:оть так|: . викон&ти ко1шанду Рцп =э.Рцп годовного менто;
. клацнути т|а кнопц! пцп Ё] панед! |нстру:иент|в;
Фпис властивоот! [1риклади значень
8ластив|сть . натист{ути на футткц!оналъну клав!тпу Ё9.
Бир!внтован}{я 1ша.'т1от{_ Биконайте так! д!|: штакситш|зуйте в|кно, в|днов|ть його :то:гс;-
6еп1ег ка до центру в!дносно [гше, Ёа!зе
редн!й розпт!р, тш|н!ти!зуйте та знову розгорн!ть в!кно, т:е1>с_
поля. тцо його м|стить суньте на ро6ототшу стол| та зм|н|ть його роз:ш|ри' ви|{лич1'о
3адаоться у систе1цне мецто (л:т * пропуск). Биконайте т| сдпл! д!| зп доп()-
Р!с1цге 1шл'я граф!нного файлу л|алогово:т:у в!кн|

|4в 1,47
команд йоуе, $!ае та |:ттцих | клвв|атц>и.
1и0го[о
.{в{я!. клг:цн|ть :шитпело на п!ктогра:и! !.абе! А на зак.::а.цц1 $1ап_
3шсновок: в|кт*о форми волод!е уе!тша вл&стивостя1ии етандарт_ 6аг6 г:ал!три ко1![!то!тет*т!в головттого в!кна ё**8ъч{16ег. Розта-
ного в1нна оператд!йно! систе:ии 1А/!п0о'шв. :шуйте вотавдений об'ёкт, наприкл&д' так! як 1тока]за}тФ на
4. 3акрия?те з!лсшо програ1|ди Рогхп1., :и|п1пт!зуйте годовпе в1кпо рие' 3, перепт!п1уточи його 1\[иц е!о. ,[кщо об'скт {-аье!.! невио!{-
с++ вш'1Ёег 1 створ1ть на ро6ото:шу диску папку в !пхевети гру- ремлений, актив!зуйте його ! у в|кн1 Ф}]ес{ 1перес*ог зпт|н|,;:ь
пи' а у н1й власпу папку' ваввапу ва1'[и}! пр!звитцепл. 3вову 31тачет1ня вдастивост! Фар*!оп з !_абе!1 гта те&'ст ,,Атлкета студс*в-
актив|ауйте (** Бш'!!.ёег. та'' бев лапок' 3м|т:!ть 3начення вдаст!1вост{ Ропт (штрэтфт) цьо-
5. 36ереэк|ть етв0решу програ1шу у сво!й папц!. го те}сстового подя на так!:
,(ля цього вибер1ть копданду голов1{ого 1це!!]о Р!!е э $ауе А!! (3бе- гоп[ : [!пеэ [1еш Ропап €уг;
регти 9се} або найисн!ть на кно]тку $ауе А!! Ф ,', па}1ел| !нстру_ Ёоп{ $1у!е : Бо!0;
мент!в. } шерштому р.ядку в!'кт:а, яке 3'явиться ("Бате 0п111 $|ае : 16;
Аз'') г:|д 3&головком "8&уе !п:'' (3берегти в:), 3а дог{омого1о ви- €о!ог : Ршгр!е.

падак)чо1'о ]!тег{1о 3 ви6ер|ть !м'я ро6отого диока' п!сдя чого 3оувоэтсення 9. 9 в!кн! ФБ]ес[ 1пврес{{ог в!до6рая<асться список
знайд!ть ! в!дкрийте сво1о вл,1сну папку. 8адайте на3ву для власт!1востей липте актив!того у певний момент о6'екта"
файлу те$оту ттрогр&]€&1' по1теред}{ьо витер,пи 3апрошон0в&!!у 1 1. Атлалог!чпо вставте у фор:шу ще дек!лька текстових шол1в а
котшп'т0тером 1{&аву 0п!*1.срр, э $ауе" ][' наступяотшу в|кн| "$а- ва|цип{и б|ограф|нпиР|и дави]ии.
те Рго]ее{{1 Ав'' дайте на3ву файтов! проекту' витер1ди запрошо-
н0ваву ко:шп,тотером на3ву Рго]ес|1.Брг э $ауе. 3зерн!ть увагу: Фщ {" вар|а:ттБ розтш!ще:тня текстових шодБ шоказа_:тий на рис. 4.
файли проекту | тексту ттрограм,' повинн| птати р|зн! н&3ви. , ...;:::1!;.,:;:-;.]12!:!

' . .-
-,.:.1;1..11.1 : ..:. :. ..
::..
6. 8!зуально ознайотитеся 3 властивостя1ши фор:ши !еп' тор' ш!с{ь :::. ,.ь^м::г:,']',
; ,.
:.аь-пэ] ;:: :, .:1,:::.:: .;;.*;' :: :::;.;:': : :::
,', :::::.,, ;:, , Ап'*ф сфцештл:.
|,.-
'

та
:|
не|0п|. цмь'?:: :,:]. .:: . 1:''|;. ,.. ::';... ,,: ]; ;'$:1;-т$;,];][1 !: !]{|' п::! ::' :с:-]:.
,,се13+313;'"лз,:т:.{|' :т ] :!-1: ;:.:, ] ] :] :
.':
'
,;; :; { :,

11ерепт1ст|.ть за доцо1цого|о ми1ш! фор:шу Рогтп1. 3верн!ть увагу' ,' . .'.-.-.-.:'.::


г"ьчп!:,,;''',,,',',,'',,,., :,.;.. .:
. . :;: :'.'.:'. . .:: ::: . . ::::
:;
;'
г!я++9т"+т"9г.е3ш!оор.6итвт9;
;.!&{.:::,|,1 ;...:..". .. .'
" ;.
,
'1"11: :.
тщо з:ш1на роататпува.11ня форшти веде до зти|ни [{ в.пастивостей
:
1' .' ::
!_еп ?а тор - координат л!вого верхнього кута форпли у в!кн!
.:
.....,;.:
:-'::,.. :. : :.1!.!41.;.,,::
....:!::,1":::,.. ; ;;. .::.;. ; .
: ] ]:']
:: :::::....: :. ..
.:;:::.:.;:'льйв;;;п;;|т*н!хц...
. .:
......
1-а!а|5:'::.::,: :::- :::::'::..:..::::::
:...! : ;;е:1д9р9ркф:'.1995!.:::, . :. :.: : :
0Б3ес{ |пзрес1ог. 3*т|н!ть ровтш|ри фортши. |{ере:сошайтесь' !цо : " :.....:,,:"1'..;. ...:.,.:. :..::. 1;'ялто6о._т,|!рв!э.,энт,
.

:.:'. !,!333т .ч*,''. .


теше}}] зти|.:*к:тотьоя властивост! ш!с1п (*ширина) та нФ[8п1 (висота)
,, ,,,.::,,1' ::. :.. :: :::
!--1ьч|[
::.::: :. -:': : :,:: |..,:::: ,:.:....:.'
.

форпти у в!кн| !нспектора о6'ектв.


..: :', :.:.:::.:.|;.-.=-1,
7" ,{осл{д1ть, як з:и|на 3нач0ць власт|.1востей ]_ег:, тор' ш!с1и чи .:::т1:; .;.:];;..:.:. ,:;..,,. . ::.",. ..,...._
у в!кн! ФБ]ес{ 1пврее1ог призвод|{ть до вш:!ни роз-
}!е!9[Ё форпп:с
та[шуваш!1я ни роа:и1ру фор:ши.
' ,'й;;", ":.:.:!-:
{;;,!.:'::.'.,',.,]..
:..: ;.':: .::.,:::'1з;. :;::,;]::'].::']
.;1,.-.'......1, 1:,,..1 ..'.. ,. :.:...',.',.

8вед|т,ь в|дпов|дне 31{ачен1тя у п|кселях | натисн!ть на , т |::Ё., :


!- ::,::-. :.;; ::: :; :': : : !";;;
-:':::.::: ; :::' ::.
:::::::
:;1::1::::'.::):;::::::::
: . :::1.:::
:: :] :

кл&в!тшу вп!ег" Рцс. 3. €гпворент+я Рцс. 4. |7ршкло0 п!0пше!в


8. 3пд|и!ть кол!р фону фор:ши. 2. 8етавте у фортиу о6'скт типу !]па9е (зо6рашсеппя).
форлсш

у
|
,{ля цього в!кн| вдастивостей форми 0б]ес|| 1пврес{{ог у ,(ля цього клац}{!ть один р&в л!во:о кдав|цтето у:итш! на п|ктот'_
рядку €о|ог вибер|ть 3н&чет{т{я кодьору фону 0вольа способау:и: ратт:| !па9е .*! закладки А8а|*|опа1 (додатков!) пал!три коти|1о-
. викл:,1чте в!ктто ви6ору кодьору шодв|йни:ш кла11а!{ня1и нент1в |, шаприклад' у ни)кт{ьому право1иу кут1 форшти об:;е_
}\шшшек} }{& г!0т0ч}1о|шу 3}1ачев}1! властгтвоет! €о!ог' 3ибер!ть
д|ть контд: для птай6утт{ього вобраэкення (фотограф||). .!,|ктп1с>
одик !з ба.зових кольор|в (3ая!с со1огв) або встат*ов|ть :тотр|бт:о, зшт!н|ть розм|р фортии чи вставленого об'ект1| 1,л /1()-
св!й влаений (}е{!пе ёцэЁоп: 6о!огв) кол|р. |{!дтверд!ть бийтеоя якнайкращого ро3т8|шува1тня ттв тт!й створених р:плг1-
виб1р (ок)'
тше об'окт1в. 3м!:ттовати роз:ш!ри об'екта мо}|(н8 метод<.>м [х
.
3& дошом0го1о витт&двк)ч0го |у{ет{1о Ё! поексперимсптуйте в ''ро3тягува,ння" з& 1у[аркери (норн! габариттт| квадратитси). !}:п-
р!зниттти а}:&чет{нями вл0'стивост! со!ог. 3адайте 1]оч&ткове пам'ятайте на3ву' яку Бш||6ег присво|ть цьому об'етст'у (::пг,гп
3н&чечня ко.цьору ; с!81пЁасе. че}1ця вдастивост! ['!апе) а6о зати1н!ть |! на св|й розстл. !}:п
9" 8шконайте црограР1у ще р&3 (див. п. 3)' ; мовч}гват|няти цей об'окт 1ш&тиме ст8}1дартт{у назву !гпа9о1.
:лд:

.[Ф. 8ставто у форму текстове поле (об'ект т[!пу [абе!) в тексто1|д ! ]}. Бставте свок) портретпу фотограф!то за доцоп[огок) в.]|дс.|'и_
"Анкота студеята''. : вост1 Р!с!шге (1ллострац1я) об'екта !:па9в1.

148
749
[ля цього об'ект !па9е1 та актив|зуйте-рядок Р!о1шге
виокре1ште уо!6 ! 1 Ёогп Бш[1оп 6! !с}<(7Фб|ес1
-5еп0е0
виклинте
у' в|кн| ФБ]ес{ {пврес{ог. $лацнувттти на квошц| "':!!,
1 : : 1

-'а5|са|
{

1!''.'"''" в|кно у1ал1онка Р|с1шге Бё|!ог' $лацн|ть на !па9е1->!!э!б!е = 1гше; |/ 11оргпрегпна фопоераф!я сгпас вц0цмою
'йо.ру
!нопц1 1-оа0 (заватттаакити) ! у в|кн| !оаё р|с1шге 3азначте тшдях |па9е2->!|з!б!е = 1а!5е; !/ \уёожня фогпоераф!я сгпас невц0цмою
скорио-
до файлу а фотограф\ето. ,1къцо 1поко?о фо1лу нел'ос'
)

з б!6л|отеки 16со1ог' яка ва 3а- 3а допошлогото ц|е! функц|! властив|сть видитшост| для об'екта
6**й"', 6удь-яко:о фотограф|е:о !па9е1 3адаешло | цто }к вдастив|сть для об'екта !па9е2 за6ира-
мовчувант]я}д 3}1аходиться у папщ| 6:\ Рго9татп3|Бв \€оттптоп
ешло. ,(ля кнопки ")(удоэкня фотограф|я'' д|| будуть 1тротиле}к-
Ё;1;'\ 8ог1ап0 $1таге6 \ 1тпа9ев \ Бр1а.$ь \ 16со1ог. 8и6ер|ть 6удь- н|. 3верп|ть увагу на використання скдадених !тиен, наприк-
який фаЁтл э ореп. |1!дтверд|ть ов|й виб!р у в|кт*| Р1с!!цге Ёё|- лад |па9е1.!!э!б!е, в яких т1а3ва об'екта в|д його властивост| в|_
*ог натисканття1ш на клав|шту Ф[. 3адайте властв|сть 5{ге1сп ддя
докре1шл1ооться крапкото. 1ак| складен| !у:ена датоть доступ до
об'окта !па9е1 як 1гше. {]начення конкретно| властивост! деякого об'екта.
14' 8ставте сво|о худо}[сттто фотограф!то у форгшу поверх наявво|'
скористав1шись ш{е од|!и:ш о6'сктоти типу !гпа9е'
Фдин :з вар|ант|в ро3татш}'вання фотограф|| показаний на рис' 5'
8ваэкатипде1ио' що цей об'ект мае !1а3ву !па9е2'
3аувоэюення 3. |{|д час накладання_[ооб'ект|в мо}ке виникнути
пойреба використати команди 5еп6 8ас|< (переслати навад) ни
8г!п9 }оЁгоп1 (перенести налеред), як| е в'й контекстових п|ен]о чи
в г9лов}1о1шу менто Б0!1.

1б. ||оексперитиептуйте з властив!стто [!з!Б!е (в:тди:и1сть) о6ох зоб-


(див' пункт 3)'
рашсет{ь' ко?{сного ра3у викоцуточи програ:шу
п|"л" цього вибер{ть 3т1ачення властивоот| у!э|ь!е у га!5е для
кцопки для засв1туван|1я фотограф|й _ два
''.;';:#?ЁБ},
об'скти типу вц||оп з на3ва1ши 8ц{1оп1 ! вшшоп2'
(кттопка) знаходиться 1!а зак-
|{!ктограма Б1 об'екта тишу вц11оп Ршс. 5. Роз;п1щення молюнкс[ Ршс.6. [отпова фор][|а
ладц! Б1апёаг6 пал|три коштпонент!в годовного в]ктта 8+* |[|. 3апрограптуйте к}топку (')(удоэкпя фотограф|я'' в1дпов1дно до
8ц!16ег. |{ом|няйте п|дписи Ёа кнопках (зм|н|ть властив|сть !1 признанення (див. л. 17).
€ар{!оп) на "|,{ортретна фотограф!я', та "[удоэкня фотограф|я'' 1['екст функц|! для ц!е| кт|опки 1шати1ше такий вигляд:
в|дцов|дно. 8ибер!ть найкращий, т{а ва1п розоуд' кирил!зова_ -$еп0ег)
уо!а ]Рогп1
ний тлрифт для п{дпис!в. 8кщо використано картиЁки |з стан-
::8ц1{оп2Ф!!с1<(|@б]ес{
{ -{а5|са!!
дартно| б|.бл!отеки Бог1апё, вибер|ть для кнопок ц|кав1
п|дписи. |па9е1_>!!з!0!е = 1а[5е; // 1орпрепна фогпоераф]я спас невц0цмою
показаний на 6' !па9е2_>!|э!б!е 1гце; \у0ожня фоспоераф!я сгпас вцёцмою
0дин !з вар|алтт|в розм!щення кт{опок рис' )
= //

17. 3апрогратшуйте }спо11ку "||ортретна фотограф1я'' так,_ш1об п|сля


!{о6 створити таку функц|:о тшвидко' ш!ош(на скоп|товати
|] натискання у фор:ш1 3'являлась портрет|та фотограф!я' 71:;!
!соманди присвоення 3 поцеред!{ьо| функц|! у нову | пом!:п:;т'г.:
,{ля програш[уват{ня кноттки 8ц11оп1 шеобх!дно дв|ч! клацнути |}ира3и цраворуч.
на н!й д|вото кдав|тшето миш:|. } результат! актив!зуоться в|к- !!) Биконайте програ1иу 1 переконайтесь, що к!|опки ви|(()||у|(гг!'
но тексту програ1у|и |з заготовкото функш1| 8о1!оп'16!!о[' яка оп- <:во? функц|1. 3акрийте в1кно програпди "Анкета студепп.:':п''.
рацьовуватитше под|то кдаца1{ня *а к19.ц!
е'11'!1 : 1() }}береэтс|ть створепу програ1}1у у сво!й папц1.
-$еп6е4 |}ибер|ть елеш[ент годовного п1ецю г!|е э 5ауе А!! (3берс::.т,г.т :гс:с')
уо!6 {а51са!| ]Рогп1::8ц11оп1Ф[!с((10б]ес{
{ :тбо натисн|ть на кнопку 5ауеА!! ф *а п'н"'1 |гтстртмс:;,:'|:;.
) ()твор1ть ехе_файл програ1ши.
на !]иконайте ко1ианду головного 1иен{о Рго.|ес1 э |т:!а[с [,гс;;с;т;|
)[' заготовкт необх|дно вставити текст програ1![и реакц11 ц1о 1

( )конструтовати
все).
:тод!то. |{роцедура матиме такий вигдяд:
(

! 1-:$ 151
22.3акр*тйте €++ Бш!18ег, витсошат}то створену пр0гр&1шу
периу{е!!туйте з по6удФван1!!н11 кп0пшами"
1 шоекс'
$ 3. 3АдАчА шРо 0Бмпн вАл1оти
3ашуст!ть ехе_файл в !менетш проекту ! п|ктограшзо:о [Ё! з! 11рогра:кування ровгадуэ{сень. Фб'екти: поля редагува!|ня,
свос! влас:то] папки. пероп{икач! та ?хн1 властивост;
23. |{родетиоттструйге 0гворещ/ фор:шу ви'с.||адачев|. 3ахс|пч!тъ ро6оту-
1!!!ета роботи. €творити форму 3 на3во|о "Фб:ч!н вал1оти''?
Б:травн гга як!й мо}кн8 ам0дел1овати операц!| обм|ну вал}оти в об:и1н-
1. Ёставте у форму третто фотограф|*о (фото ва:пого бул*:нку 'гг: }10му пу1{кт!. 3аотосуват[1 поля редагування (всп) та переш|и-
матшини) | ще одну кнопку з в1дпов|двим п!дписом, яка 11 висв!тл1овати" :сат| (Ёа0!о8ш|!оп, досл'вно ра.д|ок:*опка), а тако}к кнопки для
ме. .{кщо файлу 3 тако!о фотограф!ето Ё1еп1ае' скориота}"1тееь 6удь-яким
ви1{онання обчислень ! зак|нчення роботи г{рогра]у|и (див. зра-
файлом з б!бл!отеки 16со1ог (див" п. 13)"
2. |{ом{няйте т\дписа до к!{опок на так1: "3*т!нитт: фотограф!.то'' т:: зок формтт на рис. 8).
"3абрати фотограф1то'', перепрограмувавтпи кнопки в!дпов1дно до новог() ?еоретикн! в|до:шоет|. 0б'ект Ё6!! викортаст0ву1оть для вве-
призначення. 3апи:п!ть фрагменти зш!неното програмного коду у зв!т'.
8таконайте програп{у | перекоттайтесь у правидьност! |! роботи. дення користувачем рядка символ'в |а клав{атури. т.' раз!
17!0козюа' ][' текст1 функц!й, що опису}оть ро6оту кттопок! мо}|{]|8 лтеобх|дност! ддя перетворент{я одер}1са}10го ряд}са (властив!сть
скористатися т&кими команда.ми: |еп) у число | навпаки використову1оть функц!т €** Бш!16ег
!{ (|па9е1->!|э|ь|е = тгце) .". /| 8кщо вц0цм|спь = 7гце 5{г[оР!оа{ та Ё!оа{1о5{г. Фкр!тш в!до}дих вам властивоотей' ттоля
а6о р!вноеильно1о командо1о |)едагування Бс;| вол0д!тоть такими:
!{ (!па9е1 '!!э1б1е) '.' ||7уп умова |сгпшнна, якщо вц0цм!спь ув|мкнена 8.шастив!еть Фпис в:хастивост! 11риклади 3начень
3. |1ом|няйте сценар!й ро6оти програми з п. 2 на такий: еошоггпа! (звинайн!),
о в!дразу п!сля зат:уску програми фотограф|й не видно" е дв! Бигляд ситшвол|в, ес[|ррег6азе (велик!.
кнопки "!{ортретна фотограф!я'' | "3абрати фотограф!то'' , до- €}:агёаэе як! на6ира1имуться л|тери), ес!-ошегса5е
ступнок) € лиш1е пер1па кног|ка; в п0л! редат'уван}!я (мал]. д!тери)
п|сля клацання на кнопф "|[ортретна фототраф!я'' у форм| з'яв-
ляеться портретне фото, п!дпис на першт|й кнопф зм|нтоеться нп #0 (пряме в1до6ра-
")(удоэкня фотограф!я''' стао досц.пно}о кнопка "3а6рати фото- }кен1{я тексту), *

граф!*о''; 6итшвол для (текст в!добраэ*сати-


Разэигогё€}аг
п|сля клацання на кнопц! ")(удохсня фотограф!я'' фотограф!:: введе:{1{я т1арол.я 1у[еться з!ронка:ши), 0
у форм! зм1н:оетъся на худо}1сню, а п!дпис тта ц!й кнопц| зм1- (текст в|дображсати-
н|о€ться на "1ретя фотограф!я''; 1у[еться нуля1|ди)
п!сля клацан11я н& кхтопц! "?ретя фотограф!я'' фотограф!я у ]!1оэ*слив|сть зм!т{ити ?гше (текст не 1у|охсца
форм! зм!н:оеться на трет1о' в п1дпис на ц|й кнопц! зм|нтоеть- 8еаёФп!у текст (дост1гпн|сть з1ш|нити), Ёа!эе (текст
ся на "|{ортретна фотограф!я'';
п!сля клацання 1{а кнопц| "3абрати фотограф!то'' фотограф!я поля) 1шо}|св& 31ш!нити)
*8вед!ть
3|{ика€ 1 ця кнопка ста€ недоступно}о. ?екст п!дкавки, яка суту'у''
о 3апиц:!ть фрагменти програ|у1ного коду у вв|т. Ёиконайто }{|п1 висв|т.тпоеться, якщо (дов|льний рядок
прогр8му ! переконайтесь у правильност! !1 роботи. !{авести ку(юоо 1у[и1ц| ситшвол!в)
[10юозка. } текст! функц!й' як| опису:оть роботу кнопок' мо)кна ско- 8исв1т'тповати / Ае в*т -
$}тош}!|п| 1гше, Ёа!эе
ристатися командами' п1о зм1нтототь властивост! кнопок €ар!|оп (п|дпис), св{тлтовати пйказку
!!з|б|е (видим|сть), ЁпФ!Ф (доступн!сть). 1екст у пол! редагу_ 0,000'| '' (дов|льний
4. 8 умовах задат! п. 3 п!сля клацання на кпопц! "3абрати фотогра- 1ех!
в&}{т{я ядок сиш|вол1в)
ф|то'' ця кнопк& отао не ли1пе недоступно}о' але ! невидимо:о.
5. 8м{н!ть програмний код розв'язув&нг{я задав! з л. 4 так, щоб Фб'окти Ра6!о8ц1{оп використову1оть для створення у <}о;;м!
п|сля вимкнення фотограф!й напис на ттертш1й кнопц! 3авэ{сди в!дпов!дав ;лпсобу д]!я вт16т1рання одн!е1 альтернативнот 1иохсливос'г! <:с.. ;>п:71
фотограф!!, яка повинна з'явитися п!сдя !! натиекання. /{ек!лькох. Розглянемо так! влаотивост! перетшикан|в:
6. 8иходяни з умови задан! 8 п. 5, до6ийтеся того, щоб посл|дов-
тт|сть перемикання фотогра'ф!й не пору1шувалася внаол1док 1х вимкнен- Блдстив!сть Фпис властивост! [1риклади з!|||чо||ь
ня' а тако'1{ додайте текстовий п|дпис 8 назво}о фотограф!1, видимо1о у [гше (вибраний), Ёа!эе
:тоточний момент. 6[ес[её €тан шерешхик&ча (це вибраний)

| г'2 153
0 (пертций|
об'екта клач|дцето }аб
.;.|(чп!впя : '.=>.:.''6 п,одй ..
до цевного 1гше (буде доотиг
'(ост1гп
об'екта та6улятором ним), Ёа!ое (не
[ап :;:|:афо|с:.:"]Ё]1|7-; : ] : 1Б-- .*цр'..1
191.ц11,{[Б7- ;

га!е!| ., |:': -'::,.:.;-. .. : !_а!о!?::::;:::;:


{|д роботи
1. 3авантаэште се
2.Ёий'|!"?;1!?#,#"|1|{1Ё-"'}13#{#Ё#|#"'!*"#;'*";
1ши' шадав|ци властивост! форгти 8огёег$:}!е Рцс. 7. €птворення фор1'ц Ршс. 8. [оптово форма
,""й*й'" програму ""Ё""""? ьэ9!а|о9.
| перекоттайтеся,
1тчт"*ж}!3начення' !1. 3пх!н1ть пазву форпти з "Роггп1'' па "Фб:ш|н вад1оти''.
сутн:
в |д й| ;'*::|т#1.-,###, ж*т;'' 5ть # .{ля цього вшт|н|ть 3начення вдастивост| сар1!оп фортши. $лацн|ть
систе1\{ного *т'.
3авер:ш|ть "Р*тъ* на фортш! ! на рядку €ар1!оп у в|кн| Фб]ес1 1пзрес!!ог. 8вед|ть
3. 3ставте у фортиу два об,ектироботу програми.
тип ту Раё!о8ш1!оп (пере:иикан!)
тта3ву фортии без дапок. 3верн|ть увагу ша те' що для об'ект|в
це пока3ацо йа 7. рис. як 6агатьох тип1в (зокретша, !-абе!, 8ш[|оп, Ёоггп, Ра0!о8ц11оп, сьесквох та
,{ля цього кл |втпих) зт{ачет{ня вдастивостей 6ар1!оп т'а \апе зб|гатоться.
с й
"р"
йй
ко]шцонент!в
* й ; !!Ё]#
;:н" жъ;"# -;н:.
" ;1
-11}1ът 12.3пт!в1ть п|дписи €ар{|оп на об'сктах типу Раё!о8шпоп, !аье! та
вцпоп так' як пока3апо на рис. 8.
н1ть на
головттого в|кна с++. вш]а;;; ;;;;;;ого клац- .(ля цього по нерз| вибирайте об'екти (клацайте на них) | зм!_
. "'',''::у|_ч1"ц|
вити другу рад|окнопку. ". о",*'. |{овтор|ть ц| д||, щоб вста- нтойте 3наче1{ня вдастивост1 €ар1[оп.
4.3адайтепочат] 13.3адайте однаков! розпл|ри для вс|х текстових пол!в, пол1в
д'"ць'г! ;;ц:!.Ёц"ъЁ*у:1ъж*'#;1т?#.1,3#]}"Ё3;. редагування та кцопок ! вир!вняйте !х на форпт1.
властивост1 €[ес&е0 (контроль ,{ля цього одночаст{о виокремте п'ять об'окт!в д!вого стовпця
*'6"ру)
5. 8ставте у фор:иу-дв^-1''т редагувац'пя"'д*й'" ;";"-.
_ об,екти однипд !з способ|в:
,{ля цього клацн|ть на п'к_тогр,"*!-Б[ ]о'";;-';;;ъ01[ Бс'[1 та Ё6]!2. . три1иа1очи натис}{утото клав|тду 5п!п, почергово актив!зу-
гування), яка 3находиться на закладц| (реда- йте об'екти' клаца|очи н& вих л|вото клав1гцето тшитц|;
компонент1в головного в|кна €++ $1ап6аг6 пал|три . обвед!ть навколо цих об'ект|в контур' утри1иу1очи
вц|1{,е;, .
потр!бнотшу м1сц| на
3апуст|ть форм|. Бставте другий ";;;;'йл'ц'|'"
об,ект (рис. 7).
у 11атиснутото л|ву клав|шту митд!.
9 в|кн| ФБ]ес{ 1пврес1ог задайте сц|дьн| для цих об'ект|в 3наче}{-
1' ;.;";";йптентуйте в| вставлени.![и
об'ектатши: "р':|-1уу
клацн|ть у пол| р"д'ф'*''я, введ|ть ня властивостей (штирина), не!0п1 (висота) та !_е1т (в|дстугл в1д
ш!6*п
вилут|ть його. 3акрийте в|кЁо' деяке число' л|во] в|кна) у п|кселях.
3верн!пъь уво?у, що п!с:оя акпт.шв1-
6' Роаташлуйте у форти! д'. ,р6.р'*". птеатс|
зоц1[ в10пов[0но[ влостпшвоспт1 ь[ зночення - це 3на'чення влас!т[ц-
_ ]-аБе|2 (лив. рис. 7). '"*".'''| поля - о6,екти [абе|1 та воспт.[ пер1цо?о вцокре,1шленоео об' скпта сптворено[ 2рупц. 1\1[оэ*сете
7 ' 8ставте
у _форму два поля редагуванця _ об'екти Ёс|!з зм|нити стиль' кол!р ти розтш|р :прифта одночасшо для ус!х
(див. рпс.7). та Ёо!|4 виокрету[лених об'ект|в (властив|сть Роп1). 3тт|м|ть виокретилен1-{'г'
9. 8ставте у фор:иу дв! кпогпси _ об,€кти т|{пу вцшоп (див.
9' 8ставте у форму ще два текстов! поля рис. 7).
кдащт1ув1ши на в|дьному м|оц| форпти. &адог|чно виконайте лзрт.
_ об'екти !_аье!з р!внтовання правого стовпця об'окт!в. 8ир|вняйте встпв.:гс::л!
(див. рис. 7). ! |аье!4 поля шопарно у гори3о1{тадьт{о}ду т{апрямку. Аля цього зм1::!':':,
1Ф. 3берешс!ть створет:у вдастив!сть тор (в!дотуп в!д верхньо! тшеак| в!кна у п!кселлх) 71.:::т
у цей мо1шент форму у сво!й папц1.
Ё!!е э $ауе А::. Файли тексту в!дпов|дних гр1тл об'окт|в. 3береэк|ть роботу ($аме А!!).
та проекту пазв|ть р!зни- 14.3адайте 3начепня курс!в куп1вл! та прода}|су валк)ти' !! '|':!!с())!с
ми !менами. 1:шена занотуйте ''р'"р,й"
но' зокре1ша перед чергови!ии
у зв|т. } подальтшопту пер|один- к|льк|сть вал|оти' яку ка||тор купус чи прода€.
запуска1ии
ня, збер|гайте файли програш[и
проекту 1{а викот{атт- ,(ля цього введ!ть потр|бне чисдо' наприклад 5, [т:{ ;]лл::,;с:л:::::
файл!в в}ке не потр!бно).
[г;п" = 5ауе А!!, вводити ]'мена властивост! тех1 об'€кта во!{1 . |[овтор|ть це дл'1 об'с|('!'1! гс||2
(знанення 5.2) та Ёс!{3 (3н&чешня 20). ,(ля набору сим!}о.,!!! /((}-

1 г'4
155
*$еп0еф
сятково| кр8пки використайте си1цвод' передбачений 0пер!!' й7*т"":""|! 1Ёогп 8ш{оп1 €!!с[([Фб!ес1
{_
1 : :

ц|йното систе]у{о1о комп'тотера. _>1ех1); /| о-оеря{уёмо 3начення курсу ку-!|:!!-'..'


}тоат {'1 = ${г[оР[оа{(Ё0|11 курсу прооаху
15. Фчист1ть поле редагувапня Бё![4. ;;; ;, 6|,тБг:оа{(во::а -' йй|; т.т'
!!ёо*усм2 1'н.ачення3на'|ення
.{ля цього вилун1ть 3наче1{ня властивост! теп для об'екта Ё0!!4, ж!! +а =
=
ы;+;ьБ;;(Ёо!*з '' теп!!
!!:'ж:';уБчцспове
Ре сплутайте авачет{ня в./[&стивостей }.'|апе та тек цих о6'ект!в. {1Фа|
// 5м!нна 0ля сумо в ерцвнях
-
!-6' 3аблокуйте :иожсл:лв!сть введешня дапих для подя во,14, вад&п. '4;
:{1Ё"с1|'в,ш''1 -> 6бес[е6) {4 = {1 {з ;

хци його вдастив1сть неасоп|у як тгце' остс!лькй це поде :ш!сти- е|зе 14 =12" 13;
Ёй[+ -, ]ех1 = Ё!оа{[о51г(!4); у [пексповцц
ре3ультат.
ти1}де /! @ёержане чцсло сумц'в 2рцвнях перепворюсмо т"'[ поля Ёё!!4
3ти|нтовати 3наче!тня певтто| властивост! тчтоакна подв|йг:им /! формагп ! ъ;1ь;;й;ь';;'аБй,вос'1
ре3ульпап
кла11&11няу: на н!й д!вото клав1плето :цитп|" 3береэк1тъ роботу
1
|

(5ате А|1). Биконайте програму | шереконайтеся, що не 1ио}тсн!! |. 3берепс!ть роботу ($ате А!!)'
2
з р!зви]ии гро1цо-
ввести чи редагувати дан| у пол! во!*+' 22. Б*пкоттаа** ,,р,"рйу ! пр'експерип[еп'туйте 3акрийте
1?. 3апрограткуйте рад|оккопки так' що6 шапря:шок етр!лт*14 по|с&- вими суш[ами й ','*р*ц|**' куп|вл[ '" ''р'д**'у'
з}.вав па вид операц!{: куп1вля чи прода}{с. 3роб1ть активвим в!кпо програ1ии "Ф6тш|в вадк}т|{'''
п(}дс в0!|з. у випадку веттравильвого
.{ля шерерив&н}тя ро6оти програми 1тункт годовт{ого ш[ен}о вшп
$лат1т*|ть 0в!ч[ т*'а правому г{еремикач1 Ёа6!о8ш!1оп2 ([|родаэк). введен!{я вх|дних даних виконайте
Фтримаете 38готовку функц|! Ра6!о8ц[!оп2Ф!|с|. } т!д| ц|е! функ-
та кольори си:швод!в (зокретиа о6'ект|в
]_аБе!3 1
ц|{ опитш!ть д||, як! 1ца1оть в!дбутися у ревудьтат| клацання тлп
,,,. #;;:;у,}ж!ри
вё!в), розт.*у'й"-'Бъй;"' фон формй 1*л'""'1сть
6о!ог)
право]уту пере1!тикач! пао!овц1{оп2 якваикрац{е'
так, тцоб форпта виглядала
:

]Ёогп1 ::Ра0!о8ц{|оп26!!с((тоь]ео1 -$еп0еф Ф""д_!'" суму в доларах'' п1сля


24" 3абезпе.,'"
''"#';;й;;;"
уо!0
{ -{аз1са!1 :терепт|шцевця шкав!вцика ми|'|| до
поля Ёс11з'
"=>"; $пошн!п1 у тг{.!е' а
Бибер!ть об'ект Ёй | встанов!ть властив|сть п!дказки. 3бере_
!-аье!3_>сар||оп = // 3м!нюемо напрямок сгпр!лка
Акгпов|зуемо попе Ёё|!3
як 3т{ачент{* "'']й',,'й; н:',* введ!ть тетсст
//

:" переконайтеся' що п!дказка


в6!{з _> $е1Ёосшз();
) ак!ть роботу, запуст!ть пр0гр&1у1у
3'являоться.
Аналог1чно запрогра1иуйте под|то с!!ск кдацанняш[ н& л1вошлу
-'
2{-:г"11отш!пяйтевиглядстр!лки3:>х1аФ,а(:шаф.
1-а5е!3 ! як з|{ат{е}{н:_-:'::"'*,'"''
1тере1шикач| нас]!овц|1оп1 врахувавтци' що стр|лк& 1шае пока3ува_
ти нд л|ве поле ('<:').' Фроазпентп про?рс']у'но2о ко0у с/пворено[
!(;;_;;;!' ""о!$.ь о6'октбукву р' п!сля чог0' актив!зував1ци
6ар{1оп введ!ть йБ*т""""у
вавву.:лрифта !т/|п9ё|п9э"" д'_':::,*::
функц![ запштлэ1пть у зв1тп. властив!сть Роп1, ви6ер|ть укра:шсь-
18. 3апуст1ть програ]иу 1 перекопайтесь, що поро}||.!кач викопу€ тт!ть тта ,'р*''*у !Бр*й*"*: | в його функц!!.введ!ть
сво{ функл11{ зг!дпо в тл. !7 ' ку букву р "#1"Ё" :>' у футткц|! д.::я л!вого переу1и1{дтта

19. 3апрогра:иуйте кпопку "|(!пець''. си1у[воли .: буквото п' .36ерехс|ть ро6от}' 3апуот1ть
""й1"]'ь зти!нида св|й вигляд'
6користайтесь фунтсгц!едо вак|нчентхя ро6оти програ!ии ех!||(): прогр{}п|у ! переконайтеся' хцо стр!лка
уо]ё |Ёогп1 БцЁоп26!!с&(|Фб!ес| *$еп6ег) 2(). €твор!ть ехе_файл ватпо! програми'
маке Рго'ес1'
8иконайте пункт гол'ввого 1цен'о Рго|ес1 =+
: :

-|аэ|са!1
ех!1(1);
{
запуст!ть етворепу програ1у!у 1 |}и[(()_
// 3ак|ннуемо робопу проерамо зт. зайри*те 6+}-Бш|10ег,
)
:хай}е о6числеввя для р[зппх початкових
дацих' ']
[.1Б з| ,'гг.,,''[
2Ф. 3апрогра:шуйте кпопку "06чпелптп' . 3апуст!ть ехе-файл в !тценепт ,,'""й"Б;;;;;"-
у г:ол|' редагув&н|{я - це 3н8чення властивост' тех1 об'ек_ шдшки. д^*
створе1{у фор:шу викдадачев!''
1алс!г:.п1т':,
'(атте 2в.;;;;;*ох*струйто
та ти|ту рядок. ,(ля перетворення цього да!1ого у ииеловий
д!йсний тип (|!оа:) скористайтесь функц!€ю $гтог!оа|()' а навпа- роботу. {(()м'1 [!}1
3оувоэлсемня 7' 3верн!ть увагу на використа];|!'!
ки -- функц1е:о Ё!оа1}о5|г(). опитц!ть основн! (}сшгэ, эшпа) | додат- д**'*' й."'"'''*' як! стос^]лто'г']]-11 '"'"'' '"'
кр&пки у
ков!' (со6, е0) з::л{нн!. "*:д"""
л!оти' гривнево! чи доларово! сум
|{р1|г1!{и в!1!(о-
д]1я десятково!
;;едбачений операц!йно:о систсмо!() !}1}|||()г()
ристайте ;;;;;;'

\57
156
а та-
комп'ютера (див' $!а( (|_1уск) э
5е[1!п9з (Ёалаштовування) + 6оп1го! л!овати функщ!то, очистити шоля виведення ре3ультат1в' команду для
э що м!стити1це
Рапе! ([1анель керування) Ре9!опа! 5е1{!п9э (]!|!сцев! параметри) -: ко]*с контекстове мен}о (Роршр\:1епш)'
Результати табулювання вивести у
закладка [ч|цпбег (числа), рядок оео!па! эупбо| (6имвол десятково! очистки поля виведення' мепо)' ||ередба-
крапки)). багаторядк."" (об'ект типу
Бправи
"";;;;;;;у;;;;;
чити моэ1слив!сть виведення ре3ультат!в на екран' у файл' у
1у!асив. Ёапрямок виведення 3адати
3а допомого1о трьох пра-
1. ||ередбачте у створен!й програм! ш]е од1!у к!1опку для очищенн'| на панел| групи
пол|в гротпових сум. 3иконайте програ]иу { переконайтесь у правильнос_ шорц|в (о6'ект!в ти1у сБеск8ох), розта1шова11их
т| !| роботи. об]ект!в (типу 6гошр8ох) (див' рис' э;'
1]0козка' [ля об'ект!в Ё6|13, Ёо!|4 у функц!! опрац1овання под|! на_ ство-
тиокання на ц1о кцопку використайте команду присвоення 1хн|м влас- [еоретипн! в!доптост!' Фб'ект йепо застосову1оть для
тивостям [ех1 пороэкнього рядка ('') . ре11!{я багаторядкового редактора'113*^т"у]ч-::':::'"""
волод|е ще такими:
2. 3абезпечте появу п|дказки "8вед!ть курс куп|вл|'' та "Бвед|ть ;;;;;;";;'ей'-поле р"д'гу"''ня мегпо
куро прода}ку'' п|сля перем|щення вказ!вника митш! до пол!в Б6!11 та Ё0!12 |[ркклади з}|ачень
в|дпов!дно (див,. п. 24|.
3. 1!1одис!!куйте програму' передбанивтпи додаткову :иохслив|сть 3береакення виокрешт_ [гше (виокремлет{т{я
зти!нитипу операц|й (куп!вля, продаэ+с) унасл!док клацання ми1пе1о н{! лент{я фрагмента не 3бер!гаеться), Ёа!зе
стр|лц1' 3апитп1ть у зв|т фрагмент програмного коду' який реал!зуе ц1о тексту у мо1!1е}{т (збер!гаеться)
монслив!сть. 3иконайте програму.
|1|0казка.,(ля цього дв!н| клацн|ть на текстовому пол| стр|лки. 3адання початкового
Б1дкриеться в1кно програ1иного коду !з 3аготовкото фувкц!{ !-абе!36!!с[ тексту у пол! в|сть (задаеться у
(опис д!й у випадку клацання на об'ект! |-абе!3). } т!л| ц|е| функц!й л|алоговотиу в!ктт!
мо)кна скористатися командами вигляду:
1!1акситшальна Ёапри*л'д, 50 -
|' (вао!овц|1оп 1 .6['тес&е6=1гше)
п[о}клива к!льк|сть п'ятдесят символ!в, 0
"

// 8сгпановлюемо перемцкач у праве поло)кення, зм!нюючц


/ / значення власгпцвосгп! €Аес|<её об'екгпа Ра6!о8ц||оп2 их си1швол|в
е!эе 5$шопе (в!дсутн!)'
/| Бспановлюсмо перемцкан у л!ве поло)кення, зм|нюючц Ёаявн!сть смуг
// значення власгпцвоогп! ё!лес*е6 об'ектпа Ра6|оБц![оп1 црокрг{увант{я
4. €прост!ть форму (вилун!ть зайв| об'екти) та зтт!н|ть код кнопки
Ф6'ект 6!тес(8ох використову1оть для створення
"Фбчислити'' так' п1об 1! моэкна було використати для переведе[1ня миль не3але}1(}1о-
у к|лометри чи навпаки залех(но в|д полохсення г{еремикана (1 миля - го дво- чу! трипо3иц!йного прапорця: ув!тшкнено/вимкнено
1'609344 км).
д""-ц"""" ви3начеш! так| дв| нов!
5. ||/ створену для задач1 уп. 4. форму вставте групу перемикач|в 1Б&."'уй""и). 'б|екта
(о6'ект Ра0!о6гошр) для ви6ору типу мил! 3 двох 1\{о}кливих з11ачень: властивост1:
морсько| чи звичайно! (1 морська ]!1иля : 1,852 км). Бластив1сть Фпис властивост! 11риклади 3на:9ч
[!]0казюо',(ля задання п!дпис!в до перемикан!в викориотайте влас_
тив1сть 1{егпв групи перемикат|в Ра6|о€гошр, а для ко!ттрол|о вибору Ёаявн!сть третьо1 тБ ('р"".зиц|йний
позиц!| (с!рий прапорець), Ёа!эе (дво-
певного перемикача скористайтесь влаотив|стто !1еп|п0ех (дор1внтое _1, А!!отш€гауеё
иц!йв ий пр949!9 ц ь]-
якщо }коден не вибрано, 0 _ якщо вибрано пертпий перемикач групи, 1 ув|тшкнеттий) п оз
сб6гауео (с1рии'' с0(-,;[!-
- якщо другий ! т. д.) - с[ес[е6 (вимкнеттий),
5|а|е €тан шрапорця
сб6!'тес[е0 (ув!мкне гти !|
$ 4. 3АдАчА тАБул!овАння Функц1!
|[анель групи об'ект!в 6гошр8ох при3начена для 1}и!(()|)}!()'|'()
|)():}м!|!1(!|!

[1рогратшування цикл|в. Фб'екти: 1!1ехпо, 1\:[а|пР1епш, |з к!лькох об'ект|в' |[анель групи


'"_"й"руй" програ1ши. 3л:ц<;'п'д: :зс:<'':'!
Роршр}1епш, €}:ес&Бох, 6гошрБох ""
вутоть для покра*;;;;_ ;;зайну в|кна
описаних ви1це'
|-!ього об'окта аналог!чн! до
1!1ета роботи. бтворити фор:цу для ро3в'язування 3адач| |'()''!()|]||() м()|||()
3а допоштого1о об'екта ма1пмепц отвор1о}оть
табул1овання функц|[. €творити у н!й головне ш[ен}о (о6'окт ||рограми. Фсь деяк| властивост! головного
1иен1о:
'п'ипу \4а!п!т:1епц) 3 кош!анда1ци: 3ак|нчити ро6оту програ1ути' табу_

159
|{->8
8ластив|еть Фпис влаетивост| ||риклади 3начень дьпо1}т)[ напря1ику.
$омплексн& вдасти- 3. 3:ш|п!ть п!ктогра:шу у йвотшу верхцьо1шу кут| фортши' задав|ци
||егпз $отианди 1у[еЁ}о в|сть (вадаеться у копкретпий файл 3 рис).пко1и п!ктограпти як 3ваченця вдасти-
д!алоговотиу в|кв!} вост! 1еоп (п!ктограпга) фор:ии.
.{опотш|.хсна з:и!нна,
$лацш!ть у р8дку !соп ша 5#, а пот!:ш тта квопц! !оа6 в|кна
1а9 ви1{ористовуеться в 0; 8 {ц!ле нисло) Р|с{цге Б6|1ог, щоб отритшати в|ктто [оа0 р!с|шге. Б!.дкрийте
текст| поогва}ди па11ку €: \ Рго9гагп Р|1ев \ !отптпоп Р|1ев \ Бог1ап0 Б}:агеё \
1тпа9ев \ 1сопв, вибер!ть граф!вт*ий файл з будь-якото п|кто-
3а дог:отиого}о об'ёкта Роршр!ъ4епш створ1о}оть ко}1текст0ве ш!е- гра1у{ото + 0реп =+ ок.
н}о деякого компонента. .{ля "г'лрив'язування'' ко}ттекстового 4. 3берепс1ть викопапу па дапий мо:т|епт фортшу у сво!й власц!й
мен1о до конкретного о6'екта нео6х|дно його властивост1 Роршр_ папц! (н:е + $ате А!).
[:/!епш надати 3начення |'мен| (|х!апе) конкрет}{ого контекстового 5" Роататш5йте у форпл! поля редагувацця вё|!1' вё!е' Ёа!|3 ! в1дпо_
[у!енто. Розглянемо дея:с{ властивост| контекстового 1иен10: в|дн! !:ш текстов1 поля ,,.}!!ва 1шо}|{а'', ..|!рава 1иеэка'', .,$рок'', а
Бластив!сть Фпис власт:лвост! |[риклади 3}1ачень
тако?1с текстове поле для вигляду задапо! фупкц!!
у : 5!п' +
1 (див. рис. 9, читай за5гвапсепня).
8ир|внтовання 1шен]о ра9еп{ег (по
А|!9пгпеп| в!дносно точки кла._ центру), ра[е{1
1{ання правото (зл!ва), раР|9}т{
клав!тпето митш| (спвава)
[гше (викликаеться
клацавня1![ правохо
Аш[оРоршр Автоматични:? виклик кдав1тцето), Ра!зе
ко1!текстового 1у[е}11о (викликаеться 3а
допо1\1ого1о тшетоду
Рорцр)
1{онкретна команда меЁ1]о (головного чи ко1{текстового)
мож{е мат!! так1 властивост|:
Бластив|сть Фпис властивост! ||риклади 3начень
гпб[х|опе (без роа6ит-
тя), пбБаг8геа}с
Роз6иття ме}{}о у (розбиття 3 верти-
8геа]< гори3онтальному
к&ль}1о!о 1эискохо), Ршс. 9. [отпово фор,]''о
напр'гмку п08геа}< (роз6иття бев Ршс. 10.0б'ектпц но Форм'
вертикадь1{о| риски) 3оувоэ:сешня.1.,(ля того, що6 ц|видко вставити у форлиу де_
$отк6!нац{я
к!лька однотипних об'ект|в, клацн1ть на п!ктограм| цього
(!'.|опе - в1дсутпя), об'екта, утримук)чи натиснуток) клав1тцу 5||{|. ?епе! вставл'||[
''гарячих' кдав!:ш 61г!+А, Р8' 61г!+Р10'
$попсш| ня у форму вс!х об'ект|в цього типу в!дбуватимет1"я без г:о
ддя викдику $[!{1+Ё3, $!:!{1+6|г| +Р1 1
втор11ого вибору п!ктограми. ,$тсщо вшпа0юово встпавшгпе
ком&нди 1шен}о 61г!+0е! зсл!л
вцй об'ектп, тпо вцлуч,/пь йооо зо 0опомоаою клов|тл! 9в!в|о- \|\с>(>
в!дмовитися в!д такого ре)*симу' клацн!ть н& зобраэп<<:::л:|
Ёй роботи стр|лки на пал|'тр| компонент!в. Розм|р, стиль | кол|р шгрис|гг|пл
вибер|ть на власний розсуд так, щоб ф'р*'
1. 3аванта:кте серед0ви|це в|зуальхого програму|}а|1ж': с++ кра|це. $ауе а!!" """'"дй,*:гс:тпй.

Бц!1ёег. (;- 8ир1впяйте вставлеп! подя


редац[вацпя до л!вого [сра|о !|ор-
2. 3ти1в1ть 3аголовок (6арс!оп) форзши з "Роттп1'' ва "?абулк)вац- лцого об'екта та в!дцептруйте текстове поле вигляду
фуптпс:ц!|,
ня фувкц!!'' (6еа лашок) ! з6|льхш|ть роз:ш|ри форми у верти1{а- скористав1|!ись в1кшо:и вир1вп:овапь А1!3пгпепЁ.

!60 !
!
гт с++
161
!
14.8вед1ть 11азви ко1!|анд годовного 1утенк) фортши (див. рис. 11 |
п!дписи до них ], вико-
8иокрептте груг{у пол|в редагува1{ня. та э л::9п (вир|в- рис.12).
Ё6:* (редагувати)
найте коп1анду вибер!ть об'ект [т:!а!п!!]епц1 | дв|в! клацн|ть на 3начен-
:э ног!5оп1а!"'"''!Бй-1"нто
гыт э;оеэ (горизонталь1{о
_ л!в| шлеэ*с!) э уеп!- "{ля цього
няти) - н! його властивост| !{егпэ. !нтцш(л ц|лях - 0в!н! клацн!пть на са'
| ё,""" ечш{!у (вертикально __ р|вттотш!ртто) э Ф[. 3иокремте _ 6еп1ег !п :по:шу об'екга|. )[' в{кн|, яке в|дкриеться (Роггп'1->|\:!а!пйепш1), виби-
"|'
текстове ,''''" функц|! вс;*.= А!|9п э Ёог!зоп{а! райте 1цит]]е}о ра1ику коу1ат1ди ! записуйте назву кош|ат{ди, нап-
''",,"ду
\:!|п0ош (горизонтальт{о - до цет{тру
в|кна) :э ок' 5ауе А!!'
ЁЁ'""'!" ]
(об'скт типу 6гошр8ох)' риклад' "Фбчислення'', як 3начет{ня властивост| Фарт|оп у в|кн!
Бетавте у фор!"1у
''',1,'1ру''" Фб]ес1 1зрес{ог. 3акрийте в!кно створення команд голов}{ого
компо1{енту 6гошр8ох ::::':] |з 3акдадки
'1 "

[ля цього використайте (п!дпис). цього у{енто Богп1_>йа[п[4епц].


Б1ап4аг6. 3тш|н!ть 3начет{1{я властивост! Фар{!оп стидь | кол|р
об'екта т1а сдово "вийдення'' (без лач9к)' Розтш|р'
на власний розсуд' 3б|льтш!ть па1тель груг1и'
-р"о'у ви6ер!ть (об'екти типу €[е:[8ох)'
8. 8ставте у панель три прапорц1
кош[поненту 6[тес&Бох |х |з закладки
,{ля цього використайте 8ир|вняйте прапор-
$1адёаг4 пал!три коштпонент!в €**8ш|16ег'
!х-(див.' п' 6)' 3шт!н!ть 3т{ачен1{я
ц!, заздалег!дь виокремив111и об'окт!в на так|' як т1оказано 1та
]#""'?й!';
"рй-.'о"-с'"",сар{!оп (пфпис) цих
: *',1р йрифт!в вибер!ть наъластаий ро3суд' 1,1 ворення ?оловно?о меню
;н' *''р''"' та "! 1шасив'' у полоэ*се11пя
9. 8статтов|ть ,'р''''рц1 ! 5. Бвед|ть на3ви коп[анд коптекстового п[е|{1о форпти.
"ув|1шкнено''. -'-:--:-- зт{аче}{ня 1х1{1х Адя цього анадог!чно ззш|тт|ть значет{ня властивост! !1егпз об'ек_
об'екти та з:ш!тт!ть
,{ля цього виокре1\'тте ц| та Роршрйепц1 3а допомогото в!ктла }'ог:п1 .Роршр1!1епш1 (виклик
,'''"'','"'ей спеБкео (контроль ви6ору) на тгше' --
(об'спст [;!егпо)' цього в!кна див. у п. \4). } в|кн| ФБ]ес{ [врес1ог введ|ть текст
1Ф. Бставте у форпц багаторядкове поде ййа'у,*"дя
використайте кош{шоне}1ту ме1о-.3 !з.закладки $1ап- "Фчие!ити поле виведення'' без лапок як значення властивос_
[ля цього 6++Бц!1ёег. 3б|льтш|ть розшт|ри шо- т1 €ар{!оп (рис.13). 3а 6аакання1ш мо}кете приду1у|ати ще якусь
0аг6 шал|ф, ,''й,'*"нт|в цього ко1у'анду' 3акрийте в|кно Роггп1 .Роршр}1епш1" 3берехс|ть фор_
дя. власти';",' Б|.'ц:вагэ (наявн!сть сш!уг ттрокручування)
вертикадь}1а тшу (5аме А!!).
о6'окта задайте як $$во1п (будуть обидв| еу!уги
-
| горизонтальна). Ё!!е э 5ауе А[!'
11.3адайтепочатков!зиачет]|1ядляпол!вредагуванпял1во11
аргу_
право! аргуптепта -функц!] та для кроку
1}|е}1с
зтш!пи цього
п|ента' наприклад, так|, як |1а рис' 9'
обект!в' {ля набору
,[ля цього зпшн:ть властив!ст{ тех{ цих
си1\[воладесятково|крат[кивикориотайтеси1цвод'передбаве-
ний операц|йното систе1цо10 коштп'тотера'
12.8итр1ть елово 1!1етпо1 у 6агаторядково1иу пол! редагуваншя
(див. пояснення пишсне)' Ршс. 13. €тпворення тсонт!'екст[ово2о меню
0}]ес1 1пврес1ог зшт!н!ть 3:1ачення^в:::].1
['* ц''", у в!кн! о6'скта 1(|. {3апрогра:шуйте ко1шанду ''0ч*тст*\т|{ поле виведення'' !-().,|()!!-
Б!ст{ г;пеэ (рядки) [|епо1" Ёатиснувш:и на кнопку '::'' |!ого 1шен}о' скористав1цись п[етодо:ш 6!еаг о6'окта !\]!епо1 .
викличтев|кноредагуванняц1е1властивост|(в|кно$|г|п81|в! !![етоди об'екта _ це тта6|р функц|й, як|, аналог|нтто .г1с; :г.::::<:
е0|!!ог - редактор 6агаторядкового т1одя)'
8итр!ть сдово мепо'| т'ивостей, застосову|оть до об'скта. '[к ! у випадку |].'!11()'г!'|!!()(]
з ций в!кнотш' клацнув1пи ца кнопц! ок'
та вак1нч|т' р'йу ""''',"" 'г|, |тш'я об'екта в|д {ш:ен| його метода в|докрем.'|1ос1'|,(:'! !с|)1!||
| коцтекстове п1еп1о (об'скти типу
13. Бставте у форш1у :сото. Биконайте коп{анду птет{|о "Фчцстити поле 1}1{!]()/цс:т!:птт'',
]!1а|п]!1епц ! Роршр1\{епш)' е-*! ы |1е запуска1очи шрограму }1а виконання. 3'явитт,с.*{ :}1!|'(}'!'()|!!(1!
йа!п[ч:1епц Ё] ! ! Роршр|м!епш }
-ь+

.0,ля шього використайте-кош|поненти т|;ункц1| реакц|| на под|то виклику ц|е! котиандтт. :;||| :;::::п:
Б "*й''д'." в|Ё!!"'а' Ровтатпуйте про?рц'мшш|ктогра1ши в дов|льношлу лпт[ть команду виклику }детоду €!еаг для о!1ище}!!['| !!().]!5! !|!!!!('
на ептап1 вшкот[с!ння вонш бу0упа'ь не- об'екта мепо1:
ти!сц! фортши' /(сг1ня
ва:.0ц:шшлтш.

163
! (;2
уо!6 |Ёогп 1 : : }'.36''т[3##ж (рядок си:швол|в). Биконайте ко1ианду "|[рота6ул:овати'' 3 го-
-'а.1са|! 7,"!3/)'""[{{'!,!;''у':##:::" довт{ого ме}{|о' кл&цт{ув1ши на н|й один раз" 3'явиться 3а"готов-
// 6угпо !ншлшй номер, йоео ка функц!!' яку в&повн!ть так:
{
[\:!епо'1 -> ё!еа();
|| не вс;правляйгпе
// 8цклцкаемо мегпо0 о6'скгпа йегпо1 , якцй уо!0 1Рогп'! :},!3Ф!!ск(тоь,ео{ -$епсег)
:

// очцщас бааапоря0кове поле реёаеування { -|аэ|са1!


// 7епер клацн!гпь на форм! |!оа| х, у;
'
17. 3апрограплуйте ко:иавду ,'1{|пець'' годовпого ]шепк)' скористав-
{|оа| а = 51г[оР|оа1(Ё6!11 _> {ех|); |/ @Фрэкуемо нцс!1фе 3начення л!во'[ меж!
!!оа{ б = 51гтог!оа{(Ёс!12 -> ]ех!); // па правб[ меж|
1цись стапдартпок) фушшц!ето ех!((). |!оа1 [ = $1г}оР|оа1(Ёё!13 _> ?ех!); // Фёержуемо чцслове 3начення кроку
уо!ё ]Богп1::}{5Ф!!с&([Фб!ес1 -$еп0ег) /| [уп [х|5-|м'я коман0са
[т:1епо1->!-!пев_>Арр?п0(''А1|"); !/ 8 о6'скгп Ау1егпо1
{
-{аэ1са!! || "|(|нець" // вспавляемо ряёок з п!ёлцсамц сгповпц!в ареуменпу \ ! 3начення
// функцй'{ нерез па6уляпор \[. 8очцнаомо гпабулювагпш з л!во|'меж!,
ех!1('| ); //3акршваемо в!кно проарамо
\ |/7епер клацн|пь на форм| / / гю;<ш арут'мнгп х ге гРрвцц4]!пь пщву мех<у 3 пе внц м 0опуском :
{ог (х= а; х < 0 + б/2; х+= }т)
3береэк|ть в!'ко!{ану на даний моме1!т фортцу у сво|й папц| (Ё|!е {

э 5аме А!!)" у = 5|п(х); // Фбчцслюемо 3начення функц[:'


-'Фнистити 6!.тео[е6)
18. 3апрограп:уйте копланду поде виведенпя'' коцтекс- 1{ (6Бес}<8ох1 _> 1!кщо сгпо|пь прапорець',!.!а екран,'
//
|/ Формуемо | мпвтюмю у гюгю йатр1 сшмвольн! ря0кц 3 ареуменгпу
тового }|опк). // па значення функц[[
.(в!в| клацн|ть на команд| контекстового тшен1о "Фчистити по- [т:'!епо1 -> |_!пев _> Арреп0(Ё!оа||о$|гЁ(х, 1|Ё!хе0, 2, 2) + ,\1,+
де виведення'' у в|ктт1 Роггп1.Роршр}1епт:1 (виклик цього в|к- г!оа1то31гг( у' [1Ё1хеё, 2, 2));
на див. у п. 14). 1екот фунтсц!| очищен1{я такий са:иий, як | у )
команди головного мет{1о' а са}!е: йепо1 _> €|еа(}; (див. п. 16).
19. ''||рив'япс!ть'" контекстове 1иенк) Роршр|!/!епш1 до фор:ши Ёогп1.
22.8пкотт'айте програ:шу | поексперип|ептуйте з р1зпитии зпачен-
Ёасоцн1гпь но фор;п! | задайте вдастив!сть фор:шш Роршрйепш як ня:ши л1во[ право[ :иезк! та кроку аргу1шепту. 3акрийте в1кпо
Роршрйепш1 програ}у!и "!абултовання фувкц!!''"
3аувоэсентт:с.2. 3начегтл*я вдастивост! (Фрми йепц автоллати![но вста- 2!}. 3борепс!тьстворепу програп{у у сво!й папц1.
як йа!п[чл1епц1 у момент створення гюловног0 менто (п.
новл1о€ться 13). 24. 6твор|ть ехе-файл ватцо{ црогра1ши.
20. 3апуст|ть створешу програ1цу та досл|д!ть !} ро6оту. 25.3акрийте €++ Бш|[0ег, загцет!ть створеву програ1шу ! вико-
|{оексперитшентуйте з багаторядкови]и подету1 редагування ме- пайте обчисдешпя для р1аних початкових дапих.
по'!, вводячи та коректу}очи у г:ьому будь_який текст. 3вер-
26. |1роде:шопстр1йте спворещ/ фортшу ви|{тдадачев!' 3ак|шч|тъ ро6оту.
н|ть увагу на те' що в цьому в|кя! !:о}кна вико1!увати так! ак
д!| з текстом' 8к | в текстовош!у редактор|: виокре]у1лювати 8прави
фрагш:ент тексту' коп!товати, пере}1осити чи видутати тдей 1. ,(одайте до ко1{текстовотю менк) команду ,,!{йе"т!!ъ'' ! зашротра:шуйте !!.
фраг:шент. Битр!ть текст 3& допомого1о ко1![&}{ди годовного 1ие- 2- €твор1ть ще о0не контекстове ме}{}о 3 командами ''3няти вс! ттра-
н10 "Фчистити поле виведення''. 11['е раз введ|ть текст ! вит_ ::<г;;ц|'''''Бстановити вс! прапорц!''' "8становити 1нверсивно" | запрогр11'
р|ть його 3а доцо:т1ого1о ко}{текстового мен1о (для виклику муйте його. ]аке менто мао з'являтися п!оля клацання право|о клав|тг;его
контекстового ш|е!11о фортии потр!бно кл&цнути право:о клав|- мгтшл] на дов!льному м1сц! панел{ з прапорцями. Ёе забудьте ''глрив':т
тцето митц! на в!льно:шу м!сц! форми). 3ах!ттч!ть ро6оту програ- :!|['1'и це менло (Роршрйепш2) до панел| 3 прапорцями (див. пунлст 19).
1\1и' клацнув1пи на котшанд! менто "$|1тець''. 3. 1}1одиф!куйте реал!аац!:о програми, передбачив]||и монс.лпипз!с:з.:,
г':тбултовання функц|1 !. 1! пох1дно!' Биб!р вар!анта та6ултовплг::от (:;
2\. 3апрограплуйте коптапду "||ротабул1овати''. :;т;х|дно:о чи без не|) зд!йсн|ть 3а допомогок) додаткового прапор!('(.
Б.паотив!сть !!пея о6'екта типу мепо € кош|плексзтото, тобто та- 110казка. 8иконайте так! д!|:
ко)к е об'ектотц з| сво|:ци влаотивостя1ши та метод&1!!и. Рез1'д5- . вставте у форму об'ект типу €[:ео&8ох (прапорепць), пл:п7ц::[!,п.с.
тат роботи ц|е! програ1![и _ це та6лиця, що складаетъся 3 де- його властивост| 6ар1!оп зг!ачення "||ох1дна'', вибс-'р1тт, ,:1..:::: :г1;1
к|лькох рядк1в' 1{об долутити (додати) у поле йегпо1 новий пису один |з кирил|зованих тприфт!в 12-го розм1ру, п;г.т1>1тз::.ял[.!
рядок до таблиц|, требо зтц!нити зц&че|{ня ко1шплекстто| вдас- те вст&влений об'ект.
тивоот| !-!пез (рядки) за допо:иогото {| методу Аррепё (вс1авити) з о з:ш!н!ть програмний код команди,,||ротабуллолз::ти'';
одниш[ аргументо]и _ си]утвольни]у[ рядко}1: мепо1_>!-!пеэ_>Арреп0 4. Бизначте к].льк!оть елемент|в м&сиву б|льт::их, ::1;гс 0,5, ! мс:п:_
;::т:х, н|]к 1.

164 165
!
|
б. |!ередбанте у створен|й програти! додаткову:шох<лив|сть для визначен_ $ 5. ствоРвння нАвчАльно! шРогРАми
ня максимальног0 та мй|:шального значень футткц|!.
|!!0казюа. ]|' т!л! функц!! Бш{1оп1€!!с[, що описуе програмний код Бивчае:шо англ1йську пдову.
кнопки "|{рота6улховатц", скористайтеся кома1{да1[и: Фб'екти: ф1гура, таймер' 1}|ульти1}!ед[йний програвач'
// 11а понагпку функц!1': подв[й|{| к!{опки та |[1дитсатор стану
1а]=э!п(а)*':;
11 (пах < у) пах = у; // | ццкл! спа6улювання'. 1!1ета роботи. Розробити програму для перев1рки внань
англ!йських сл|в 1шляхом тестування. Ёористувач 1у!ае 3а о6ме-
6. 3м!н!ть функц!! комат{ди "|[ротабултовати'' так, шдо6 для ув!тшкне_ }тсений час ш!етодош| перетягування розтатпувати три мал}онки
ного прапорця ''у штасив'' виведення результат!в виконувалось в однови_ п|д в|дпов|дними англ|йськими словами (див. рис. 14). 3асто-
м|рний масив. сувати |ндикатор часу викона11ня 3авдання' 3вуков! ефекти та
7. 8ставте у форму об'ект €!таг{ !з закладки А0!{|опа1 дт:я побудови
граф|ка функц!|: навести анал!з-п|дсумок тестування.

пРф 8ин|А
' 8йпф9ф1сЁ:'1'1';'1:5' ,1.
#. н|ъ,|Ё!з й.опФ .,.'
' /-: ,$'[.!Ф,,,.
------:\
..:.]..].- .':,
'*Ё;а
[ жу.ь
,

н у г н!фъй:1: |"!! , 1: ,,.! '\

! ;!$:з'
1.00 0.84

;. 11'
:|/' .| \.1
:

\::
'!.10 !
0.89 1

1.20
'!.э0
пч1 ,'г,,,1'.9'ё!5 ....
. ,1;. ,:', \, !
0.96 ]|
1.40 0.99 льЁ:йах3]|];| !] ':' . :!,.
'1.50

1.60
1.00
1пп г**ф /; ..
/;
..?:
/
!' . -{:,1:: 1..
.-:1,
:'::
:::

|ш|
1.70 0.99
.

1.80 0.97
1.90 0.95 ] ,оо п Р}ЁЁ|{п'й$6 $,08 $.в0 в.в6{Ф 6!?9!9;00!9,в0|
"]#
2.00 0.91
2.10 0.86
0.81
2з0 075

,{в|н1 клацн{ть на ньому ! на закладц! $ег!ев, клацнув|пи на кнопц1


А06, у в|кн| ?ее6}таг! 6а11егу, ви6ер!ть п!ктограму потр|6ного граф|ка.
Бабору даних' що в|дпов!датиме цьо1иу типу граф!ка' присво€ться стан-
дартне |м'я Бег1ез1. |1оставте ни забер|ть прапорець 39 за вдасни:ц ба-
}кат{ням + Ф&. ||оекспериментуйте з р!зними закладками в|кна Б0|[|п6
6}таг11. Фтвор|ть додатковий пункт менто або вставте кнопку "$амалтова-
ти граф|к'' дл'я отримання граф|ка | запрограмуйте (наприклад, кнопку) так:
уо!6 ]Ёогп'| ::|х!3Ф!!с[([@б!ес{ -$епёег)
{ -{а5|са|!
{!оа| а = $1г[оР!оа1(Ё0!11 _>1ех1); // Ф0ер>кусмо чцслов] значення л!во[ меж|
{!оа| б = $1г}оР!оа1(Ё6!12->1ех|); // гпа право[ меж
[!оа| [': = ${гтог|оа1(Ё6!|3->[ех1); |/ @0ержуемо чцслове 3начення кроку Ёабути навичк|в роботи з таки1ши об'ектами: геош1отри|!!|||
{ог ( !!оа| х = а; х < б; х += [':)
ф|гура (5баре), таймер ([!пег), мультимед1йний прогрпвп.: ([\:'!с;
{5ег!еэ1 ->Аё6( з|п(х)' Ё!оа{}о5{гЁ(х'1{Р1хеё'2'2)' с! Ре6 ) ;}
6!аР!ауег), спарена кнопка 3 полем редагування (65р!пЁ0!|), !пг71::
}
катори стану (€аш9е та Рго9геээ8аг).
|[оексперитиентуйте з р!зними закладками в!кна Б0!{1п9 €}тат{1' ш1о-
ра3у запуска1очи програму на виконання 3абер!ть легенду (!-е9еп0), мар_ 1еоретинп! в1до:иоет|. Розглянемо деяк1 нов1 об'ц:пст'в.;.
кери (Ро1п{э) ! п|дписи до них (1!1аг[з). |1ридумайте та вставте 3аголовок !аймер ([!пег, п|ктограм'' Ф, ,,а закладц1 $ув{сгт:) !]}!|с()|)[4()
([!1!е) та л1длие (Роо{) до граф1ка. 1'ову}оть для повторення фрагшлента коду прогрд1ии 3 !!()||!|()!()
8. €у:ш!ст|ть побудову граф!ка з табултовання:и функф!. :тер|одивн|стто. Б!дпов|дший фрагмент розта|||о8}|01'!т у т'1.:п!

!66 167

1{
функц!! опрац|ова|1ня под|! Фп[!пег таймера' |1ер!одинн!сть |п:!е0!аР!ауег1 ->Ё|!е!.!апе="повне !м'я в!део_ ни ауд!офайлу'''
\:!е6!аР!ауег'| ->9реп();
Ёй***, *" у м|л!секундах 3ада1оть власзив!стто !п1еша!.
1т:!е6!аР!ауег1 ->Р!ау()
'.йм.ра
|еометринна ф!гура ($}:аре, п|ктограма Ё на закладщ1
;

€ арена кнопка 3 поле1ш редагув&ння (€$р!пЁ6!|, п!ктогра:ша


п
Аё6||!опа1) признанена для зобрахсення елементар}1их геомет- !{Б цд закладц| $атпр1ев) при3начена для введення та корекщ!|
ричних ф!гур | мае, 8окрема' так1 властивост1: ц!лоиислового 3начення деяко| величини п|д нас ро6оти прог-
3ластив1еть бпис влдстивост| [1риклади 3пачень рами. Бластивост! кнопки:
)(арактеристики . с!магооп
8гцэ[-€о!ог:
Бластив!сть Фпис властивост1 [1риклади 3пачень
8гцз}: кольору (6о!ог) | стилто о 8гшз[_$1у!е: бз$о|!6
($!у!е) заливки /стгтт!льний). бэ!е(!са! п1]я мого
[!1охслив!сть
Ё6!|огЁпаБ|е{ 1гце" Ёа!зе
э1Роцп0Рес! оелагування
(прямокутник з! 1!1оэтслив!сть будь- якого
Ёпаб|её [гше, Ёа!эе
$Баре Форма ф|гури скру}леними краятии), оедагування
е!Б!!1пзе^ в|3ошаге !псгегпеп| }{оок зти!ни 1: 4 (ц1ле число)
)(арактеристики 1{омплексна йах!а|це йаксимальне 3т!ачення [{!ле число
Реп гпдниш| ф!гури властив!сть м|пуа!це 1!1!н|мальне значецня 1[|ле число

1ндикатор отану (66аш9е, п!ктогратшв к на закладц! Багпр-


,щ на закладц| \А/!п32) використо-
[ез, Рго9геэ$ваг, п!ктограма
ву1оть для наочно! демонстрац|[ етану виконання деякого шр0-
цесу. Розглянемо три вл&стивост| |ндикатора €6аш9е:
3ластив!сть Фппс властивост| [|риклади значень
(гори-
91<Р{ог!:оп|а|8?г
зонтальний рядок),
(!п6 [ип |ндикатора 9&Р!е (кругова д!агра_
ма), 9[1ех1 (процентне
в|лобоа:кеттття)
8!добра+кае стан [{|ле висло м!атс
Рго9гезэ
[ндикатора [т4ах!а!це | [ту1!п!а!це
5Ботш[ех! ,{одатково в!добраэкае 1гце, Ра!эе
стан у поопентах

)(!д роботи
|. 3аваптапсте еередовшще в|зуальпого програ]иувапшя €++
Бц110ег.
.,
3апп!ц!ть 3агодовок (Фар*!оп) фортии з "Рогтп1'' ва "Апгл1йсьхса
1шова _ тест5гваппя''.
:1. 8йпдовтесь в!д ус1х систе]ивих квопок фор:ии' задав1пи :}|!а-
чеппя га.5е в ус1х поаиц|ях властивост1 8ог6ег|сопз: Б|5уэ|о:п_
[!!!епш' Б!1!/|!п!тп!:о' б|йах!п1ае та б|}!е|р.
Роботу з 11рограмото вавер1цувати:![емо }{атиск&!{ця1и !!{1 ]с|!()!|
ку ''8их|д".
Розта:ш5йте па форти! об'окти так, як пока3а||о ппа ри<:. | 5
йто так| властивост! о6'ект|в:

168 !69
!

меё|аР]ауег1 !!з!б!е Ра!зе \ $р1аэ}п \ 2б6€о1ог у об'окти !па9е1' !па9е2 | ]па9е3 в|дпов|дтто.
Фг!еп{а1!оп рбЁог!:оп1а! Бставте п!дписи до цих :шалтонк|в (див. рис. 15).
Рго9геэз8аг1
[йах 10о 8. 3апрогра:шуйте конструктор фор:ши 1Ёоггп1::1Рогп1 | функц1то
]т4!п 0 пе5ш!{() пов|до:илепвя ре3ультат|в тесту:
Роз!1!оп 10о
во!1огЁпаь!ео г а!5е [Рогп 1 : :1Ёогп'1 (тсопропеп1- Фшпег) : 1Ёогп (Фшпег)
[ч:|ах!а!ше 10 -'аэ|са!|
{
5р!пБё!|1 х1 = !па9е1 -> !-е1|; /| 3бер|еаемо понагпков1 коор0цнапц
]т/!п!а!це 1
х2 = !па9е2 -> !_е{1; // л!вцх верхн!х куп!в
!а[ше 5 х3 = !па9е3 -> !-е{{; |/ тпрьох малюнк!в у форм!
(|п0 ькок у = !па9е1 -> [ор;
8||8{п1 6ао1!оп |-отово )
(!пё б&€!оэе
8118!п2 0яп}!оп 8их!л
5паре1 8гцэ['т-6о|ог с|!п{о8[
$]':аре2.' 5!':аре3 $Баое э1Роцп0Рес1 мо!ё Реэш!1(!п{о пэ9)
]па9е1' !па9е2' 51ге1сб !гше {
// 3упаняемо паймери:
|:паое3 Богп1 _> [!пег1 -> Ёпаб|е6 = {а!зе;
6ар1!оп Фбов'язково т:атисн!ть }1а кноп_ Ёогп1 -> 1!пег2 _> Ёпаб|е0 = [а!зе;
ку "[отово" п!сля розм!щення // 3нипусмо 3вуковцй файл:
!-аБе]1 оисунк!в!!! !{ (пэ9 == г!0|1) Ёогп1 -> йе0!аР!ауег1 _> Ё!|е},!апе
= "1а0а.шау";
\:!огё\л!гар гше е!9е Ёогп1 -> |т:|е0!аР!ауег1 -> Ё!|е[,]апе = ''0!п9.тдау";
// 8|ёкршвасмо плеер
3аувоэюення,1. Розм!ри ф!гур повинн1 бути б|льтпими, н!эк роз- Рогп1 _> йе6!аР!ауег1 _> Фреп();
ти1ри малтонк!в, оск|льки мал1онки сл|д розтатповувати строго у // Б|0гпворюсмо звук
сейедин! ф!гур. ,[кщо п|д час наклада!!!!я рисунка на ф|гуру Рогп'| -> !т:1е0!аР!ауег'| _> Р|ау();
рисунок 3ника€' перем1ст1ть його на передн|й план ко1\1андо}о // 3!6кривасмо в!кно пов|0омлення
його контекстового тиенто 3г!п9 ]о Ёгоп1. !! (пз9 == г!9!.:1) Арр|!са1!оп -> [/!езэа9е8ох(''[1равильно!",
"[ов|домлення"' йБ_Ф();
б. .{в1н| клацтт!ть па пер|цо1иу тай:шер! | запрограплуйте бли:иац- !' (пэ9 == шгоп9) Арр!|са1!оп
_> [!!езза9еБох("Ёеправильно!",
шя повиоп[ле||ня ''Фбов"язково натисп!ть ша квопку ''|отово'' ''[ов!домлення"' йБ_Ф();
п1сля розпх1щевпя рисушк1в!!!'' так; !{ (пэ9 == поге) Арр!!са1!оп -> [/!еэза9е8ох(''6пробуйте ще раз!",
-5еп0ег}
''[ов!домлення"' [т:'|Б_Ф() ;

уо!ё 1 Ёогп 1 : :1 !пег1 1!пе([Ф5.!ео{ Ёогп1 -> |!пег1 -> Ёпаб!е6 = |гце; |/ 3апускасмо гпаймеро
!
1 -{аэ|са!! .. _ Ёоггп1 _> 1!пег2 _> впаь|ео
= |гце;
[| 11-аье!'':_'м!з;ь!е1 // 9кщо поле св][пцгпься ' Рогп1 _> Рго9гезз8аг1_>Роз!1!оп
= 1б6: // !н0окагпор с!пану - на почапок
|-абе!1 -> у!5!ь|е 1а!5е; = |/ попе аасцгпься, Богп1 _> !па9е1 _> 1911
= х1; |/ 1оверпасмо малюнкц у
е!зе Рогп1 _> !па9е2 -> |_е{| = х2; |/ вцх|ёне положення
!-а0е!1 -> 9!э!б!е = |гце; || !накше 'поле засв!нусгпься Рогп1 -> !па9е3 _> [-е1|
= х3;
) Рогп1 _> [па9е1 _> }ор
= у'
3апуст1ть програму | переконайтесь' що т{апис на форти! бли- Ёогп] _> !па9е2 _> |ор
= у;
Ёогп1 _> !па9е3 _> }ор
= у;
1иае.
)
6. )/вед|ть опис глобаль1{их в:ш|пних програ1}|и:
Функц|я Ревш!() не е методоту[ кл&су гогп1. 1о:иу зш:!на !].'|1!(:'|'1.|
,(ля цього у в{ктт1 тексту програшти п|сля {снутового опису востей будь-яких об'скт|в форми в н|й в!дбуваоться ]]|.'!'|х()м
зм|нно| фортии введ!ть так! рядки:
*Ёогп1 явного 3азна'чення |тиен| форшти Рогп1 перед !тиене:и в|.т1ттс;тт!71:;с>
]Ёогп1 вх<е е в заеогповц| мо0уля
!/ !!ей ряёок го об'ект&, т{априклад, Ёогп'|_>[|пег'1->Ёпаб!е6.
ьоо| с|!ск Ёаявн!огпь клацання масл|
|/
!п| зп!'{х,
=
5п!{{у
'а|5е // !{оор0анагпо мшш! всере0он| малюнка 9. 3абезпечте перетягува1{ня пер1цого п1ал1онка па <|:<г;;м!, ::::-
!п1 х1, х2' х3,у /| 1очагпков| коор0шнагпш малюнк|в програ1иував1ши опрацк)ванпя таких трьох под!й 7ц.л::: сг6'с':с:т'::
епцтп !п|о {г!0п|, шгоп9, поге) !па9е1: @пйоцэе9ошп (,{кщоЁатиспути1}1итшу), опмошзо!т1|омо (5|:с:-
Резульгпагпц пес[пу
|/
:цо[ягпути1}1итшу) та опмоц5ешр (8кщоБ!дпуститиР!в:::пу). ./[.тп::
заповпеппя 3аготовок цаведепих фупкц|й спсорис:т'::!!'г(|(:|' :!:|_
7. 8ставте тиад1опки [ас{огу.Бтпр, э}п|рр1п9.Бгпр ! [1папсе.Бгпр з
кладкохо' !уепЁо в|кпа 1пспектора об'скт1в пер|[[ог() м]!.,!|()|||с!!.
папки €:\ Рго9тагп Р!1еэ \€огпхпоп Р!1еэ \ 3ог1ап0 51паге0 \ 1гпа9ез

\7\
'70
12. 3апрогра:шуйте кпопку''|отово'', яка перев!ряе правильв!сть
уо|6 7Рогп1 ::!па9е1 [т4ошзе9ошп(7Фб|ес1'5еп0ег,
-_[а5|са|! [[т:|оцзевц{!оп 8ш1!оп, 1$[т11|5{а1е 5Б!{1, |п| х' !п| у) ровта!цува1|пя }|адк)пк1в усередив| ф1гур:
уо!0 тРогп 1 в11в1п 1 Ф!|с[(}Фб|ео| *5епс@0
|гце;
{ : :

с|!ск = // с||с* - це !н0шкапор напцскання на клав!сшу мшш|


{
-_!аэ|са!! // Ё!кщо: перьшой малюнок у 0руе1й ф1аур|
з||!{| = !; /| 3апам'ягповуемо коорёцнагпу (\;у) [почкц $[аре2) &&
[{ (!па9е!п$баре(!па9е1'
з[!{!{ = }; /! клацання мц!1!ею всереацн! ма!1юнка
/! ёруешй ма!1юнок у п'ретп|й ф|еур|
)
|па9е!п$[аре(1па9е2' $!таре3) &&
// прегп!й малюнок у перш|й ф!еур!
!па9е!п9}'таре(!па9е3' 5[аре1 ) )
уо]6 __'а5|са!] }Ёогп1 ::!па9е'! [т:!ошзейоме(}@Б]ес: -$еп0ег,
Резш!1(г!9[!);
т$п!'{5{а{е $|!{|' 1п| {' 1п1 1) е!зе
8еьц!1(шгоп9);
{
!| (с!!ск) { |/ 9кщо нагпс;снупа клав!сда мцш], зм|нюомо )
// коор0с;нагпо малюнка на велцчцну
// зм!нц коор0шнапо 13.3апрогра:шуйте другий таймер' який 3абе8печ/€ !ядикац1то
[
!па9е1_>!-е[1 = !па9е1_>[-е1! + _ з|:!!|!; |/ вказ!внцка мош! (\;!) з часу викопашшя в{д 100 до Фо/о з| 11|видк!ст1о, оберпево про_
!па9е1_>1ор = !па9е1_>[ор + 1 _ о[!$}; // урахуванням йоао порц1йпото до ч!!сда в 6$р!пБ6!|1.
// зм!щень у сере0о;н|
\ // ма!1юнка э!'т!|!\' э|т!{!{ )[' випадку' коли користувач не встиг ро3тат11)|вати мал1о!{ки у
пря1у1окут!{иках | н&тис!{ути на к}|о!тку "[отово'' у в!дведений
час' ттод&€ться ввук 'д1нг" | в|дкриваеться !нформац1йше в|к-
)

т{о 3 пов|доп1лец1{ям "6пробуйте :це раз!''.


уо!ё [Ёогп'1 ::!па9е'| |1;|оцэе1]р(1@б!ес{ *$еп0ег,
-'а5|са|! [}:|оцэе8ц|1оп 8ц{!оп, |$[т!!|51а1е $п|'!' |п! !,' !п1 1) уо!6 ]Ёогп1 ::|!пеР1!пе([Фб!ес1 *$еп6еф
{ -{а51са!|
{
// 3апам'ятповусмо, що клав|сца мшсл| в!0пущена // 3а0асмо у'цвцёк!сгпь руу !нёшкапора:
о!!с& = |а|зе; 1!пег2 -> !п1еша! = 6$р!пЁ0[11 -> !а!це " 50;
) /| Брацюе |нас;капор насу:
Рго9гезэ8аг1 _> Роэ!1!оп = Рго9гозэ8аг1 -> Ров!1!оп _ 1
3верн!ть увагу' що програма не шерев|ряе' на яку саш:е клав|- // 9кщо час вцчерпано "ёпро6уйгпе ще раз!''
;

тшу ту1итц! натиснув користувач, ! тому перетягува!{н,я ]шо}кна || (Рго9геэвЁаг'| -> Ров!1!оп == 0)
3д!йсц}овати будь-якото кл&в|1цехо. |1ерев|рити кл&в|1ц! мит::! Резц11(поге);
!9[о'{!1]&' проавал|3увавтпи &ргу]\[ент 8ш|1оп (тишу |!т4ошзеБш1{оп) на- )

ведених фувкц|й: 8ц1!оп : {п5[е1| (л|ва клав|тпа), пбР!9|т (права), 14.3берешс!ть програтшу та проокт у робот!й папц|.
пб!т4!60!е (середгтя)}. $оордияати вк&3|в1{ика :ии1ц| у п|коелях
15. €коп|тойте :иувлтин! файли йп9"тшат та {а(а.туау у свок)
переда']оться у фу'{кц!! за допотшого}о арг)г,шент|в )( | } ц!лого
типу. роботу папку а папки :€ \'1{}[}Ф}у$\мво1А.
16. 3апуст!ть програ1иу. перетягуйте ми|шек) 1шалк)пки в
10. Ацадог|чпо 3апрогра:шуйте в!дпов1дп! под!! для перетягувап- серодину в|дповйпих ф!гур. 3ак!н"л1ть роботу.
|!я двох !птцих 1}1а]тк}пк1в.
11. €твор1ть фувкц1:о !па9е!п5Баре дл8 перев!рки розта!шувапня Бправ::
ш|а]!к)шка (об'скта |гпа9е) в середип! деяко[ гео1иетр!8[по! ф|гу- 1. 3абезпечте мохслив|сть перетягування мал1онк|в лиц:е л1воп() пс.:п:п
ри (об'скта 5[аро). в!тшето миш:| (див. п. 9).
2. 3бйьп:!ть удв!в! вастоту 6лимад:ня т€ксту "Ф6ов'язково нати<::д|'г:, :г::
Боо| !гпа9е!п5баре([!па9е- !,|$[таре" $)
кнопку''|отово'' Ёсля ровм!п4ення рису:тк{в!|!".
{
!' ( (! -> !-е|Б = 5 -> !_е|{) && 3. 3ам!н|ть у програм| !пдикатор стану типу Рго9гезз8аг }:а !::7цг::с:птт;;>
(! -> 1_е11 + ! -> \А/!0|[| <= 5 _> [_е'{ + $ -> ш!с1п) && типу 6аш9е.
(| _> [ор >= $ _> 1ор) && 4. |||д6ер!ть найвда'л!тпу :пвидк!сть руху |ндикатора |[!)(;у | :т;;<>(:!'гг,
(| -> [ор + ! _> Ёе!9[| <= 5 -> 1ор + $ _> Ёе!9}:{) о6'ект $р!пЁ0!{1 недоотупним для внесення зм!н.
|гце;
)
ге|цгп /! !|]алюнок о в сере0он| ф|еурш
е!зе
б. Билул|ть об'ект $р!пБ0!{1 ! задайте найвдал1тпу тпви,:1:с1с:т':' 1:уху !::
ге|цгп !! А/!апюнок е поза ф|аурою дикатора тасу безпосередт{ьо в проект!.
) 'а|9е;

172 173
$ 6" оБ'ектно-оР1снтовАнв пРогРАмувАння у саш|е: вказ|вникашти {е{1 | г!91'т{ на л|ву та праву вер1шит1и п1д-
с++ вш11,опп, шорядкованого дерева (типу }е!епеп!*) | функц!ето геаш!{, яка
обчислтое результат у ц!й вертшин!:
т€ ворегтня власних клас[в. Ёасл|дування | в|ртуальн!
функц[!. |нтерпретатор мате1иатич}!их вираз!в. с|а55 те!епеп1 {

рго|ес!ео:
1!1ета роботи. Ёавчитися створ}овати та використовувати // 8каз!внцкц на л!ву ! праву а|лкс.; п!0ёерева
те!егпеп1 *!е{, -г!0!т1;
власн! клаеи, нащадки' в|ртуальн| функц||, програмно реал!- //!{онспрукпор - с[пворюс об'вкгп за вказ!внцкамц
3овувати деревопод|бн! графи. ]е!епеп1 (1е!епеп{- !,]е!епеп{- г)/| на л!ву ! праву вер!1]цнц
Розро6ити |нтерпретатор для обчислення значент{я мате-
матичних вираз|в, заданих як рядки сипдвол].в. } виразах об-
{
!е11 = !;

1ше)китись операц|ятли додавання ! мноэкення' як| 3астосову- г!9п{ = г;

}оться до операнд!в чисел | зшт!нних. ршБ|!с:


)

!еспрукпор - 3нцщус вказ!внцкц на л!ву | праву


!еоретичн! в|доугост! й анал!з задан!. Розглянемо вираз -}е!епеп{(мо!ё) //
г!9Б1;}
^ 2х + 4. (ей вира3 мо'т{е 6ути зо6раэкений у вигляд1 дере-
х'* у!г|ца|
{0е!е{е !е11;
ге:ц!{(уо!0)
0е!е1е // версшшнш п!00ерева
{}

вопод!бно! структури - графа (див. рис. 76 а).,(ля обнислен- ]; '!оа1


ня виразу' поданого графопл, наприклад для х:1, необх!дно, €пециф|катор доступу рго!ес|её для вказ|вник|в !е{1 | г!9|{
почина1очи 3 ни}кнього р|вня, обнисл:овати значення у вер_ вказуе на те' що ззовн! ового класу вони е недоступниш!и' але
1шинах | поступово п!дн|матися до кореня (див. рис. |6 ь-а\.
видити! для нащадк|в цього класу. ,(ля конструктора 1е!егпеп{
цей специф|катор о3начае' що в|тт мо?ке бути виконаний, з
_,/\. конструктора класу-}{ащад1{а.

" 7\{
/" /\. / ,* Розгляне:шо деструктор -}е!епеп|.,{к в|до:шо, деструктор
,/\ викликаеться для 3нищення о6'екта (наприклад' командо|о
/\
21 0е!е{е). |!!д нас виклику -1е!епеп1() для вертпини дерева 6уде
2х з1н|ц|йоване виконання цього деструктора для вер1пин л|вого
ь
| правого п!ддерев. Фтэ*се, тшляхом рекурсивного виклику
деструктора 6уде знищено ц!ле дерево.
3азначитио, що функц!я результату ге:ш!() повинна обчис-
л}овати | повертати 3начення дерева математичного вира3у.
{я функц!я буде в ус|х класах' але || реал|зац|! зале}кати1иуть
,' в1д конкретного натт{адка | будуть в1др|знятися. ?отиу у пре/{-
Ршс' 16.3обраэюення аршфмепъшнно?о вшра3у у вшеля01 арафа-0ерево ку вона е нереал|зовано1о. Ёр|м того, висновок шро те' футтпс-
3ведешто 3адачу до двох п!дзадан: ц|я якого |з пох!дних клас!в шовинна 6ути викликана' !!|)1|
. по6удова дерева 3а 3адани1ц виразом; ймаеться лит1те на етап| виконання програ1ии п|сля побу71стг:пг
о обчислення з}1ачення вира3у зг!дно з побудовани}д дере- дерева конкретного матеш'атичного вира3у (це | е п|з!п<:, :пбс>
вом. динам!нне зв'язування). }{агадаемо' що так! функпц![ :::::з:'::г::
3азначитцо' що опера{|| ,,-'' |& ,,/'', а тако'к диференц1то- }оться в1ртпу о лънш ушш \ по3нача}оться клточови1ц с.,|() !!() м у! г! цп !.
вання вира3у розглядатимуться у 5 7.
Бертшиното (елементоти) по6удованого дере1]!1 мс;эпсс: бу':'::
,(ля реал|зац|! пертпо| п|дзадан| опи111емо новий тип даних операц|я ,,*", ,,*" а6о число. 1ошту успдд1(усшто лт|71 !(.,!1!(:у
- 6азовий (батьк1вський) клас
''вертттина дерева".
Ёазветшо цей
1е|егпеп1 (див. рис. 77) три класи-нащадки: двп /1.,|'! :п1лп:с|гмс.':'л:,;
тип 1е!егпеп1 - тип ,'еле1иент дерева". \акий 6азовий тип воло-
.тц|т'ипте сп!льнитии для ус|х вер1шин дерева властивостями, а :тих д|й (,,*'' - Р1ш5, ,,*'' _ $п1{) та для числ{| (}.,[т:::п1;с:г').

174 |7|-у
,/!\
[е1нттат[ зв'язування, оск!льки матеш[аттачнпй вираз задаеться на етап|
викона1тня 1трогра]ии в реэтсим| д|алогу, | структура дерева на

/'!
1иомент опису створ1ованих клас|в нев!дома.
1снування базового класу ]е!епеп{ да€ з1\[огу використову-
вати единий для вс!х побудованих клас!в описаний вище
\ деструктор -|е!епеп1(): завдяки однотипност| вер1шин 3ни1цу-
$тшпБш Р1шн ь&й ]оться об'екти клас|в Р|шэ, [т:1ш!1 та ['.]цп5ег.
Фпитшемо класи-нащадки. ||очнемо 3 класу [т!цгп5ег:
Ршс. ]7. |ерорх1нне 0ерево юлас|в с|азэ [.,!цпбег: ршб[!с [е!епеп{(
Розгляда:очи дерево 1шате]шатичного вираау на ртс' 16 о,
11оа1!; // ё1йсне чцсло знахо0цгпься в привагпн!й зм!нн|й {
ршб[!с:
та ро6ляни у3ага.'1ьненття, еформул}оомо: |х|шпбе(|!оа[ Р):[е!епеп1(!х!ш!-!-'ш!,|-!-)
!1ровшло!. Бертпини т& (клас }''|шпбег) { // конс!прук[пор - прцсвоюо ншслу / певне 3начення, а
Ё;
''число'' ''81и!нна'' { = // вказ|внцкц на п!0поря0кован! версшшнш занулен|
3ав]*{ди зн&ходяться на останг1ьо1иу р!вн! | не матоть п!ддерев. )
{!оа| ге:ш|1(шо16)
}отшу в цьо1у[у клас| вка3!вники на л|ву | праву п!дпорядкован| {ге|цгп {;} // функц|я резуль/па!пу повер[пас чцсло [
вер1шини 6удуть нульовими (шш]-[-)' а функц|я ре3ультату ге- ];

аш!!() повертае константу чи значення зм!нно|. Фб'ект класу [.{цпбег характеризуе число' яке повинно шл|с_
!!равшло 2. Ф6'ектут клас!в арифметитних д|й (,,+'' та ,,*'') ту!ту!сяу конкретн!й вертлин|. Б|дшов|дно до правила 1, цей
вавэкди ма1оть як л!ву, так ! праву г|лки. ,{ля клас!в Р!шэ | !т4ц!| клас п|ддерев не мае. 1ому п|д тас виклику конструктора ба-
дво1иа г|лками п!ддерева будуть вка31вники на об'€кти клаеу зового класу за:ц|оть вказ!вник|в на л|ву 1 праву г|лку переда-
]е!епеп1. Функц|я ревультату цих клас|в мае виконати функц!! }оться |х] 1.| !-!--вказ|вники.
геаш!1() для л!во! та право| п!дпорядкова11их вер1циЁ' а такох{ Функц!я геаш!1() повертао значення числа. 1[е раз 3верне}до
операц!! додавання чи 1у[11о}кенхтя. [о:пгу виклики функц|й ге- увагу на квал!ф|катор у1Ёца! в опис| ц|е! функц|! у базовотиу
клас|. Б|н означае: якщо доступ до об'екта пох|дного класу
:ц!|() ддя п!дпорядкованих вертши|{ спричинятъ рекурсивн! ви_
\цпбег виконувати1\(еться через вказ!вник на 6азовий клас' то
клики функц!й ре3ультату до 11и3у дерева. викликати1шеться функц|я ге:ш|1() пох|дного, а не базового
8аэкливо 3а3начити' ш!о оск!льки п!дпорядкован1 верт]1ини класу. ||ро|лтоструетио це на приклад|.:
об'екта класу Р!цэ чи !\4ш!| е однотипними (бааового типу {е[е_
]е!епеп1- А = пеш ]ц!цп0ег(3);
пеп!), ста1оть правом!рниш[и виклики функц!й геаш!{() цих вер- // 7угп А - вказ!внцк на гпцп 7е|егпеп!, *А
класу
- об'окгп [х!огпёег
ш[ин неза-]1е}кно в|д !х конкретного типу. 3вахсаточи на те' що А -> ге:ш!1();

у базовому клас! функщ!я ре3ультату описана як в!ртуальна,


|/ 8цклцкаогпься мегпоё гезш![() класу [х!цгпбег, а не кпасу те!е[пеп[.
// 7ому повергпае[пься чцсло 3, а не вцконуо/пься поро)кня заео[повка
штехан|зм п|внього (динам!чного) зв'язування забезпенуе вик- // в!рлпуальноео мегпоёу ге7ц!|() оасу те!егпеп[.

лик успадковано[ функщ!! геаш!|() вер1шини потр!6ного клаеу' а


не 11оро'{с}{1о 3аготовку функц1! ]е!епеп!::геаш!|(). } вищенаведе- фрагмент! викону€ться виклик функц!! \цпбег::ге-
)|' щьотлу
,{,кщо 6 у базово:шу клас1 в опис| функц![ геаш!|() не було
аш!1().
н|й задан! ми виму1шен! використовувати дшехан!з:ш п!зттього сдова и1Ёша!, то в цьош|у приклад| викликалась 6и функц!*п
зв'язування' оск|льки 1шатематичний вираз 3адаеться ка етап| [е!епеп1::ге:ш||().
вико}1ан1{я програми в рехсим! д!алогу, ! структура дерева на Фпи:ше:цо класи' що реал|зу1оть операц!|. Фпирати1иемос'[
1шо1шент опису створ1ованих клас!в нев|дотша. на сфортиульован|. вище правила.
1снування базового класу [е[епеп| дае 31шогу використову- з|гцс1 Р!цэ: ршБ!|с |е!епеп|{
вати единттй для вс!х побудова}1их клас!в опиоапий вище Р!шэ([е!епеп{* !, |е!епеп1- г):[е!епеп|(!, т) // консгпрукпор - вцклцкас
деструктор -1е!епепт(): 3авдяки однотип11ост| вертшин зпи1цу- { 1; // конс[прук!пор базовоео класу
{1оа| геаш!1(мо!6) || Резульгпапом е оума резульгпагп!в л!во[ | п!эаво1'
]оться об'екти клас|в Р!шз, [т4ш1| та [ч!цпбег. {ге|шгп !е[1_>геаш|{() + г|9б1->геац!1();} //п!0поря0кованцх вор!1]цн
Фпипте:шо класи-на1цадки. |!очне:шо 3 класу ]т!цпбег:

|2 с++ \'17
176
те|еп9п1* {огп(Апз!$1г1п9 в) // э _за0анс;й ряёок сцмвол!в
Б"ББББ!ББ''т |! Альперна!пцвнцйопцскласуР|ц9
{ |/ Резульгпагп - вказ|внцк на верц!цну 6ерева побу0ованоео вцра3у
пцБ|]с: (!' 1е!епеп|* [;
Ё!,".с?"'".''"','!, 1е!епеп1- 0 1е!епеп: : г) {};
|п| р; !/ р - позцц!я опера[пора
"+''
чц
""''
ге7ц!|(уо!6) !п: ! = э.!-еп91|(); // ! -
ёов>кцна 3аоаноео ряака сцмвол|в
'!оа| _> ге;ц!1();
Апз!$1г!п9 э1, э2; !| слукан! операнён версшшно ,+" чц ,,*"
!"*,', :"п _> ге:ш!1$ + й9Б! !| ((р = 5.р651"+'')) > 1) /| 1кщо в ря0щ е операФя ,,+''
] {
в1 = э.5цб91г|пз(1 ' р - _);1 // знахо0цмо п|ёря0ко 31 | 32, -
э2 = э.$цб$1г|п9Ф + 1' 1 р): // операноц аперац[{,,+".
[ = !1€|л/ Р!шэ(|оггп(э1)' !огп(з2)); // ёпворюемо о6'скп Р!шэ з
1'1,овотрукт", *:":
:;;;;'*-.,.7"'''".
3ового кл&су зг!дт1о 3 11ертпиу[
правил Функц!я ге2ц!{() обчис_ // п|ёверьшинамц - знай0енцмш операнёамо операцг{
"+'',
// як} анал!зувапцму1пься рещрсцвнцмц в.}клцкамц функц|[ {оггп

л1о€ значенЁя на ";*;*


! прав!й г|лках' а тод! 1х п!дсуштовуе' )
1)
клаоу {т:|ш!| (резуль- е!зе || ((р э.Роз("-'')) > Аналое|зно роз6швасмо ря0ок на
Анадог!чв' "*"'*!*'/ футт_кц!я !'е7шп() для
= //
{
о1 = в.9цб5{г!п9(1' р - 1)]/ операфю ,,"" ! 0ва операнёа в1 ! в2
в2 = в.5цБ$1г!п9ф + 1, ! - р);
[ = [€1л' мц!1({оггп($1)' |огп(э2}); // Фпворюсмо об'екгп йц!{ !
5!гшс| мц!{:рцБ]!с ]е!опеп|{
"""'" й;;[6Б:Бй"'*" !, ]ейпеп:' ф:1е!епеп1(!' ф {); // рецрсивно вцклцкаемо функфю !оггп 0ля знайёена;х операн0!в
)
||оа| геаш!1(мо!6)
е!эе !| (в ==''х'') || 9кщо ря0ок о зм]нною х: спворюомо об'екгп
{
" г!9}т[ _> геаш!1(); || ,,чцсло'' й |н|ц!ал!3усмо йоао чцсловцм 3наченням зм]нно1'х з поля Ё6!13:
}е|цгп !еЁ'> геаш!{()
}! = пёш шцпьег($!гтог!оа{(Рогп1->Ё0!|3_>]ех|));
) е|$е
!/ 9кщо вшраз заёано правцльно, в резульгпагп! в!0с!ювання
виклик
ъ; футтк- |/ операпор|в ,,+'', ,,*" | зм|ннцх ,,х" в ряёку $ 3алцц]аспься

"и"";!ддереватши'',' :1*''аеться |7'1 8м1н]


// коногпангпа. 6п'лворюемо о6'екп,,чцсло'' ! !н!ц!ал!зусмо
ге:ш!1() ддя вер1тт']4э* *'::_: :_-:::х;:;-;; о т я чи
йоеочцсловцм 3наченням ря0ка в:
ц!!ге:ш[()ддявер;;;!"*":_":_:1*-'::т;"1;":."**""#.'а::
ц!!
п0верта€ значе}1ня чу!с][а
вш:|нно!. 1о-
/|
}! = пе|ш !х|шпбе($1г1оЁ!оа{(з));
нього р|вкя, де геашг:()
му достатн"' ,*''ййти геаш:*() д'" ,''й"я' п|сля того 6уде об_ ге|шгп
)
[т; /! 1оверпасмо вка31внцк на сгпвореншй о6'екп
всього дерева'
числено 311ачет1ня вира3у ддя 3цсновотс. 3а допо:шогото засо6!в ФФ|{ створено врут:тий
1' ств!рий }'р""' вир&3у 3 * 4 * 2:
|ршкло0 /{,|': використантт}т та роз1пирення на6!р програ1шних засоб!в,
Б= | ! 6 =2
|.|цпбег а(3), ь(4},о(2);
!!,91:":', класу ['!шгп0ег: 2 = 3' ;;:*:! ро3в'явують 3адачу побудови |нтершретатора мате1шатич-
п(&а' &ь); |' а 9
мц!{
!!п+с !!!|х вира3!в. |[родемонстрован| прийотии використання клас!в
Ёй;й:а"';
геаш[() одер)кимо так! ре3ультат!1: ;!!|()'!'осову}оться для побудови й опрац:овання таких структур
0икликав]т;и функц|| ,,(!!!!}{х' як дерева' етеки' черги' динам1нн| списки та |н.
р.гв:ш!|(); |! поверпас значення 14
й.}!,й}(|; !! ёор1внюс 1?
'/с7с!''р''ао -..^.''' 3
а,ге7ц!1(); значення )Ёд роботи
об'екташхи яких 8ру{но
Фтэке, ми отримали наб!р клас!в' .. ]}авацташсте ё** 8ц|10ег.
на 6ав! математич1{ого вира3у' ')' ]}ати!ц1тъ 3аголов0|{ (€ар{!оп) з "Рог|п1" на
реал!вуват* .*р'*!,_'обудовапе фор:ши "Фб.лис.л[с|||!']
пертпо! п!дзадав| ро3гля}'е1!1о функ_ :гиразу''.
,[,ля завер:пе1{ня ;;'й; си1шво_ :!
3а' 3адани}д у вигдяд! рядка ||!дпяовтось в|д еистеп:пих [{попо:с фор:ии, 3ада:з|ши 3||1|!|о||||'!
ц|1о, яка будуе таке дерево 1!1а- }:а!5е в ус1х повиц|ях власт1|вост| 8ог6ег|сопэ: ь!$у$|огпмопш,
яко1шу зтш!вна х по811ач&еться
л!в математични1ш вира8ом' у у по_ та ь!не|Р.
31!ачет1'ня зшх|ттно! х внах0диться
Б[!|,г!!п!гп!:е, б|!1/|ах!п[е
ло1о д8тивськок) букво:о', {огп() формуе 1'оботу а прогр&1\4о!0 з&вер1]]ува.тир!еш!о н&тис|{д11]|'{м |:!!
19)' Фу:ткц!я
л! редагув***" ео|*з 6;;' рис' 18'
!{!{()г]_
:см "Бих|д".
[початку фувкц!я
дерево внасл|док рекурсивг1
у!х ву!к]\у!к!в'
яа тт1яо}*{- ! |'<;зта:шуйте па форм! об'ектш так' як пока3ашо на рис. |.8.
3
вид!ляс д0да}{ки' !ал! коэ*сет{ д0да11к!в розкладае 0 .!пед1ть описи кдас!в | функц|й, як! використовув&тип[утьс'| у
*'''*", пот!м о6ро6ляс зм!нв! та числа' вад:вв!.
г1!{!

|78 179
! п!сля рядка
д-тя цього в!дкрийте в!к}то тексту програми уо|6 1 Ёогп :8ц11оп €!!с&(1Фб'!ес| -5еп0ег)
тг''п1 -Ёогп1; // |]ей ря0ок уже е у проерам!
1 : 1

1
|- ] { -1ав!оа|!
Р_1_ч.__=^.5',т''!п1(€ опбо8ох1 тех1) : // 3нак!в п!сля ёесягп. крапкц
->

Б'*'"-" ,р'.р.*""й *'д Б,""у клао!в те!епёп1, ["!шпбег, Р!цэ, 1|1ц!| ! !е!епеп{' х = {огп€6!11
_> [е}!);
|/ х - вказ!внцк на верйшну
(див-' в|до- // 0ерева, побуёованоео 3а вцра3ом
у пол; Рё;с]
'
текст функц!| 6'рф"{в" д'р""* 1оггп
"1еоретитн|проект та
!| Ре3уль!па!п оочцслення х 3апцсуемо
1к ря0ок сомвол!в_ у пол! Ё6!!3
ш''ст; й-анал!з1адач;'' цього шарагра6а). 3береэк!ть Ё6'13 _> тех{ = Ё!оа1то5{гЁ(х _> ге:1::1;, 25, о;'-
//'* - вказ|внцк на вершс;г)у ёерева, '1Ё!хъс'
текст 1трограми. !! пооуоованоео 3а вцра3ом у Ёё!!2
теьпеп1- {х = 191'15',', _> |еп);
// Резульгпап обниёленн2.-{(х) з'апшсуемо як ря0ок сшмвол!в _- ' '
вс!|4 -> 7ех| = Ё!оа!7о$гг(', _> геаш:[(), пг;хе3, аэ, оь;,;- -- - у
' Ё6!14
)

!). 3апрограп:уйте фупкц!то, яка викопувати1}!еться п1сля апх1пи


+21*3 ,;
числа у пол1 €отпБо3ох1.
|,'.. -. '", ,, ,. .: :; .(ля цього запрогратшуйте под|то 6[ап9е об,екта 6опбо8ох1 так, щоб
.;.1т' ;_':;:+::]|]:,':-:;;;- ; *|
,.:
::

виконувались д1! для кцопки ,,Ф6япслпттт'' (функц|я 8шпоп16!!с[):


уо] а 7 Ёогп 1 ::€опбоБох'! 6}-тап9е(тоь,ес{'$еп0ег)
{-'а5!са|!
в ц1!оп1 Ф!!с[(8ц1|оп'! );
// !ощсгпам| гпакож 3апцсц: 8ш!!оп1ё!!с*(€отпбо8ох1); 8о![оп1€!|с*([:!0!-!-);
)

3оувооюення.[. Фактичним параметром функц!1 Бц11оп1€!!с}< мо-


аке бути вказ!вник на будь_який в|зуальний о6'ект ад-
;ке в опис| ц!е! функц|! формальним параметром сфортии,
вказ.|вник
на 6азовий тип 1@б!ес1 середовип{а в|зуального програ1иування
€*+ 8ц!!6ег (див. п-8). ?акипл аргу]иенто1\( *'*" бу'' тако'*с
нуль-вказ!вник |т]!..!|-!-. !![' складн!:пих програмах цей пара1!|етр
мо'*{ца використовувати для передан!. певно| !нформац!!
у
функщ!хо.
3ауваэсення 2. ||овторн1 ву!клу!ки функц!| 8ш1!оп16!!с&() п!сля
Рцс' 19. [7ршюло0 роботпш прооромш кох{ного виконання под!| 6опбо8ох161'тап9е п{оразу т|риводит|\-
муть до створення дерев математичних вираз1в для х та
Ад;ке вказ!вт{ики на ц! дерева о локальвими зм|нними
|(х)'
8ш1|оп16!!с}<(). 1о-му побудован|
функц|!
дерева 3виц]уватимуться п!сля
3авер|цення роботи ц|е! функц|! тцляхом неявного виклику
деструктор!в об'ект!в х та |х:
х _>
-?е!епеп1(); 1х _> -|е!епеп{();
Бправи
[. ||обудуйте дерево виразу 3 * 4 + 2, скористав1пись приклп71<;м !:г
;;,п::7ц!.пу,,?еоретинних в1домостей та анал1зу цього парагр:п4:л.
пока- ||!.0юозюо..(ля цього вставте у форму ",д'*''
ще одну к"опку ! 1,1>и 71с,71::т,
|!оля ред8гування для значень фухткц|! геаш!|() об'ект;'{р, й
'!!)!|! ! а..|(.::::
точц1сть обнислевь, що дор!ввк)€ дво1и !!!!!!('',(()|!]:|я результат1в
у полях Ё0!| скористайтеся функц|сю Ё1оа||о5!г:
| Ёс!15_>[ех| = г!оа1то$1гг(р.ге:ш!1()' ||Р|хе0' 25, 8);
тек об'екта €опбо8ох1 задайте числом
!

,',
!

|||0усазка.,(ля цього додайте зм!пну в о[!ис


!.!!!!!/(!!(! :толе Ё0!{ на
у <[:у:*кл1!| !огп() .п':т :з|71.
форму.

180 181
$ 7. Р03виток Ё[Ави(!ок оог! Р [++ вш!!,)ш1. у|Ёца] уо!о 5е1-уаг(6ошь]е х)
{
9;цосконалення 1нтерпретатор8 1}!ато1}!атичних вираз!в. |{ 0е'|) !е{| -> ве1-маг(|);
|' (п9п1) г!9[1 эе{*маг(|);
Фбчислення пер1шо[ та друго! похйно!
_>

1}1ета роботи. Розвивути навички об'ектно_ор!ентованого


програмування' вик0ристав1пи для реал|вац!! задан! про |н_ Функц1я эе{_таг() 1!ацае зпт1нн!й ^т конкретне 3начення. ]['
терпретатор механ!зми |нкапсуляц!!, насл!дування, пол!_ ::ох1днотшу клас! !аг (зм!нна) ця функц1я 6уде перевиз1{аченд. 0
:иорф|зтшу, динам!тного зв'яаування ! в|ртуальних функц!й. ус|х |.нтпих класах эе|_маг() не переви8Ёачаотъся, тому 6+-ь
)/досконалити !нтерпретатор математичних вираз|в (див. ;зд|йснить виклик ц!е! функц!1 !з базового класу' що при3ведс
$ 6) з мет01о зна'ход)кення 3начення вира3у та його пох!дних /(о рекурсивних !! виклик!в вни3 по дереву.
дов!льного порядку. Функц|я 0!{!е() у пох|дних класах повин11а повертати вк{|_
3астосувати |нтерпретатор для роав'яаування задат! про :з!вник на нове дерево' що виз]{аче:ле диференц|тованнятш п!,:1-
пол!т ракети. 0бчислити !цлях' тшвидк!сть 1 прискоренг1я ра- /\ерева' п1дв!гпеного до вер1цини викли}су ц!е1 функц||. Функ_
кети' рух яко! опису€ться математични1и вирааом, який вво- п1!я сору() створ1ое в пам'ят! коп!:о дерева ! повертае вказ|вник
дять у комп'тотер п!д нас ро6оти програми. 9 вирааах об:ие_ ::а його вер1пину. {я функщ|я е допоти!этсното | використову_
операц!я:ши дод8ва}тня, в1дн|мання' 1у[но}1{ет*вя ! д!лен- ()ться для реал1защ!! 6!1{е() у пох|дних класах"
'*ситись
ня, як| застосов)|вати1шуться до д!йсних чисел ! зти1нних. Розглянеш:о реал|зац!:о клаоу Реа!:
Апал!з задан1. 3адану розв'явуватиме1шо 3а схемо:о' анало- с!аэз Р!еа!: ршБ!!с 1е|епоп|{
г!чното до описатто| у $ 6. ,(ля цього створимо наб!р клас|в, ЁоцБ!е !;
ршБ|1с:
зв'язаних м!яс собо:о такими в|днотпення1ии спадковост1: 8еа!(0ошБ|е Р) :1е|епеп|(|т|0!-!_,}.{ !)!-!-){1=Р;}
6оцБ]е геаи!1(то!ё)
{
:е{цтп {;
?е1н:те:т[
)
1е!епоп|'сору (то16)
(]е|ц]п пош Реа!(|);} )
1е|епеп{* ё!{!е(шо!0)
{ге1цгп пеш Реа!(0);}
);

&еп1 9ш Р1цтн й|пшв 1\{ш1| }[у Фувкц!я


}!а ц1о
соРу() робить коп!:о об'екта ! повертае вказ!вник
коп!то. Функц!я 6;1!е() шовертае вкаа!вник на створений
Рце. 20. !ерорх1нне 0ерево <;б'ект класу Реа| з! 3пачен]|яу[ нуля для поля !, оск!льки гтох|,дц-
де клас Реа! реал!зуе число, !аг _ зшт!нну, Р!шэ, й!пшэ, йш||, 8!м _ ;ло:о будь-якого д!йсного числа е число 0.
ариф:иетинн| операц!! ,'*'', ,'_'', ,'*'', ,,/'' в!дпов!дно. ,{о опису Аяалойчно реал!зуеться клас !аг:
базового класу ]е!епеп! !з $ 6 додамо три в|ртуальн| функц!1
с!а93 уаг:рць|.с те!опеп1
сору()' 6!1[е() | ве|_та():
{
с]а35 те|опеп| { 6оцБ|о х;
Р]о|ес!ес: рш6!!с:
|е!епеп{'!е{{, -г{9|1; !аг(ёошБ!е )( = 0):1о|впеп(шш[[-, ш0!-|-)
те|епеп| пе!епеп1- !-,[е!епеп!' Р) {х =|;}
{ 6оцБ|е геаш|!(то!6)
!е{{ = [; Ё9Б| = Р; {:е|ш:п х;)
) то[епеп!' сору(то!ё)
рш6!!с: {г€|цгп пеш !а(х);}
1е!епеп!' 6!{{е(то!6)
{ге|цгп п9ш Роа!(1 .0);)
у!Ёца! то!епеп1* то16 зе|-маг(6оц!!в |) {х = |;}
у|Ёца! 1е!епеп1*

\82
188
Реал!зац|я цього класу под!6на до попереднього. Функц1я е!епеп1
!аг::зе|_таг() перевизнанае в!ртуальну функц|:о з базового кла- {
йш!1([е!епеп1' }е!епеп{' Р):[е!епеп1(|-' Р)
су" 1_1ей механ|з:ш визначення ам|.нно1 е досить 3ручним: ви-
[-.

кликаетьоя функц|я эе|_маг() 3 аргу1\[ентош! _ 3наченням зм!н-


{ );
ёоц!!е геаш!1(то!0)
но[ для вер1шини дерева' ! по ц!ло:шу дереву во| верптини типу { ]е|цгп !е[!->геаш!|()-г!9п1->геац!|();}
[е!епеп!* сору(то!0)
[ч,!цгпбег будуть наповнет1! цим 3начення1\[ ( див. опис { ге|цгп пеш мш!1(!е11->сору()'г!9|ъ>сору());}
!аг;:эе1_маг() ). Берштини |нш:их тип!в ли11:е передавати1цуть вик- }е!епеп|- 6!{{е(мо!6)
лик 5е|_уаг() вниз по п!дпорядкованих ребрах ( див. опис [е!е- {
ге|ш]п пеш Р!шв(петш йш!{( !е1!->6!#е()' г|о[1->сору() )'
гпеп1::эе!_уа() ). за замовчуванням зм|нна |н|ц!ал!зуеться нудем' пеш 1т{ш!1( !е|1->сору()' г!9[1->0!#е() ) );
1цо видно |з заголовка конструктора !аг::!аг(). )

Фпи:шемо клас Р!цэ:


);
//
з!гшс| Р!м:ршб|!с [е!епеп{
9|гцс| Р!ц5:рцБ! 1с 1е!епеп{ {
9|м([е!епеп1- !-,]е!епеп!- Р):[е!епеп1(!-' Р) { );
{
Р|шэ([е!егпеп|' [,те!епеп1* Р):[е|епеп!(!-' Р) ёошБ|е геаш!!(мо!ё)
{}; {ге|шгп !е|!->гоаш!|() / г!0б!->ге:ц!1();}
0ошб|е геаш!{(мо16) [е!епеп1' сору(мо16)
{
{ге|шгп пеш 9|м(!е{1->сору(), г!9п!->оору());}
ге|шгп !еп -> ге:ш!|() + г!9}:1 -> ге:ш!1(); [е!опеп{- 6![1е(то3ё)
) {]е[цгп пеш 9!м( пеш й!пшэ(пеш йш!!(!е!1->6!!|е()' г|9п|->сору())'
]е!епеп{* оору(то!ё) пеш [т:|ш[(!е|1->сору()' г!9|!->0!''е() ))'
( пеш мц!{( г!9!т|->сору()' г!9п|->сору()));
ге|цгп пеш Р|шв(!о1! -> сору()' г!9б! -> сору()); )
);
)
]е!епеп{- ё!1{е(то!0)
{ 1епер розглянемо функц|то {огп(), яка 3а 3адани1и у|ате-
ге.цгп пе1ш Р!шз(!е{[ -> 0!#ег()'г!9}:1 -> 6!|{ег());
матичним вира3ом будуе дерево об'ект!в.
! )
);
}
!п[ РоэЁгопЁп0(Апэ!51г!п9 з' Апэ151г!п9 вшб);
)/ функц!! Р!шз::6||!ег() використа11о правило диференц!тован- ]е!егпеп1' 1оггп(Апэ!$!г!п9 э)
ня суш|и: (ц + у)'= ц' + у'. Фтатсе, диференц!1овання дерева {
|е!опеп|- |'т;
+ + !п! !' р' ! = э.!-еп91Б();

,/\ /'\ Апэ!5{г!п9 в'!, э2;


Анал|зуемо справа нал|во:
ш"
|/
|"1 \''/ !! ( (р = РоэЁгопЁп0(в' "+")) > 1) !/ 9кщо нагпрапляомо на "+"
да€ дерево: (

&алог!чно створиш|о класи !нплих ариф:шетинних операц!й: 51 = э.$ц591';,9(1' р - 1);


э2 з.5ц09{Ёпо(р + 1' | _ р);
=
[ = пе|л, Р!шз(!огп(з1)' |огп(з2)); // €пворюсмо версшслну Р|шз
э|гшс| й1пшэ:рцБ!!с ]е!епеп1
)
{ е!эе || ( (р = РовЁгопЁп6(з' "_")) > 1) /| 9кщо нагпраплясмо на ''*'
[т:!!пшэ([е!епеп!, !-'те!епеп1" Р):[е!епеп|(!-' Р) {
{ }; э1 = з.$цб$1г!по(1

1); -
6оц0!е геаш|!(мо!6) ( э2 = з'$цб5{г!п9ф + 1' ! р); -
ге|цгп !е{1_>ге:ш!1() - г!9}т|->геац!1(); [| = п€ш 1т4!пшэ({огп(э'|)' !огп(э2)); !/ €гпворюсмо версошну А/!!пшз
) )
1е!епеп1* сору(то1{) { е|зе !| ((р = РоэРгопЁп6(з' "-'))' 1) // 9кщо нагпрапляемо на '''''
ге|цгп пеш й1пшв(!е||->сору()' г!чб1->оору()); {
) 51 9.$ц691'1'о(1' р - 1);
=
1е!епеп1' ё!#ег(то10) { 52 з.$ц651';'о(р + 1' | - р);
=
ге|ц'п пеш й!пшэ(!е{|->0!11е()' п9п1->0!1|е()); } = пош йш!|(|огп(з1)' !огп(э2)); // ёгпворюсмо вврш.;шну Ат1о|!
) )
е|зе !| ((р = РоьРгопЁп6(э' "/"))' 1||/ 9кщо нагпраплясмо на
||------
); '/''

184 185
5'| = 5'!!ц05|г!п9(1' р - 1); вставтё |1рогра]у{ний код опису кдас|в ! ф1'нкц!й, поданий у
в2 = в.$цб$1г!п9ф + 1' |- р); ,,?еоретинних в!дотшостях та' дттад!а]. 3адач1" цього :тараграфа-
[| = пеш 9!т({оггп(э1)' {огп(з2)); |/ ёгпворюемо вершцну о|у 36ереэк!ть цроект ! те;сст протр8]ши.
)
е!5е !' (5 == ''х") п = пеш !аг(); !{ €гпворюемо верц'цну уа{
е!5е
[ = пеш Реа!(91г1оЁ|оа{{з)); г: ёгпворюсмо Реа|
ге1цгп п;
)

{я функц|я аналог|чна до наведет{о! у $ 6 3а винятком


напря1ику по1пуку опер&нда' ад)ке операц|т "_" та '' /'' }1е воло- 'т;
д1тоть властив|ст!о &дитивност!. Рядок 3 математични1!1 вира_
:1.:!!!:!::! !1 :: :::;,:. . . ; ,!1: !'

:. нцях ::.:,.'
-... .:
шлях];
.... ::.:: .: р057йй0
.'

зом анад|зувати]\[еш]о справ& }тал!во' оск!дьки арифметичн| :


1 '!1':
:..:::::::: :::

операц!| одного порядку виконук)ться зл!ва направо. €правд!, 11-..;49д9$:,;, ||2751в.в721


швшк|с{!'''''''''''''''',
::
)-*
'
::]::;{:а!\!..:{:11 1-;:::;:::!:: ::: :1] ]::::::..].: :|],}+..,:.1: .

оск!льки кор|нь дерева в!дпов|дае 3а останн1о операц!1о' яка ..;]:1!1|р..:.1+'9:Р+!!}!1:'

вико}{увати]![еться' цей оператор у вира3! 6уде роз:и!тцений :.::11: ::111 :.: ::::' |,:.
!:,: :::':]:.:::.,:::::-:::::::::,,

прав!тше в!д !н:пих того пс порядку. Фпигпетио функтт!то, яка


*
:],:т1а,{.йс|ь'.'1,' .,]'

3находить позиц|то з к|нця перт|1ого п!дрядка у цьо11(у рядку: |Ё!: :


+!; ы*;!з*ф*: и'!
!п| РоэБгопЁпо(Ап$!5{г!п9 з' Апэ1$1г!п9 зшб)
{
!п| != э.1-еп9!Б();
Апз!$1г|п9 р;
р.$е{!_еп9|[(!); Ршс. 2!.Формо "'{1ол1тп ра,сеп[ц''
ра|сепц'' Рцс' 22- !есптовц!2 ршкло0
|ог(!п!!=1;!<=!;!++)
5[!]; 4. !|'вед1тъ 1шате1у|ати[[п!вщ)а3и у поля Ёс1!1 1 Ёа1Р й о!{1!ст|тъ поля
р[| - ! + 1] = !/ Ф6ергпасмо ря0ок
!1(р.Роз(зшб) > 0) резулътатБ в6!в' Ё6]14' е6.Б та ва]16. 3алгротра:шуйте кпо|пс).'в|оф".
ге|цгп ! - р.Роз(эшб) + 1 3верв|ть увагу 1'а те' щ,о у виразах допуска}оться ли1пе опера-
''*' * , / , д\'.1сн\ числа та з1\[1}1т{а задана мало1о
;

е]эе ге|цгп 0;
ц!: , ' ''
латинсько1о л|терото. )[' вираз! дл"я. х не використовуйте ам1гт-
)

навики 1шо'*(на використати для розв'я-


Бшсшовтош. }{абут! ну *. ,[ля набору сиш{волу десятково! крапки у д|йсних вис-
зування таких 3адач: лах використовуйте си1!|вол' перед6анений операц!йното систе-
. анал!тичне досл!дэкев|1я мате1иатичних вира3!в; }'о1о комп'тотера. [естовий прикдад ! результати о6числепь
о 3находэ{(ення 311ачень функц!! для задач1 табулловання показан1 х'а рэте. 22.
функц1! та !! пох!дних дов!льного порядку; 5. ,1 та[сип1 !!ипо1у|:
. побудова граф1ка функц!!, задано| я|тта"'т1тит[но, та 1! по- уо!6 1 Роггп1 ::8ш|!оп'| €!1с[(}Фб!ео|'5оп6ег)
х!дних дов!льного порядку; -|аэ!са]!
{

.3адання вх1дних да|1их (тшатеш:атинних функц!й) для [е!егпеп1* х = {огп(Ё0!1'|_>[еЁ);


[е!епеп1* { = |огп(Ё6!Р->]ех|);
пакет'.в приклад1тих програ1\д розв'яз1гванпя 3адач 1шате- 1е|епеп1" = -> с!''е();
матично| ф|зики. [е!епеп{* '1 = ' _> с!'1ог();
ёоцб]е|=х->ге:ш!|();
'2 ''|
зе{-уа( )( );
{ ->
)(!д ро6оти 1'| -> зе|_таг( [ );
Р _> эе|-таг( [ );
1. &вацта:ппв оередов]цце в1зуалъпого п[х)ц)а1|т}загвя 8** Бц|1ёег. |п1 ргес!з!оп = 15;
, €твор!ть фор:шу' пока:запу п'а рпе.21.
!п| с!0;|5 = 5|гтог!оа1(оопбо8ох'| ->]ех[);
Ё6!|3 -> [ех! = Р!оа!1оБ!гЁ(х -> геаш!{(), (|Ё!хе6, ргес!5!оп, 6'0!!$);
3. Рвед1ть оп1!си клае|в | фувкцй, як1 в:шсористовувати11{)ггься у Ё0||4 -> ]ох[ = Р!оа|1оБ1гг(' -> геаш!!()' #Ё!хо0' ргос!з!оп, 0.0!|$);
Ё0!15 -> [ех[ = Р!оа|1о$|гЁ(!1 -> ге:ш!|(), {Ё|хо0, ргос|э!ог':, с!!0!!з);
ц|й задат1. Ёо!{6 -> 1ех! = Ё!оа!1о8!гг('2 -> геаш!1(), {{Ё|хос], ргос!э!сш:, с!!р!!:;),
,(ля цього в!дкрийте в!кцо тексту г]рогра1\ди ! п|сля рядка )
]Рогп1 -Рогп1;

!в6 187
6. 3апрогра:щйте фупкф:о' яка виковувати]шеться йсдя зп:1ни
числа у пол1 €оп!о8ох1.
,(ля цього зашрогратшуйте под!то 6}:ап9е об'екта @опБо8ох1 так,
тт{о6 при цьо]шу виконув&лись д|! дйя *'то,ки ''Фбчислити';
список л]твРАтуРи
(фувкц|я 8ш1[оп1@!!с&): 1. [лушлаков ё.Б., 1{оволь А.Б., (лошрнов €.3. 8зьтк прог-
уо|6 |Ёогп1 ::6опбо8ох1 @бап9е0оь'ес! -$еп0ег) рамш1ироваттия б**. - )(.: Фолио, 2оо2.
-'аэ|са||
{ 2. !ьюхарстп €., €тпарк -[0. |{рограммирование на с++. -
8ш(|оп'| Ф!|с!<(8ц11оп1 );
Ё.: .(иа6офт' 1993.
3. [€ерншеан Б., Ршчш !., Фьюэр А. 8зьтк €и: задани по
)

язь1ку ёи. _ 1!1.: йир, 1985.


Бправи 4. 1[ороблев 8.( ут с++. _ 1(.: 8Ё!, 2оо2.
1. 9бчисл!ть значення третьо! пох!'дно!. 5. [{алсшотп.(. Фсновнь:е осо6енности язь1ка програмирова-
.(ля цього введ1ть у форму
додаткове поле для виведення третьо! пох1дно! та зм1н!ть прогр!мний ния €**. Реализация язь1ка 1цгБо с++. _ м., 1991.
код функц|! 8ц||оп1Ф!!с&. 6. [!ратпа 6. ,$,зьтк программирования с++. _ }1._6|!б.-}{.:
2. 1|'вед|ть додаткову залеэкн|сть поло}|сення
ракети в1д ще од1{ого
параметра' _ в1дстан|.до 3емл1. ,(ля цього викорийайте }!аво{!, 2оо3.
(наприклад, у) ! зм1н1ть програмний код
6ункц|! {огп().
ще'одну зм!нну 7. €шмоновшч €., Бвсеев [., 3аништательное программиро-
3.3абезпечте о6числення тригонометричЁих фуйкц1й в1п(), сов() ! ва[{ие: с++. _ }1.: А€!-|{РБФ€: 1,1нфоком-|{ресс, 2001.
3наход}кення !х пох1дних побудовапим 1нтерпретатором мдтематичних
вираз!'в. ,(ля цього по6удуйте в!дпов1дн{ похйй! кла6и $!п та
8. (п1р10онов Б.[., 8ойтпюов Б.[. Фбчисл}овальна техн!ка |
н!ть реал|зац!:о функц!! {огп().
соэ : зм!- програмуван!тя. - )(мельницький: хт1' 1992.
4. Фдерхс!ть анал|тичтти|! вигляд пох!дно! вира3у до-
9. €тпэнлш Б. }!шппмон. Фсновьт программирования ||а
в|льног.о_порядку. ,(ля цього створй функц|то,'''"'.'''"отю с++. - м.-спб._}€.: 8ильяме,2ФФ2.
""ой д"'о |!.€тпроус7пруп Б. ,{,зьтк программирования 6**. _ 1\4.:
обернену д,
функц|| 1огп(), яка би ва деревопод!бнипг гра6опл о]'ду'й'
''р,"у сам ви-
раз. и.в.к._соФт' 1991.
|\.!эйтп !|[., |1ротп (., ![ортпцн д.,{,зьтк €и. Руководство
для начина1ощих. _ 1!1.: }1'р, 1988.
\2.){а[длтен ][.Б,от1,ап0 6++ для ''найников". _ }(.: .(иалс:с-
тика' 1995.
|3.|ог|тпап [. €опуег{{!п9 б !!о с++. _ '!0'!п0сгев||/1!1с6гатш
н!11' 1992.
14.Ро1т! 1. ?цгбо €++. _ 1}:е Беп]агп!п/€шгпгп!пдв Рц[:|!-
в}:|п9 6отпрапу, 1991.
1б.'||'1епег |!., Р1пвоп -0,. 1}:е 6** 8ог[Боо}" _ А06|зоп-1й[он_
1еу ршБ1|в}:!п9 согпрапу, 1990.

|8',{
189
с!АР',,уЁт

Розд|л 3. вовьАш} с++ вш1[}вв 139

189

|90

You might also like