Glinskiy ya m anohin v e ryazhska v a c i c builder

Page 1

!

с++

с++

Ёавчальний

вш||оег пос|бник

3-то видання


|]|}!( :111.!)71}::7

у/[1(

{;}'}

Розд1л 1

! .:!

|'ь,1

мовА Реколсен0овано !у['н!с7перс!пво!п осв'/пш [ наукш !кра[нц я!с на'вчальнш1 пос!бнцк ал,'{ стпу0ентп1в не!т[ехн'чнцх спещ1альнос/пе[[ вшщшх новч('][ьнцх зокла0[в (}1шспъ в|0 09.07.2003р' ]Ф 14/18'2'1214\

^'{ону

$ 1. 1. ётандарт

д.(э.-м.н., професор 1(оленюк [!. !. € вула '$. [А.ф.-м.н., професор о

|линський я. м., Анох!н Б. €., Ряэ*ссьтса в' А' г 54 с++ ! 6"++ Бц!16ег. навч. пос|бн. 3-те вид. -.[[ьв!в: €11[ \92 с. |линський, 2006.

-

теоретичних в!домостей про с++ | €**

8ш||6ег супровод-

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

71у::.;:п,::<>| !}()/1()

роботи студент!в, п!.дготовки

о багатовар!антший

|

шроведення 1]рактичних занят'ь

зб|рник 3адач.

()риг|нальна апро6ована пдетодика опанування основами тиови 6}* зру{ним 1 с:,:':гс>реттття проект!в у 6++Рш|16ег зробить навчання доступнип{' ,|,1! 1!})1{()м{|им. |[ризнавений для студент1в р|зних напря:ик1в п|дготовки. !.

]

!

!'

!

,1

1!

04

000000

00 2

ББ!{ 32'973я7

2006

}ц.| :::т:л:;и ||рограмних продукт|в с 3ареестрованими товарними ф1рм.

!у!,!! )!(!1м п: тг!71т:с>:;|71;лих

!!г;: пс:: !!:!(),!'и|1д г1|е| тсниэкки 1|)''!!!!|

не мо}ке 6ути в!дтворена у экодн!й бёз дозволу

! {)у.,1|, 1!:сг:ми;;:'ц<:обами' зокре}да ксерокоп|.к;ваннятул, в Рос|] кни}кки _€анкт_|{етер6ург--$иев).

!||!]!.1!!!!!!!!,,!,!}]!. !!1;:;:то |||! ви.цання !!

1 |

| |.1

|!1

\,,./

|!ш

[. 1 | !

!(

|т :с

|:':' + ( й

<><:

|)(!(} з!):}.|-()2-2

:с п;п'

@

основн] поняття

1у[ови.

$ову

програту[ування

[++ на початку

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

1|и;*.п:тд

[++

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

Рещензет+тпш:

!Бвш 966-2934-02-2

пРогРАмувАння

1{але)1сить

видавничому

€"]**

! !

[линський $'. м., 2006

е роз1ширенням мови €.


€*+, е штоб|льни:ци, тобто :шона бу';'и виконан| ко:у|п'}отерах р!зних виробник1в | в р|з-

!|1;с::'р::ми, складен| ш[ово}о э:су'л':,

с>::с-'р:тц|йних систеш|ах'

!!!|х

3авдяки

ному

€**

е особливо

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

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

2. Алфав!т 1 клточов! слова.

||1|!!|)!!|(.,!1}]1, з:и!ннитш'

(:!с.,||!,/[!!1'].!()'|

гл|':'м,

3 рядкових

т0ко}к м|стити сиш!вол п!дкреслення. 1дентиф|ка_

:цп:с|.л1>, {1

'!1)|) ;!!!!})|с,/{]!

]/с| слова ш!о}куть сталиш[' функц|ям. чи прописних алфал|тер англ|йського

|[о(!инаоться

!!сат1сзса.псс,лстоя

в 6укви

:

словш]'1ш. |}од;и ;*икористову}оться для написання котшанд. 3м|-

ни'|'и

а5п

аш|о

боо!

кл}очового слова у програм! не моэкна. слова :цови €++:

|||)].![]|!1](1е!|!{'1

Фсновгг|

п{.;тлс),лс>:;[

6оць!о е!зе епц|т

са{сп с1':аг

ехр!|с!! ех[егп

9о!о

ге1цгп э!':ог|

(пгош !гу |уре0е| 1урепагпе цп!оп цп5!0пе6

!п[!пе

э!:ео!

уо|0

||оа( {ог [г!епё

с|азэ сопэ| соп!.пце 6е'ац![

ао

|оп9

6е!е|е

рг!ма!е

рго|ес|е6 рць!!о ге9!$|ег

!'

з!9пе6

|п|

у!г|ца!

5!а|[с

уо|а|!!е

5[гцс|

ш1т!!е

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

!шректпшво

!|ри€днати

Апс1цёе

програ]\[ний

означае' що до програми необх1дно

код

|з зазначеного

Ф айли, як| приеднутоть директиво}о с|лойло ;шш зоео пов к1в (}теа6ег-фа йлатли,

п|сля

не:

файлу.

#|пс!ш0е,,''"",''.''',",

б|бл|отека]ии' модул'|ми)' ]/ таких файлах зазвичай оголо11]у!оть стал| й з:и|нн!, за_ |'олов1{и (сигнатури) функц|й тощо. |||'с| стандартн| команди та с}эункц|[ мови €++ визнаненн! у с|;айлах заголовк1в. 1{об при€днати 1шодуль до програ1ии ко|)истувача' директиву прег{роцесора необх!дно зазначити на !|()т{атку програ}!и

так:

#!пс!цёе <назва файлу.розширення> ::бо так:

а6о |з сишхволу п|дкреслення.

-[. Фднаков| за зм|стом мал! та велик! л!тери у

мс::з! () 1+ вва)катоться р1зншмш символа1ии. Ёаприклад, !мена 1!! у [',1 :: :с: 1'1! !пупа1пе позначатоть р1зн1 об'екти. г

бгеа&

са5е

гпц.аь!е пеуу

орега1ог

51ш!!сь |егпр|а1е !}:!з

3азвичай ус! стандартн! б1бл!отеки розм|щен| !шс1,0пп середовища €**. )/ такоплу випадку

у

т:атгтц!

на3ва с}ай.тпт с !|1!раштетро1и директиви, |! 3а3нача}оть кутових у ду)к]{ах .__|}а.!!]!:'' наприклад

#|пс|цое <па1Б.[.т>.

_ [тсщо эк потр|бний файл розм!щений не т:а:тг1| тшс[1]!)]4' :'о на3ву файлу |з зазначенням 1шляху у пиш]уть у ла11|{ах "...". 1{априклад' якщо деякий файл }1уБ|б.Б е у папц| в!ш8 !!1! /циску 6:, то тре6а писати так: #!пс!ц6е''0:\э1ш0\|т,4у8!б.|,,'


заголов:]оува)!се}!ня2' 8г!дно з| стандартом 1$0/А$$1 файли 6ез розптирення' з&писув8ти :с|в у директив! #|пс!ш{е прийнято мови 6' як! вико_ !!1}1!риклад *йс|ц6е<па1п>' файл*т заголовк!в почив&1оться з л!тери с' наристову1оться у 6**_програмах' сг{ас_ ,''р'*'''д *1пс:ц6е <сз16!о>' 1{я моэтслив!сть реал!вована у

них комп!ляторах мови'

зна1!е1{1{я' по-пер1ше' вона !шректпшвс #ёе|!пе мае подв!йне сталу)' Ёаприклад' як_ мо)ке задати стале з}{ачекня (оголотшуе то ]"| п!д час виконання прогш1о у програм! задано #6е'|пе }'! 25, вона дае 3могу описати рами 1шати1!!е 3вачен|1я 25' |{о_друге, _ коротк! команди (переознани']]и командтт\ нтг 3апи_ '.*р,", сати функц|!, наприклад' так: *6е|]пе в(а, б' с) (ь) (ь) - { (а) " (о))'

за:и|сть кома:{ди 1епер окр!зь для обнислення даскрттлш!на!тга

0=Б*б_4*а*с мо)кна 3аписувати 6 = 9(а, б,с).

#6е{пе' Ёащ>иклад' [шректпльв@ *|.|псе' скасовуе д|:о директлтви #6е||пе о(а'б,о) (ь) (ь)_ 4 (а) (с))

*цп6е| о #6е!!пе 0(а,ь,о) ((а) " (ь)' (с))

Ретпта директив описан! у $ 17'

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

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

:1!.я

вигляду

м <}|гурних

духсках { }. Розглянемо програму' у ре3ультат! виконання яко| на (}|{ран буде виведет[о пов!домленн'|: ||рив!т, студенте! я с++! моя перц!а про2рама мовою с++ #|пс!ш0е <!о91геап.п> //

!п| па!л() {

соц1

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

3оувоэсення 3. Функц!то тпа!п() мо'!сна 3астосувати так:

{

}!ло функц!т 3 командою ге|цгп 0;

уо1ё па!п() {

)

]

[ака функц|я навиваеться функц|ето

не 3алепсить в|д параметр!в' його ваписувату! не

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

т!ло функц!|;

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

с|;мгггспц|я

[рив!т, студенте! я с++!";

)

па!п(то!6)

,лц, гпа!п()

<< ''

.е{шгп 0;

па!п() типу мо!ё. Бона не

поверта€ у програму }кодних 31|ачень' тому команду ге1цгп писати !{е треба.

|;. 3агальпа структура програми. }{айпрост!тша програ1ша 6** мае такий вагальний вигляд:

м()[}()|о


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

// коментар!

#!пс!ш6е <назва б!бл!отенного файла> мо!ё гпа!п()

соп$| <на3ва сталот

{

<т!ло функц![>;

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

ретн!

3азвичай складн|1ш| програми м|стять 3начну к!льк|сть

елеш!ент|в. тош|у у загальному такий вигляд: тиае 6** 1иовото [![)огра1\1а

с|;утткц|й та додаткових

коментар! #!пс!цёе <назва б!бл!отенного файлу

соп5| <тип> <на3ва сталот 2>

соп5| у;к

1>

Б.тлетшенти

)

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

]}м!птт:!

|!,!1|(:,|'||!!()(:1,!

|

ста.тт|

чи стала - це пойменоват{а

значення'

А€

збер|гаеться

д|_

тип. на3ву

||!|{ |!'!м'т:'г':, !1

(

списк|в запису}оть чере3

!п1 а, с; {!оа| б'

:

кош!у.

Ё1априклад,

0' :; сБаг ш;.

3м|нним мо)кна 3адавати початков| значення в!дразу п1д [е називаеться 1тэ1щ1ол|защ1сто даних. на-

|!!!с оголо1шення.

!!|)иклад' 1|оа! б' 0 = 2'5, а = 4; с}:аг ш ='1';. Фт}ке, у 3агально1у1у випадку зшт|нн| одного типу оголот1!у_ |()'|'!)

так:

3на-

<тип зм!нних> <назва зм!ннот 1> = <38?9€ЁЁ9 <на3ва зм!нно1 ш> = <3начення \>, <список !нших зм!нних>;

дае програтш!ст.

обсяг опе/(.::я: 1;с;бтсгги з даг[иш|и сл|д 3аре3ервувати певний |хн! значен;г;:'г,:::т!;с:'[ ::::м''тч.! 1{о]шп'тотера' де збер!гатип1уться !!1! '|'с;му :г<:! 71::т:|, *ттс1 використову1оться у програм!, потр|бно !()1|1'и (оголосити), оск|льки ко1шп|лятор ро3под!:, т' :.;г'; : п. :,! 7ц:, )| ::

|х оголо1шу]оть так

|нн! оголо1шу}оть так:

(|х прийнято на3ивати да11ими) ш|а]оть так|

: т:пзву (|м'я),

]'1,]ннш ;шш.

<тип 3м!нних \|> <список 3м!нних ш>;

:гм

ко1ип'|отер&,

3

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

<команди>;

|! 1|!!!(1! о11о[)ати|]но1 патш'ят| '!(.!! ! !.'! 7цс:.ггпсо| 1}еличини.

пта[1т.}':.

!ан|, як1 п!д час виконання програш1и ш!о?куть набувати

1;|зних 3начень' на3ива1оть ся

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

31и!пн!. 3ти|нна

г!з1 = 176;

вувати у програм|, заздалег!дь п!дклтонивш!и моду.пь

глобальних зм!нних>,

та

20'

,(ля стало| д задано тип * {|оа| | значення 2,78. 3ауваэюення 5. у с++ е так! стандартн! стал!: число п с стало!о м-Р1, п / 2 -м-Р1-2, п / 4 _ м-Р1-4, 7|п - \0'.!'Р|, |"[; м-1 8@втР1 тощо. {| стал! мо)кна безпосеродтгьо 1]и!{орис1'о-

<оголошення локальних зм!нних>; <оголошення локальних сталих>;

€та.тп1

=

соп5|'!оа|9=2'7&;

(

6.

стало1 2>;

€талу 2 називатоть !пшпованок) стало[о. за 3а1иовчуванняш| сп.ала налеэ{сшт[ь 0о ц1поао т/[шпу. |[|д нас виконання ![рограми 3начення сталих 31у||н1овати не ]шо?!сна,. 1рсокла0 7. Фголосиш|о три стал|

випадку

<оголошення глобальних сталих>; <оголошення та створення функц!й користувача>;

!с1|.|!

= <3Ё39€}!ня

|!.!!,слова

*:пс:цсе <назва б!бл!отенного файлу \|> <!нш! дирекгиви препроцесора>

..'' р-.у,'''ту

сталот 1>;

::бо так:

)

.''',''""',

1> = <3Ё39@Ёня

3апитання 1.

2.

3 чого складаеться алс}ав|т мови? тт1о таке кл1очове слово? *{к| ви 3на€те клто.тов| слова?

| !

:т:'!71:;<)

;! о!1исаш1и.

0


[[!о таке препроцесор? [[!о таке директива препроцесора? .[[к! ви знаете директиви? |![,о таке файл заголовк|в? Фпитш!ть 3агальну структуру проц)ами. 1|(о таке коментар? тт\о таке стала?

3. 4. б.

(!.

.-

8. 9. |т1,о таке зм1нна? 10. *[к оголосити зм!нну?

8прави

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

ми виведент*я на екран: а) в!домостей про оебе; б) розкдаду вапять

у

понед!лок; в)

адреси; г) !м|тац!! д!алогу м|:к користувачем | системо|о.

$ 2.

ватшо!

типи дАних

1ршкла0.1. Фголосимо три 3м|нн| ц!лого типу: |п| х,

1{а етап1 комп!ляц|! для 3п['.нних )€,

[аблшцл 1'

аьог| !п[ шпа!6 !9по0

в[оЁ

!п|

1!п! -*-

!с;:т9

с:::в!с !9::о0

!0

!оп9

|п[_

ц|лочцсельнцх тпцп1в

,(!апазон дощ/стп}!их оц&чень

2

-82768 ...32767

2а6о4

!п|

!ан!

Фбсяг, 6айт!в

-82т68 ...32761 а6о -2147 48в648 ... 21 47 4в3647

2а6о4 4 4

-2147

0 ... 65535 або о ...4294967295 483648 ... 2147 48864'{ о ..- 429496729б

!, 2 буде надаЁо

пев_

}{адати 3начен!!я цим з:ш!нни1ш 1![о}!сн& 1|а етап! виконання ||рограми 3а допомого1о команд присвое}{ня' наприклад' так: х = 157; у = -68; а = 15;' ! дйянку пам'ят!, надану для зтш!вно! *, буде ;!!)шесено число 1б7, для у _ -68, а для 2 _ |б. |[|д тас викот{ання програ1![и 3наче'1вя з:ш!вних мо}кна :зм1нтовати. Ёаприклад' ко1у[анда присвоон}1я х = 2003 3анесе у :;!дпов!дну для зтш!.нно[ * д|лянку пам'ят! число 2003 (попе[)едне зт1ачення 157 вилутаеться автоматинно). [1ршкла0 2. (тал1 ц|лого типу 1у[оэт{!та оголосити так: оопэ| !п| а = 145; соп5| |оп9 !п1 б = 365978.

3начення даних а та 0 у програм| зтш!нтовати не

1шо}кна.

3. А1йоЁ ти.1и. .(1йсн| типи описан1 в та6л. 2. ?аблшцл 2. /11сн1

3аувоэтсення 1. Ф6сяг мо)*се вале'кати тако}к в!д р!зновиду опе_ рац!йно1 системи комп'к;тера.

[[пзва типу

|п| 2;

гтий обсяг оператив1то! паш:'ят!.

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

у; 5ьоп

Фбсяг, байт|в

Ёазва типу

4

{!оа|

8 10

{оцБ!е 6оцБ|е

'{1апазош

гпшпш'

значень

*3.41оа8 ...13.41Ф8 : 0

+1.71о308 ... +1.71Фо8: Ф +1.181о4932 ... *1.181Ф932 . 0 десяткових числах ц!ла ! дробова частини

3аувоэлсеюня 2. ! висла в!докремл1о1оться кр8пко!о.

[рсскла0 3. Розглянемо фрагмент програ:\[и {!оа| [, Р!

соп5|

?ут

=

'|оа|

3.1415926; ёоцБ!е у ш=

-12'

!':

=

23.4;

=

365.976;

дв| зм!нн1 (и' $) типу {!оа| ! з:и|нну 1.' типу тако'х ста]1! у; = _12; |'; = 23.4 типу [|оа1. [|йсн! числа 1шоэ*сна 3апиоувати у формат! з ф|ксовано|о !с|)ппко1о' наприклад -2.3,5.0041 , або у шоупово{шу форлвотп| (у с|х;рмат! з рухомо:о крапкою)' наприклад, 4.2е+2 (це е нисло '.|'1\|, 3.27е-3 (це е 0'00327). 3апис пе + п' означае 1ино'1(ення чисда п на 10 у степен| (ошб|е, а

оголо1ше11о

| па, тобто 3а о3начення]\д

пе*п1:п.7о!,п [

{3гтак

''*"

1шохсна

не 3а3начати' 8нак ''_'' |1исати обов'я3ково. 11


4. €итшвольний тип (с}:аг). €имвольний тип _ це 1цно}кина с:г:мт;<лл|в кодово| таблиц| комп'1отера А$€11. (ш;пволъ'гт,а с,'.ьл& - це оо!|.н си1цвол (1 байт), узятий у лапки на зра3ок ;п::с;<'т'рофа, або нисло у 8-, 10- чи 16-й систепт| числення' яке € !с(),/\()ш| сиш1волу у таблиц| А$с11. [!рськла0 4' Розг.т:янемо о1тиси сиш|вольних зти|нних, де :зм|ллнитц п1, п2, п3 | п4 надамо 3начення ./|атинсько| л!тери 'А' (!отир}да способатци: сьаг п1 = 'А', п2 = 0101' п3

=

65' п4

3апитання

1" 1]1о таке тип даних? 2. ,{к| ви 3|{аете тити даних? 3. 8к1 ви знаете чиолов1 тили даних? 4. 8к| ви знаете ц!лонисельн1 тптти даних? 5. ,{к! ви зна€те типи даних для д|йсних чисел? 6. } яких фортиатах мо}кна записати д|йсне число? 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? 9. 3 чого утворк)оться символьний тип?

'. = 0х41

9исло 65 - це десятковий код си1цволу'А', 101 - в!с|пдковий, 4| - тш|стнадцятковий. Ба початку останн!х двох код|в ('| 01, 41) 3апису1оть преф!кси ''0" чи ''0х" в|дпов|дно. 1ръокло0 5. Розглянешто спос!б ви3начення десяткового А$€11-коду деякого си1цволу' наприклад 'А': сБагс=,А,; !п[п=с;.

3ти|нна п на6уде значення 65.

10. Ёк одер)*{ати на екран| А8611-код символу? 11. 3 яких даних склада€тьоя лог|чний тип? ']'2. $.к утворити тип даних користувана? Бправи

1. Фпитц!ть: а) дв1 зм!нн| х та а ц|лого типу;

б) дв! зти|нн! д|йсного в) дв| зм|нн! си:!|вольного типу. |[ро!н!ц|ал!зуйте описан!. зпт!нн|. 2. бтвор|ть тип даних користувача с|па, знанення1!!и да1{их якого € :;с'пз171'омн! ц|л! нисла. .[кому д!апазону мо}1{уть нале'кати знат{о11т1я т'::г:у;

,|'1|!!

5. .}|ог!чний тип (Боо!). .1|ог|чний тип характери3уеться

дво1\[а

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

.}}1аченняпди

боо! б = |гце. 3шт|нн1 щього

|']х

описаного типу?

3. 8к! значення мохсуть набувати' зм|нн1 типу !а9а, якщо

;:::ь!9пеё !оп9 !п|

4.

/!]||!!|х

!а9а?

Фпитп!ть тип користувана ба!апэ з д|апазону втд *32 000 до 32 000.

$ 3.

|!!|{м числа:\д - 1[ше'

3ауваэкиплФ, 1{Ф не вс! комп1лятори п1дтриму}оть тиш да-

::г':х боо!. 1ошту, перед тиш!

як його використовувати, варто з'я-

(:у!]:]ти 1у1о)кливост! котшп|лятора.

6. €луалсбове ::;::;;; с|;утткт1|й, ::[|с> 71с>

!. :':т:: !;т !

слово то1ё. 6луэтсбове слово мо1ё допису1оть до поверта1оть 3начення у точку виклику

як! не

с|тункц|й без паратиетр1в.

'|'иппи !{ористувана. }(р|тш вище описаних /\11||их' 1уто}1{|{а створ1овати типи |сористувача

стандартних

||1лсолс'тссл|)

!у1гс:<|о|

6.

!,

!1

!,;!!,;',!

ш::з!9пе6 з!.:ог! !п|

!,п! |

тип

}<!!!<!э1

для 1то3начення коротких

бс-.з зтт:ттсу:

1!м;::г;! (к!!1' ! |1

Фт:итпешло

'

|<|!2)

розв'язування

ко1ианд' конк-

3адач|. {|о0очо .1 (про пряплокутний трикутник). [1ехай 3адано ка'|'(,'|'![ пряш|окутного а: 3, ь : 4, 3найти периш!етр трикутника | !!']!()!цу трикутника. |

|

про2рама [ршкугпншк1

,,|пс!цое <!оз1геап.б> #.пс!ц6е <па1ь.п> мо!ё па!п()

!п|а=3,ь=4'с'р,5; с=з9Ё(а"а+б"б) р=а+ь+с;

э=а-б/2; |!р

(!!&!э1;.

тдього

- це посл|довн|сть

алгоритпд

{

!

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

3апису!оть

1;с,':'гло|

,ур:6-{.'''"'"'у, ."

!

допуститии1ии значеннями

пРисвоення

1. [1роста програ]ша. |{рограпла ;|/! ][опош!ого}о яких

1уре0е|

типу у програм| мо)кна оголосити

сош! << =|| << р<< "\п''; соц1 << "5 = " << з << "\п"; соц[ << ''8иконав (вак|н Б."

//

3а0асмо 0ов>кцнц с[пор!н

/| @бчцслюемо е!погпенузу /

/ Фбчцслюемо пер[1ме(пр

|/ @бнаолюемо ллощу /| 3цвоёцмо 3начення перцмегпра // гпа

площ! на екран

)

}<:!1);

13


€и:ивол ''*'' повначае операц!1о мнохсення' а " /'' * д1лення. Функц|я зчг1() призначена для о6нислет1ня квядратного кореня. 1]я функц1я визначена у 6!бл|отец| гпа{}:.}:, яку п|д'едну|оть |{!! початку програ]ши. |!|сля виконання програ1ии на екран!

!п1 Б' а; |!оа| с; соц| << "8вед1ть ц1ле число\г':''; !/ 8воёцмо 3начення а з с]п >>

клав!апурш а; соц| << "8вед!ть д!йоне нисло\п''; !! 8во0цмо 3начення с 3 клав'а1пурц с|п >> о; ь

отри1\[а€1\[о

Р=12

5=6

8иконав (вак|н 8'

2.

прцсво€ппя. правила уагодэ|сенпя тип1в. $о1ианда присво€ння ш[ае такий загальний вигляд: -

<вираз>

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

або

с=3.8

<на3ва зм!нно| 1> = <назва зм!нно!2> = ... = <назва зм!нно|

\> = <вираз>

[1я колсан0ш.06чутел|ооться вираз | його 311аче:{11я надаеться зм!нн!й або дек!льком зм|ннпттт'. Бшроз призначений для описування фортшул, 3а якими виконуватимуться обчислення. Бираз мо}!се тчц!отити числа' стал|' зм!нн!, назви функц|й, в'едгтан| символа1у!и операц|й. Розгляне:шо приклади написання кош|а}1д присво€ння: а-_8 _

2;

с=о=а+4; е=с/5+о;

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

с

|| м!!ожо'!ня чцсвл

!!!пс!ш6о <.о5!г€ап.ь>

то!4 {

!'!

с'а;

)

}€о:шанда

<назва зм!нно1>

=

еоц| << "а = " << а << ''\п"; соц| << 'с = " << с << "\п"; соц| << "ь = "; соц! << Б << "\п'';

:т::т!г:()

б=7

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

!,

)

е.

6 = (|п|)(с'а);

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

'|'и (|||о!{атку

{!у

'!|''!'||']'

|1еретвор1оеться

до стартшого типу.

15


Бправи

1. Розглянув1пи програми

[рикщник1

!

[!!ноження чисел

як зра3ки'

ро3-

вар!анта з розд1лу ''3адан|" трьома спосо6ами: пт':тэк|т;' задачу ]'|, т "'й'"' час оголо1пення зм!нних; п!д а) задайте вх|дн! дан| присво€1{ня; командами вх|дн! дан| б) задайте в) введ|ть вх1дн1 дан! з клав|атури' ''3адач|'' 2. 6клад|ть програ1\1у ровв'язування задан| ф 1 з розд!лу |з клав!атури' ]1аступного п!с':я вап-того вар|авта' ,['ан1 введ!ть

$ 4.

|[оисвооння знака

яння (в1дно1пення

операц|я:: означас

до-

б|ль:ше або дор!внтое-

Биконання ко}1(но| операц!] 3д|йснтоеться 3 урахува!{ням _ найвищий)' [ля зш[|ни зви[тайного [хгт!х пр|оритет|в (тут 1 виконання операц|й використову1оть кругл! ду)*ски' !|()})'(дку ' виконання операц!й [[ ршкла0.[. Розглянемо ре3ультати 2 " (-5 + 4) =-2;

4-2=1;

::гп

2. ():пс:раг1!1 |пткременту (++) та декре1иенту (__)' Фперац|! преф!ксн''й !!!!(|)('м(}|!'|'у ! 11етсрс:менту |снутоть у двох срормах 3м|нперед .г;: оос:ссопс|л!'лсс'оо1й.5{т<тт1о символи ++ (--) 3аписан! а ||{!|(' '|'{) :цс: |пгпс1;етиент (декретшент) у преф!ксн|й форм|' |нкрепленту ш{ас }!! !!1,(! п:!с'.г::: :тм1тттпс;1 у постф|ксн|й' Фперац|я

"'*"

!!!!!!|{!{ шлтос

ш|дряд,

то для

однов}тачттого

3ада}тпя

порядку

''!|(,[)11ц!й використано кругл! ду}кки. Аналог!чно опера.ц1я декре1шенту мае такий вид: <зм|нна>

або

<зм!нна>-

!}дтачення зм|.нно| 3ме1т1шу6ться на. одиниц}о.

я

7ц[:оть

як ! ком&нд& ?=3_1.

$оманди

*

-а та

||рсокла0 5. Ревультати виконан}|я команд х= 4:

у= 15/--х;

т!}кими: * : 3, у : 15 | 3 :5.

.'у/1у'|'ь

!|м.!|||()т .т 31![е}т11туеться [1а оди}1ицто,

?ут споч&тку 3н€!чення а п!зн!т'1е обчислк)€ться

,!!!|)|!]} дл$\ у" ||

рсстсла0 6. |||д 1

час викот{ан1{я ко}танд

." 20:

о

,.

- 10; /, 9 6удуть ттадан1 3начення 19 ! 10 в|дпов|дтто.

({_ *)

!1м!!!!1|4м

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

! {!

операц!то

1ут споватку обнисл1о€ться вираз (для 0) з с: б, а пот|м ]!{)!.'!!'{шуеться значення зш:!нно! с на 0ди}{иц}о' ?обто а : с' | {:5+ 4:9, с:с + 1:5 + 1:6(цеоперац|я!нкреплен_ |'у у поотф!ксн1:? форш:!)" Фск|льки у вираз| 3&писано три

{а!зе'г:т !гше.

!,!!' !|!! |!!!!,!,|,/[:

?ут використано

у преф1ксн!й форм!: спочатку зб|льтшуеться 8наче}{з:и|нно! о на одини|]ю, & п|зн|тпе обчисл1оеться вира3. 1ршкпа0 4. Розглянемо команди

121(4-2)=6;

7'ь3--5=_5. 7%3=1', х:: у' 3на![рштс.по0 2. |1ехай х:3, у:5' .(ано вира3 {а!зе (хибн!сть)' оск!льки 3начення '|('!|[!'|м ]_\ьо1.о виразу буде вира3у х|: у ;тм!п:г::.:х х,г'а у не рьн! м|этс собото' а 3наченняш{ (у 1: > !, $ - 2) _ в!д!гт:с: (|с:':'ипп;т), знанення\{и вира3!в т т:с::т171::<>

а:3, ь:3.3:9.

с=5;6=(5++)+4;

д|лення, остача

вання' в|дн|мання

?--5+4--61

-2;

!пт:сре:шенц:

!облштця 3' Аршфмегпшнн! опероц11

1!1но;*сеняя, в1л л1ленв

операщ!й у

[1ршкла0 3. Результати вико}!ав}тя комавд

а

{,у/(уть таки1у{и:

в табл' 3' 1. Арифметичп1 операц!т над даними наведен|

121

м()'!']'у (декре:иенту} впливае }1& порядок викон€}ння !!!4[)д3&х. Розглянемо це на прикладах.

б=3*++а;

виРА3и

Розглянемо операщ|т пор!вняння' р|в}1}ое, !: - не дор|внюе'

/|Ёя операц|1'. 3нанення 3м!}{т{о! зб|ль:тлуеться ца одинищ!о. |(<;манди ++а' а++ р!вноеильн| команд! а = а + 1. Фортиа |нкре-

!

!


|

опеарифметично1о вигляд команди

з деяко1о м!!!!/(()!() |![)и()!]ос|1ня' сум|щено}о о/о:' 3атальний *:, -:, ':, /_, |)|!!(!(]!()' 1! с11ме:

|!оа| р|

х!

<вира3> <зм1нна> <символ арифметинно: операц!|>=

!||

=

математичн| 4. 1!1атетшатичн| функц!!' }с! стандартн! якп{о вони !ому' 6|бл!отец| тпа1}л'}:' функц|| у с++ описан! у шео6х!дно записати використову1оться' на початку програш[и заголовк|в рядок п!д'однання потр|бного файлу #!пс!цсе <па1п.п>:.

Фсновн!1иатеш[атичн|функц![6|6л|отекигпа||}:'Бнаведен!у круглих ду)кках' т'дтбл. 4. Аргументи функц|й 3аписують у Ёазва

Ёазва

с}ункп|!

1![атематичний 3апис

фуякп|'1

аБз(х)

!4

{аБв(х)

сов(х) з|п(х)

сов(т) в!п(х)

асов(х) аз|п(х) а1ап(х)

{,ап(х)

[я(т)

1од(х)

1п(т)

ротп(х,у)

эцг!(х) ехр(х

у!

,!; ех

>отш10(х

104

!<т91.0(х)

1в(т)

лшця 4.

се!1(х) {1оог(х)

А1[

1![атематичний запис

:5чп(п)' х'!

1./4);

, а,

&ш|,

(, п будуть надан| наступн| 3начення:

'':0з=

1оо0; рош'|0(3) = 3.14'15926) =

1;

1./4)=161|!=2;

:;:=з9г1(16)=/то =+.

$. Ёехай у програш!! оголо:шен!

|!1лсс'тсла0 ;':п::у с!оцб|е! !)

зтш!нн|

ь,

нехай б=7.6. 1од| п|сля виконання команд

ь1

,

ь2

1 = се!|(ь)'

!::] . {!оо(б);

!!м!!!!!!! б1 набуде 3начення 8, а з:ш!ннаб2 - 3начення 7. !/с:! |нтш| математичн! функц|[ :иоэкна вира3ити чере3 ос-

!!|.н,!.. !1лприклад1 €19х= !!сг<:.;л|довн!сть м.!'|'.!м.!'|'иц|,

1

/19х, !о9ьа = !п(а) / !п(б) тотцо.

виконання операц|й у вира3ах така ,к' як у

й визнанаеться

правило1ш

пр|оритет|в:

!)сб,:ис-тпототъся 3наче1{ня вс|х фулткфй' пс| входятъ у вира3;

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

1"1

агсов(х) агсв!п(т) агс0д(т) 3аокругл1ое чу|сло х до 6|льтлого ц|лого

в|дкидае дробову

частину чутста х

д|лення числа

,

на

чис]1о ц

ма1оть тип арфункц||, кр|м абз(х) | рош10(х)' абэ(х) та рош10(х) ти|'ум(}|['|'у ! результату ёошБ!е' ,[ля функц!й !!()м 1!|)!'уме; т'у | результату е 1п1' 9<:! тпаведен|

|

атпемапьшнн1 функц11

обчислтоо остачу в1д {гпо0(х' у)

абз(х); а=рош10(а);

&т:[ = со5(2 . рош(16,

4'

аб

= 16' [ц{' [;

х! =аь5(-2)=1-2!=2;

?+=]0

!

п

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

=

!!м!,!!![|м

!х одер}кимо однаковий ре3ультат' 1;|тзносильн!. Биконавтши викориотовувати а +-'! 0' А за:и!сть ко1ианди *'.'' ь

3.1415926'

к - рош(п'

м!хс символом арифметично! операц11 ,,'*,''.!'* '':'' пропуск не допускаеться (це лексема)' }{априклад' команди

*=

=

&г:!=соэ(2-Р!);

[3:туваэкимФ, 14Ф

- '''''мальн!тше 4 ь мо}кт1а т!утсат:ут 6

|\ехай оголошено зм|нн!

!п{х=_2,х1'а=з; '|'сг71|

а=а+10 та

7.

|1:са.тс;оо0

|!||!{]|(!у|()'|'ь у горивонтальному

[:;1гу':':, |! оо

у духски. Бирази

рядку.

][' багатьох

1иопсна 3аписувати

випадках

у дек|лькох ряд-

.1'{. "|'озривати'' вирази мо)кна' наприклад' п!сля символу 1::;;|гмс:'в'и.лт:о! операц|!. Бласне символ дублтовати не потр|бно. ||рсстсла0 9. 6кладетио програму' яка обчисл|ое 3начення

с]пугг:с:1!1 :т

=\]х2 +7.2

-|т _ь|+5;1д1 для х

:

2.

19 |[{


*|пс|ц6е

для поток1в виведення даних ! пов!до:илень про по_ е мон|тор 1{0ристув8ч&' а для потоку введення даних _ :г.::;1ц!д1'ур*. Фднак потоки мохсна перенацравляти, 1{априклад' !и())|с!{а зчитувати вх!дну !нформац1}о для програми не 3 кла|!!1!'['ури' а з деякого текстового файлу на диску (див. $ ?).

(''|'|)()ету1

!! Ф6чцслення в1)разу

<!о5{геагп'п>

|и!!.'|1{и

#|пс!цёе <гпа1ь'п> мо!6 па!п() (

сопэ| {|оа| р!

=

3'1415926;

у = оош(х' х+7'2,1' 7 5)'{абэ(х_ '!оа1х=2,у; !ош!..'"тп у = "'< 9 <<''\п";

5) + в!п(р!

-

х/

)

3);

такий: Результат вико1{ання програми

*о'5!2748' у:

Бправи

склад1ть Фбчислення вира3у як 3разком' _**'"*"*я 1. }(ористую1'{ись програптото з розд|'тлу ва|'шого вар|аътта

функи!! трич1 аргументу' 3иконайте програму

програму для обтисле**,

''3адав!" ддя деякого

3н&че!111я

аргумет{ту' 3вяотуйте реаульта'ти' дл8 трьох р!зттих 3начень вира31'1:

;.3апи:п!ть мово!о б** так! 2з\п2 х : 6\ у=

'\

у

=

#'^гс1€'х гт

"

ввпдшння

2: .'4 , _12'а'-|-Р-1,'**.5'1х31 .а.ь''9| *, -. ёозс'3

-

_ вшввдвння

дАних

1?1оду-

ко-

}0|!

тети_

зна_ ви_ 3на_

необх|дно ввести значення в!дразу для дек!лькох то мохсна а6о використати дек!льк& поток!в введен-

,

|вфор{[!д потоком розум{1оть процес уведет{ня-виведе}1ня так| пристро! введення-виведе11}|я' м::п1|| у фат1л. |!ерифер!йя| шринтер' розгляда1оться як текстов! :п:с :с.лтав!атура' мон!тор, автас виковання будь_яко! програ!1и с|;::-.|':ти (див. дал!)' |[!д потоки д.]1я введент1я '|'()м1!,г!|!|но 11!дкл1оча|оться стандарт}1' виведення (с!п}, виведегтт{я н& екран (еош{)' /(1![!1|х :з тс.т:ат:|атури (сегг) | допом!хсний пот|к (с!ос)" ::сг::!71<гм.лт{:[!1!'! про помилки команди введення (>>) ( 1':':т :7ц::;;'г':: | потоки викориотову1оть п

3а затшовнуванням

стакдарт|{}1м

при_

ус! зпс!нн! в одному потоц| с|п' з{}стосувавтпи дек|лька ко1у|а1тд ")}'', а саме:

:}1}{1исати

!1{}()

!|||!! |!!,()|'()

|

,'п', >> <зм|нна 1> >> <зм!нн а2> >> .. >> <зм!нна\!>;

|'ст:::''::'[п|еш|о *с;'11 11'' !.!}(}сти'

| введення'

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

програми 3упиняеться' €истетиа

1!гсп:цс;

.;ш.;|г:!г!|х'

у Р модул! :!:в{геагш"}: опис&н! комаг{ди введе}1ня' !оз1геатп"Б модул! виведе}{}1я' €! у .гп! оз{геагп.}: - команди

)

||:с комон0и. Биконан1{я

оч!кув&цня введення даного (екран !|!!|!, миготить курсор). }{ористуван набирае на клав!атур! |{!'!|!!'! :зм!нно| | натискае на клав|1шу вводу. } результат| !,..||1!!!!!'! лд|с! команди зм!нн!й 6уде присвоене конкретне .!!|!!!!1! (':'с:, яке к0ристувач уведе в клав!а'тури).

8,5з!п2 9

потоки.

$ б.

{

|||!|)!.х()/\ить у ре)ким

;;;.

:1(

', "."!"""]

|

1ов5|х

']/ 6++ 1{ема6 в6удованих кома!1д уведен11я_ви1. |[отоки. введен1{я-виветт: тут реал!_ ве/1ення д&!{!тх.,(ля орган!зшц![ ви3наче[1а у спец!альних мозовпна концепц!я поп0о1с|в' яка

м1|нди виведення

(масовою)' $оманда введення >> описана у |ов{геа:п.}: (!э{геа:п.Б) | мае такий загальний виляд: _-"и

т!!!!!('[)са.7[ьно:о

{;|{:::|сл'гс:1д|

'|

у

'ц'

2. |{о:шанда введення даних. Бадавати 3начення зм!'нни:и двома способами: 3а допомого1о команди присвоення' !!!!!!|)!|клад х=3.1, або коштаътди уве0енн,я аоншх !з полов!отпу1::: ' !(отианда уведення даних !в клав!атури дае 3могу викону_ !|,|'|'1[ [|рограму для р!зних вх!дних даних' тцо ро6гтть ![ б|льшт !и(|')!(!|д

програму [рикрник1

наприклад'

з $ 3.

3на.лення стор|н

так:

!г:|:п' [;' с; (

.!! . .

;[;

:

!;: . .

с;;

с|::..[;;

1|:';1 '111,'

|]иконання програ1ши на клав!атур! на6ираешто

! ! (!!.!!искаемо на клав!шу

.1 г,

\'

!

виконання ко1ианд зм!нн| набува:оть таких 4, €:5. 3начення 3пЁнних тако'к мо'кна пропуск. 1обто на клав!атур! лшоэкна на6рати 3 4

1пс,:п1,.:11'.1'дт!

....|}1||,!!|. э,.!!!1||

Ёп1ег)

1

|

||

.,

;}, 0:

!|(}|)(,:,

2\


5.-].

одним потокоу| 3м|нним мо}кна |1адату1 3начення так: с!п

а >> б >> с;.

>>

!1ктцо

у списку введення (який на6рали на клав|атур!) да-

наступптих б|льтше, в|эк з:и|нних, то зайв! дан| будуть зчитан| в|дпрограм| ||о1о ко1шандо}о введення. ,[кщо така команда у

сутня' вони будуть про!гнорован!'

корис_ |!рограш:и необх{дно складати так, щоб 11у|му! 1цогли туватись не ли1ше укладан|, але й !нтп| осо6и' 1обто програш[и введен1ша1оть бути штасовими | зрозум|лиш:и' |{еред командо1о

4. 1{еругон! посл1довност!. $ерутон| посл|довт{ост| _ це комс;!:;::пд|! спец|альних си:швол|в' як| використову}оться для вве''((,!!|{я та виведення даних' $еру:она посл|довн!сть складаеться !;г с:имволу слетп ''\'' ! спец!ально о3начешого символу. Бони обчисвиведення фортиатованого результат|в на екран' наприклад' переходу на новий для рядок' г!о/{/!|!!!'{ 3вукового на екран де_ сигналу' а тако}к для виведення !!!{|!х спец|альних символ!в: апострофа' лапок тощо. Фсновн|

!||)!!:||{а-чен! для 1!(,|!|)

посл|довност| наведен| у та6л. 5.

;тс,1>\:|Ф91

!

тексня даних варто 3аписувати команду виведення на екран ввести' сл!д саме те' про що тового пов!домлення-п|дка3ки Баприклад' у т1рограм| }рикутник1 мо}кна вивести пов!домлення ''}вед|тьсторонитрикутника'.або'.а,б,с:''тощо'ав}1се п!сля цього 3аписувати команду введення:

(]и мволи

\п \г

списку у потоц! сош| в|докремл1о}оть кош|анда1црт 11' /![я ко:пан0ш. (тал|, 3начення з}д!нних та вираз|в вивомо)кна перегля/1'|'1'ься на екран у в!кно виведення' !,е в!кно ||ути за допош|ого1о команд \:!!п0ош ф ш5ег 5огееп головного в|кна пс<ттцтт|лятора або кошт6|нац!! клав!1ш А!{+Ё5' '|екстов| пов|домлення у команд! виведеншя запису1оть у ],].;:с.'тценти

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

<< <<

"|1ериметр

"[лоща

-

"

"

= '' << 5;

| пло-

р;

!:: с:псратт| одер)ки1ио !

!о1тиметр = 12!_!лоща = 6

)!:с б:ц,:гпмо' ре3ультати 3лива}оться. ,(ля того, щоб дан| !!!!!||)/(!|.'||!(:т, у :потр|бт1о1иу для користувача вигляд|, використо:, ! пс;о.ш|,гцовттост|. \, !( )'|'!. псс' ;у ! !

\|

\у \\ \,

у \

списку виведення мо}куть бути стал|, зм|нтт! або вирази'

1

п

'..!!!|{1!х. Розглянемо !||||

д!то цих

посл|довностей

на приклад!.

,{к-

|!()11ти команди

с:о(:1 << (:()[!1 << .!!

еру юн1 пос л10овноспт!

посл|довност! разом 3 коментарями 3апису}оть у

!(|с,1гупон|

|||!'

1[

||одати звуковий сиг11ал |{овернути курсор на один символ на3ад ( знитл;ити попеоелн|й сиштвол) |{ерейти на нову стор|нку |{ерейти на новий рядок |{овернути куроор на початок ря]{1{а |{еревести курсор до наступ]]о{ ттозит1|{ табуляц|! Беотикальна табуляп|я Бивести си}1вол похило| риски Бивести символ апоотрос0а Бивести символ лапок Бивести знак запитання

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

лшця 5.

|{о:шентар

п:осл|довностей \7

соц| << "}вед!ть сторони трикгника''; с!п>>а>>б>>с;

){'

керук)чих

об

.1\,./(|! '7'::;:

"!вага! \а\п "; сош|<< ",[ане \"а\'' введено некоректно \п"; "Биконайте програму ще раз";

||(),цано п

а

звуковий

сигнал

| на

екран|

побачишто

!

/[,!!|(] ''а'' введено

некоректно

!|ик<;п;айте програму

1!;+:п1<;

ще ра3

|}икористати посл!довн|сть' неви3начену у тиов| 6** \ш), то комп1лятор пропустить сиш1вол посл1дов-

||!!!!!!!.|гг.:::п71,

||'!!'!! (!!{)х[.|./1у риску) | виведе на екран ли1ше си1ивол' ,.!.{1 !||'',!'| [)иски (у натшому випадку л1теру ш). :

{1!!|('.!.)!се1!ня.[.

!)!|(''г()|}увати !1

(

]!

|

3аписа-

3ам|сть керу:ово| посл!довност1 \п моэтсна вико_

команду еп01 _ к|нець рядка. Ёаприклад, ц| дв!

|,,[и р|вносильн!:

:

23 :1 :1


соц| << соц| <<

у

"|=" << | << ''\п''; ''{=" << { << епо!;.

2. 8ттачення д!йсних чисед (т}1п {!оа1) мо;кна виво_ /\итш ||а екран у стандартному або науковому форматах' '[[ктцо вначуш{их цифр' з1{вченнп даного необх:дно заокруглити до

|}сьувоэсеннл

'} то перед командо1о виведенпя треба 3аписати соц1.ргео1в!оп(п)' Аля подан}{8 ревультат!в у науковому формат! нео6х!дно п|д'еднати файл заголовка !опап!р.}: ! перед командо}о виведенсоц|

<:оп|о.}:,

ггрогра:ш! 1рикутник2 отптсано ш1д'еднанття б!бл!отеки де ви3}1ачена функщ!я с!гэс() - очи!цен}1я екрана та фултк-

яка да€ {3!шоту 3ащ)и1иати т{а екра]т[ ревультати вико_ цроцра]у!и' доки не буде натиснута дов1;ъна клав|п1а ва

п1|я 9е!сБ(),

|]{}нкя

:с.л:аз!атд:|.

!,ов|0ка. ,{ля розв'язувацня типових задач про трикутник ведемо формули обчисленпя деяких вели(лин: в!дстань 4 м|хс точками {хт, ут), (хп, уа\:

<< 5е1!о$'!а9з(!о$ : :вс!еп!||!с);.

6

_

=

'"\2

3а0очо -| (про трикутн|{к' 3адаший координата1ши верпшин). ,(ано координати трь0х вер1пин трикутника А(1; 1)' в(2; 2) та с(_1; 2). Ф6нислити мвд!а|ту /пь | рад!ус описаного

'/{*, координати сере]ини в!д>!зка: п!впериметр трикутника:

|{ола г'

висо?а трикут'!ика: [рищтпнвк2 // Б!6л|опека ма!пема|пцчнцх функц!й

#!пс!ц6е <!ов!геап.б> #|пс!ц0е <па1|'Б> #!пс|ц{е <соп!о.[т> мо!0 па|п()

/|

о!гьо(); х1 ,

х2, х3,

у1 ,

у2,

у31'

// @нощаемо екран // @еопошуомо зм|нн1

па ввоёцмо ёан|

соц| << ''9вед|ть координати тонки А"; с!п >> х1 >> у1; соц| << "}ведЁь координати тонки 8''; с1п >> х2 >> у2; соц1 << "9вед!ть координати точки 6"; с!п >> х3 >> у3;

пб,

р, э,

с;

2; 2;

/2;

соц| << "пб =' соц1 <<

<<

пб <<'\п';

"г = '' << г << ''\п";

9е1сп();

8цвоёцмо 3начення ме0!анц /!8цво0цмо ра0|ус / ! 3агпршмусмо ре3уль[па1п!! на екран!

'

//

)

||!д нас виконання програми функц!я с|гэс() з|тре з екрана ус:| результати та пов!домлення по:1ередтт!х програш| (якщо та:с| будуть), | на чисто:шу екран! матиш1емо гпб = 2.061553

г=1.581 '139

24

=

- у")'

|

|ц'а

;

(х|+

х2)/2, у (а + 6 + с\ / 2;

{рр - $р -щр

!т.:2'

6!сектриса трикутника

(у,

*

"1

*{;"^Р

=*'{"ФФ-Ф ,

-

(!у+ уэ)/2;

;

/ о, !оь:2в / ь, =

:

ьс:2в /

с,

"' '

=$+;'''-

' рад!ус описаного кола: -Р - а0с / (4в\з рад!ус вписаного кола; г : в / Р, де о,0, с - сторони' а &, Р, у* в!дпов!дно кути трикутни1{а.

5. !1ерепаправлепня поток1в уведепня-виведеппя у м$ !)()$. 1нод! вх!дн| дан! для ехе_файлу програми 3рг{но 3читу-

!/ Феолош;усмо 0о0агпков! зм!нн! !! Ф6чцслюсмо ёовэкцнц сгпор|н !прцку!пнцка а = эч((рош((х3 - у2],' 2\ + рош((у3 - у2)' 2';); б = зчЁ(рош((х1 - х3)' 2) + рош((у1 'уз)' 2)); с = 5чЁ(рош((х1 - у2)' 2) + рош((у1 - у2\' 2)); !/ Ф6чцслюемо коор0шнатпо х = (х1 + х3) / !|-сере0они с/поронц ь у = (у1 + у3) / йь = эчп!рош((х - х2), 2) + рош((у 'у2),2\\; /! Ф6чцслюсмо ме01ану гпб /| Ф6чцслюемо перцмепр р = (а + Б + с| /! Фбчцслюсмо площу 5 = 5чг{(р (р' а) (р _ ь) (р _ с)); * г = а б с | (4' з|; |/ @6чцслюомо раё!ус

!!оа| а, б, с, х, у,

трикутника1'

шр

{

|!оа:

п.т|оп{а

Р:

х:

+

на_

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

1ршкла0 1. Ёехай програма 1рикутник2 з6ер|гаетьея у с|г;п{{.гл! !!уг|}.ехе, а у файл! 0ап!.1х{ 8аписано тп|сть д!йсътшх ни_ !'('.,| ' координат вер1пит трикутника. 1од! викот1ати програ]иу | ;г,:итати для не! дан! з файлу 0ап!.{хЁ мо}1сна так: !уг!к.ехе

< 6ап|'{х[

![об вивести ре3ультати вико1!ання програми у файл, у }{|)мп|{дно1иу рядку сл!д увести <на3ва ехе-файлу> > <назва файлу з ре3ультатами>

!{отиандо:о бу/(уч'ь занесен!

геэ1.|х|. результати програ]ши {уг|}.ехе файл гев1 .{хЁ.

1уг!&.ехе >

у

25


!|!<;а:сллд

'|'у|}!|'г|4 д1ан|

одночасно перенаправляти два потоки' тобто зчиз одшого файлу та виводити |х у |нштий:

<на3ва ехе_файлу> < <на3ва файлу з вх.дними даними> > <назва

,{кщо ре3ультати файлу

{!!е1

файлу з результатами>

необх!дно використати як

гзх!дн| дан! файлу {!!е2, то стандартне введення одн|е| програш[и мо}1{на з'еднати канало1\{ !з стандартним виведенням |нтпо[ '|'&к:

Адреси зо6раэкатоться ш:|стнадцяткови]ци числатли '!!!(: !(()х{ного ви1{онання

2. Бказ1вники.

у

1!е 3 11у!ена}|и

'!]!'|'|.!

даних' а 3 |х адресами. Бказ|вники

утвор1о_

<тип даного> "<назва вка3!вника>;

1. Розгляньте вправу 1 $ 4. |{ерероб!ть програ1иу для о6нислення .]|{ачення функц!! ва1шого вар|анта з розд!лу ''3адан!'', використову1очи

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

3. 6твор!ть текстовий файл, який пл|стить 3начення 1шести коорди_

[!1оакна етвортовати вка3!вники на стал|' зм!нн|, функц||, вказ|в:,1ик|1 тощо. @собл.иво ефективно:о е робота 3 вка3|в-

!;г:п:|

на рядки та масиви. [х :ии вивчатиме1до у $$ 12, 13. !априклад,

.!!|!(!|т\{и !

!п|

-попег; -рпА' -рп8;

{!оа1 "г!$1,

'|'ут оголоште11о вказ|вник на ц|лий тип по|пе!'| вказ|вники 71!йсний тип г!51' рг!А, рг|8. Ёадати 3начення вка3!вникам м())!с!!а так: *:;:

!!ат вер1пин трикут11ика. 8иконайте програму {рикщник2, зтитавтпи вх!д_ :г1 дан| з! створеного с}айлу.

$ 6.

<на3ва вказ!вника> = <адреса зм!нно[>; |!

АдРвси дАних. вкА3|вники. динАм1чнА пАм'ять

1. Адреси даних. ,{ля розв'язування специф!чних для мозадач (робота 3 масивами, побудова граф!чних зобра}кень | динатш!тних ефект!в) потр|бно 3нати не т!льки 3наче1{}{я деяко! зм|ннот' але й:{ адресу в оперативЁй папт'ят|. !,ля ви3начення адреси даного у па1и'ят1 е опероц!я вш'ш&чен,{я а0ресш &<назва даного>

соц|

соц1

<< <<

= " << а << 3м!нно] а о '' << &а;

"3начення зм!ннот а

''фресою

'ъ";

результат! виконат{ня цих команд на екран! одер'киш{о: 3наченнязм!нно|а=25 зм!ннот а в 0ха02254

фресою

10;

{!оа| ь1ц61, э1ш02, з1ц63;

'['од1 тшо*кна оголосити попег

вка3|вники

по|пег

|

г|э|

на ц| зпл|нн|:

= &п;

г!э| = &з1ш61; [!51 =

&5{ш03'

[!51 =

&5{ш01'

()'гримати вш:|стиме ком!рки' на яку вка3уе вказ|вник' м{!?!(!!а 3а допомогок) ко11струкц|| *<вка3!вник>, наприклад *г|51 е {!!{![!{'!1||я1и зтш!нно| э1ц03. Бказ|вники застосову1оть таконс для !||!,/({! !!|]я 3начень 3м|нни1и:

[|ршкло0 1. Розглянемо фрагтшент програми !п| а = 25;

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

ви €**

(!

п|д

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

! {!!е2

Бправи

1|

|

пдоэкуть бути р!зними.

'|''|'!,'['ак: {|!е1

}

програми

-г!51

=

1.65'

//

| ком!рку пам\гп! 0ля зм'нно/ 3!ца1 6у0е занесено ч!1сло 1.65

']'ут вказ|вник г!51 вка3уватиме на адресу зул1нтто| $!цо1, а зтц!нн!й з1ш01 буде присво€но значення 1.65. |!рсскла0 3' 06числити дов}кини (в 6айтах) вказ1вник1в на ;п!;;:п! типи даних 1цо)*{на так: !!

|!1!(:|!о

!п1

-рг1_!;

ёош6|е -р(_0;

соц| << ''\пЁа ц|лий тип '' << э!:ео{(рг|_!); соц| << "\пЁа д!йсний тип " << э!аео{(рп_6); соц! << "\пЁа символьний тип '' << в!аео{(рЁ_о);

21


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

1|дресу' оголо1цук)ть так:

,(ля вказ!вник!в залехсно в|д операц|йно! сиотеш1и та верс!| ко:цш|дятора резервуеться 2 а6о 4 6айтут в оперативн|й пам'ят|. Ёад вказ!в1тика:ути визначен! ариф:шетитн| операц!! та опе_ рац|| пор|вняння' описан! в табл. 6. | аб лшця

6

. 0 перац1!, вц3нацен! на0 в каз!внц комц

||риклади | поясшення |[ор!вн:ое 3начення двох вкав!вник!в (адреси' на як! вони вказутоть). }1априклад, якщо вказ|вники вказу1оть на одне ! те этс саме дане' то ре3ульт&то1\[ пор!вняння у&1 ==у[2 буде !стина, !накпте _ хта6н|сть

+-

!!

!! |

соп5| !п| -г!к;

0певаш|я

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

у[1- у&2. Бикористовуеться для виз:|ачення к!лъкост! елемент!в. як| наявй м1яс лво:ша вказ1вникалли м[1 + [, у[1 _ [. 3находить вказ!вник, який зм!пде_

ний в!дносно даного на Ё одиниць

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

пеш так:

м!!!{дв

<тип вказ!вника> *<назва> = пеш <тип зм!нно|>;

[1я коман0ш пеш.,[ля в!дпов|дного типу

зм!1{но1 автомат{а1у!'ят|' ко11еперервна необх|дна д!лянка на'{аеться '|']!|]}!о вка3уе на а вкаа!вник о6сяг м!!|{да пеш повертае ц!е! д!лявки' компа}}д'ят! 3аре3ервувати у |! |[очаток. Ёаприклад, щоб типу' значення ц|лого :п'г<ггера область для збер!гання 1соманду:

{!!!(]'госову1оть таку

!п|'рг1 = пош !п|;.

Ёадати д!лявку па1ш'ят! й в!дразу 3анести у не! 3н&чення м{})|сна так: !п| "рг!2 = пеш |1оа1(3.14);.

2.

1/ {3

,:с,::!

адресу,

1{а

яку показуе рЁ2, 6уде 8&несено иисло 3,14'

динатш!нно1о з}[!нно|о мо}кна вико}|увати операц!|' ви3на-

для даних в!дпов|дного 6азового типу.

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

}|.!

:|робити'

то

пам'ять

мохсва

вичерпати.

Бив|.дьняк)ть

па-

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

1!\об вказ|вник 1{е вка3ував }{& ,кодну д!лянку п&м'ят|, {1сггт: необх!дно занулити тако}о командо|о: <назва вка3!вника> =

]ч![]!_|_;

!!.!

||начення:ш (адресо:о) такого вка3!вника буде 1тульов& адре_ ()х00000000. 1ут не 1шо)1се буте розтш!тцет{е зн&чення х{одно_

!1)

/('[[{ого.

29 2114


1рсокло0 6. Розгляне1ио' як в|дбуваеться розпод|л пам'ят!. для двох зм|нних ц!лого типу та присво|мо |ти 3начен1{я. |{|зн|тпе вив|льнитцо пам,ять. деяк| }{адапло па1и'ять

#!пс|ц0е <!о$|геап.п> мо!0 па!п()

|

!

|!()лову !нформац|то.

1снуо дек|лька б|бл1отечних функц|й, як| да1оть 31шогу зчи|нформац|то з файлу або спрямовувати пот|к виведення у

':':п':'и

с|::п!{л.

{

|п| -о'| = пеш !п|;

// [огпуемо пам'я!пь 0ля ц!лоео чцсла !/ 3м!нна *с1 на6увае 3начення 5 = 5; -с2 *с2 !п[ = пеш !п|(7) ; // 8аё!ляопься пам'ягпь ёпя с2 / набувае значення 7 соц| << *с1 << "\{" << *с2 << "\п"; /| Бцвоёцмо 5 гпа 7 // |1ереа0ресац!я - с1 вка3ува[пцмемо на [пу саму с1 = с2' // 0!лянку пам'ягп!, що ! с2 *с1 соц1 << << "\1" << "с2 << ''\п''; // 8цвоёцмо 7 па 7 6е!е1е(с2); /| [1ам'япь, наёану ёля с2, вцв!льнясмо соц| << *о1 << ''\п''; // 8цвоёцмо 7

"с1

: :

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

*:11;'":т;;,;:#":'ан

!ов10ка 1.

)[' стаядарт! А-}.{$1 тиови 6 у модулях в161|Б.}: та а1]ос.}: визначен| функц!! гпа!!ос ! са|!ос для т{адання дина:ш!нно1 пам'ят!, а тако}*с функц!я для вив!льнет:т:я пам'ят|. .{етальн|тпе про прочитати у дов!дниках. ц! функц!| мо}кна 'гёе

!ов!0юа 2. 3а:ш!сть значення

.(ля опрац1овання файлу його необх|дно в|дкру|ту!' викопотр|бн| д|| та закрити.

ника> = 0.

1. !{ехай зроблен| оголо!пення !п! ш = 4, -рЁ;.

з::ттис|в неправильн|? |1оясн|ть тотиу. а) рг| = &ц; в) рг1 = -ц;

ФАйли

руху

усп1тп-

наявн|сть товар|в у магазинах' адреси' ан-

сукупн!сть даних, як| розм!щен! на зовн|:пньо;тту :пт:с:!|, ]}0|{1)с1иа' н0 диску. {ан| у файл! на3ива'хорсткому )'|'|,('1| {'.'!('м()|!'!'1|мгт. $1льк1сть даних п|д тас опрац1овання фай_ 11

!!! !!(' ;|]|:!!!1!'!1!!()'['|,. с)айли

;!()

способи):

/{!я колоан0. |{|дклтонаомо пот|к введення даних |з файлу та !!'!.,|1!год}куетцо зв'я3ок с|г::[|.::ом

м|:к

файловото

зм!нно}о

у програлт|

та

на зовн|штньому нос|[. }{азву зовн|штнього файлу треба

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

мохсуть

м|стити

дв| форми запису тотоэкн|, ! мохсна обирати одну 3 них. ![ршкла0 1. Б|дкрити зовн!гшн|й файл 1!1у1ех{.{х\ для ни-

:г,':п1

<|уса(л';о ]{е

,!

два

11:;с":'!|!} до файлу

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

(розглянемо

!{э1геап <на3ва файлово[ зм!нно1>; <назва файлово} зм!нно|>.ореп(<зовн!шня назва>);

-(&ш)

пати'ять.

$ 7.

пс<":':;! 71::::|

так

!{з!геап <на3ва файлово1 зм!нно|>(<зовн1шня на3ва>, ознака'1 |ознака2 | ... | ознака[х!);

8к| з наведених ни)кче

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

::!т:':':, <;з.у71слпт|в,

читання

'/(./!,,т

1!!)() так:

Бправи

динам|тну

1. 3нитування даних 1з файлу. ]]1об знитати вх!дн! дан! з необх|дно оголосити файлову зм|нну та в|дкрити файл

<|л;п[.1лу,

:иоясна запу[еа1у!. <на3ва вка3!в-

[х,![]!-!-

мон!тора' модуль 1ов{геагп'}: п!д-

:п::'п'и

)

(]ув{]в1пи для з:м|нних

Функц||, як| розглядатимемо' описан| в б|бл1отец| [ому для роботи з файлами насамперед необх|дно

|':;{,геатп.}:.

як

текстову,

так

!

!!!!!!!'{

3 нього

да}1их

ш!о}кна

так:

!!51геап [т4уЁ!!е("1йу[ех{.{х1"); ,!!)1)'|'1!|{:

!{51геап

|т:|уЁ|!е; 1т:1уЁ!!е.ореп(''1т4у[ех1.1х1"),

_ це файлова зм!нна, що асоц!}о€ться у глрогрпги! ' :::,:ц:пов1дним зовн|тпн|м файлом на диску. Бведення /.{а}1их }|!!!|()!!у|оть кома}тдо}о введення >>. Ёаприклад' ко1цанда '|'ут

1т4уР!|е

муг1!е

>> 1ех{;

31


{}читас одне да1{е 3 початку файлу 1!1у?ех1.Ёх{ до пертшого пропуску чи до си1'дволу ,,к|нець рядка'' у з:ш!нну {ех{. 8кщо треба

с[аг

г!!е1

соц|

3читати }1аступне дане (яке розм|щене м1э+с пер:шим ! другим пропуска1ии), нео6х!дно шовторити попередн1о команду! то6то 3&писати комавди йуР!1е >> |ех1; |т4уЁ||е >> 1ех{1 ; а6о використати кома}тду йуЁ!!е

>> [ех1 >> {ех11;'

Фт;ке, 8читати дан! з файлу мо)*сн& 3а допо1!того1о ко1шанди: <на3ва файлово| зм!нно|> >> <зм!нна 1> >> <3м!нна 2> >>

..'

>>

<зм!нна

!ч!>

|[!сля опрац!ованвя файлу його потр!6но закрити. лять так: <

<на3ва файлово| зм!нно|>.ео()

якщ0 досяг}1уто

||ршкла0 2. !1еха.й у деяко;шу текстовому реда.ктор| створено файли Ёех||1'4а1 ! *ех{2.ёаЁ. |[осл!довно 3чит&е1у!о 3 них дан! та виведемо !х у:ш!ст на екрав.

<{в1геап.|'т>

//

то!0 па!п()

8цвеёення |нформац[с'!з файл}в

{

]!э1геап г[!е1 ('1ек1 .6а1'); !! 1окц не 0осяенупо к!нс1я файлу ш}т![е

Р!!о1.с!оэе(); )

,{етальн|тше про ко]!1анду ш[':!!е див. у $ 9. Фск!льки у програм| вид!ляеться патт['япь в!дразу для 30 символ|в, то використову_ (:мо кома}тду ёе|е|е[] (див. $ 12).

(!Ё!!е1.ео{(})

ьх[1.аа!

!/ 3нак ! о3начас операц!ю

Ёа0асмо м!сце в пам'ягп! ёля зчцпуваноео 0аноео с}:аг '! = пеш с!аг[30]; // 0о 30 оцмвол!в Ё!!е1 >> 1; /! 3ногпуомо ёане з

не

|/

<< 1 << "\п";

ёе!е{е[]

|/ /!

1;

1овергпавмось на поча[пок коман0ц

файлу

8цво0цмо це 0ане на екран 8цв|льнясмо пам'япь

<на3ва файлово| зм!нно!>.ореп(<зовн!шня назва>);

[!я

|/ колс;

Б!!о1 .ореп("1ох12.0а1-); ъшь[!о (!Ё!!о1.ео{())

//

{

:\'.4

юо:пан0. |{|дклточа€мо

пот!к виведення у файл | нала-

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

.{х{'');

так:

:пбо

г

1}9:гешп Р!!еРог2ар; Р!!еРог2ар.ореп("|т:1у}ех{1

.{х!'');

|!1об занести дан| у файл, використову1оть ко1у!анду виве/1оння даних <<. 1[априклад' п|сля виконання команд 10;

Р!!еЁог2ар

<< п;

файл 1!1у?ех11.!!х! буде 3анесено число 10. 3анести дек!лька /ц|!{их у файл мо'*(на так само' як | вивести !х на екра}т: вико|)!{стову1очи стандартн! правила ко1ша}тди << та керутон! посл!м

71с>вноот!.

Фт*ке, записати дан| у файл моясна так: <назва файлово! зм!нно:> << <зм!нна 1> << <зм|нна 2> << ... << <зм!нна \!>

уп|т!|е

ёосяануспо к!н.|я файлу' закрмвасмо йоео 8|0кровасмо файл !ех12.6а[ ёля чцгпання !/ 1окц не 6осяенугпо к|нс;я файлу

Ё!!о1.с!озе();

файл. Б|дкрити файл для 3апи-

о|э!геап <назва файлово1 зм!нно'Р;

)

/|

у

так:

::бо

!п! п =

{

ооц|

3*тведеппя даних

()ування у нього даних 1шох(на так:

о|э!геагп <назва файлово| зм!нно[>(<зовн!шня назва>, ознака'| |ознака2 | ... |ознака]ч!)

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

#[пс!ц6е

1;

)

назва файлово| зм!нно!>'с!ове()

1-{я функц|я повертае г1ульове 3}1ачення' тс|ттця файлу.

= петш с}:ш[30];

>> {; << | << "\п";

6е!е1е[]

2.

роб-

*{

3. Фзпакп. Фзнаки слугу1оть для зм|ни правил доступу до Розглянемо деяк| з них:

;|л:пйлу. :! (;++

33


0:;нака |о5::!п

соц| << ''9вед!ть пр!эвище та ре3ультат першого спортсмена\п"; с!п >> папе >> ба!; !/ 3апооуомо ёан! у файл г.|е1 << папе << "\|" << ба1 << ''\п"; соц! << "!вед!ть пр!звище та результат другого опортсмена\п"; с!п >> папе >> ба!; /! 3апшсуемо 0ан! у файл Ё!!е1 << папе << "\1" << ба! << "\п''; сош| << "!вед!ть пр!звище та ре3ультат третього спортсмена\п'; с!п >> папе >> ба!;

[|ривнаяення

[д*р""." тт|{.

Бм!ст

файл для читан!{я з нього !нформа_

с]эайлу

збер!гаеться

1оэ::оц1

.о$::арр 1оэ::{гцп}<

Ё1д*р*"," файл для дописуван1{я 1нформац:':' .[[ан| будуть записан! 1ц!нець файлу 8кщо файл, який в!дкрива1оть для записування вэ*се

!оэ::посгеа!е 1оэ::погер!асе

Ё!!е1 << па!пе << Р!!е1.с!оэе();

|сттуе, то його вм!ет буде вилучено

соц|

соц| << соц| << соц| << соц| <<

о{з|геатп Ё!а95("1ек1.6а1", !ов::арр, !оэ::погер!асе);

до к!нця вхсе |сну1оного файлу

1ех*1'ёа1 так: Р|а9э пот|к оголосити потр|бну !нформац|:о. ,[[ктщо ,*с

нового точутй файл. |{роте якщо ц1о о311аку застосувати до за|1исати файлу, якого ще 1{емае на диску' наприклад' о{э1геап Ё!а9э(''|ех|3'6а|", !оз::погер|аое);

то буде створено файл {ех{3.ёа!!, в який мо'кна буде заносити дан!. ,{,кпдо пот!к оголосити так: о!э1геап Ё!а9э("|ех|4.6а{', !оз::посгеа!е);

то мо'клив! два вар!анти. як1цо файл {ех04'ёа{ в'{се !сну€' то в!н моэке бути в!дкр'1тт|й для записування да}{их' [кщо )т{ ра_ випадку у н!|ше такого файлу па диску не будо' то в кращо1!1у _ 8авис11е' програ1ша файл н!чого 1{е запи1шеться' а в г!ртпому ва_ веобх|дно 3о0очо -1 (про 3магаппя спортсмеп!в)' Ёехай нести у файл 11р!звища та ре3ультати трьох перемо'1сц|в вштагань !3 ф!гурного катання. Бивести в:ш!ст файлу па екра1{ для

3ншпусмо 0ан! з файла

!. йодиф|куйте програму 6порт так, що6 3аписати у файл пр!звище, ь{!{'!(.' 'г{!

результат спортсмена. 3читайте !нформац|то з файлу та вивед!ть

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

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

ум|ст файл!в 6гцэ|.{х{ ! 6гца|1.1хЁЁ на екран. 9 текстовому редактор! створ!ть файл, у який занес!ть координа_ .}! !!!![)|!!ин трикутника. Розв'яэк!ть задачу }ч[э 2 валпого вар!анта, вико].||11'|'()||у|очи утворепий файл. Результ8ти вивед!ть ва екран ! у файл. шсо7ц!':'п,

]!.

$ 8.

Ро3гАлу}|свння

!. €кладепа ко1шапда. ||!д час напиоання програп|и мохсе потре6а трактувати дек!лька ко:!1анд як одну. така

,|.|]|]{]{![ути

н&3иваеться складе}1о1о. (пло0етоо ;: со::с:':'1;укц!я такого вигляду:

'1.|м.!!!,,(а

'со1'1с'нао

_ це

(

<команда 1>; <команда ш>;

#|пс!ц0е <{з{геап.|> мо!0 па!п()

)

{

с|гаг папе[15];

//

<< "\п"; '',{руге м!сце \1-; Ё!|е2 >> папе >> ба!; папо << "\{" << !а! << ''\п"; ''[рето м!сце \|"; Ё!!е2 >> папе >> ба!; папе << \|'<< ьа| << "\п'';

8прави

1роарама ёпоргп

// 8]0крцомо файл 6ля 3алцсування о! 91геа]п Р|!е1 ("эроп.{х|");

3акроваемо файл

)

в|зуального ко1{трол1о. //

//

"8иведемо вм!ст файлу\гт";

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

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

ба! << "\п";

!'5|геап Р!!е2("эро('1х{"); соц! << .[1ерше м!сце \1"; Ё!!е2 >> папо >> ба!; сош| << папе << "\|" << ба!

3а6оооняе створ!овати файд, який в:'дкриватоть 3абороняо перезапис&ти !сду-!95дЁ-файд

|!ршкла0 4. |[\еля оголо1шення м0хст1а дописати

<<

"\1" <<

;,

.!

||(!|х}д закрива1очо|о дуэ1ско1о ,(у)!(!си си11двол '';" 3апис),.вати

";'' отавити обов'яаково. |[!сне обов'язково.

!|оа| ба!; 1\4

35


командото' 'бк3оувоэ!сення ]' 3апис ;; на3иваетьс$' поРолсньо'о '';'' п|сля 3акриоимвол поставити ш{о у складен!й команд1 як поро)кню це розглядатиме комп!лятор то ваточо1 ду**", програ1!1и' п{о не впливае на результат виконат1ня

у та6л.7

!аблшця 7. }1оа1чн] операц1!

Бираз

команду'

поро)кн1о' просту }1адал| п!д командою будеш{о ровум!ти а6о складену кош[анду' то_ 2. }(ома як ко1у[апда. $ому як команду використову1оть ковираз|в а6о д!, коли необх|дно !птерпретувати дек|лька мат{д як одне ц|ле. Бона мае вигляд

!!'

*'*"нда 1' команда

2

3)

!!

-!, _

а6о.

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

3л!ва направо.'[ля !}!||(()!!у|о'|'|>ся г!осл!довно операц|й' як | для 3вичайних ![]|!(()!|!!!!!!'! лог|чних !![|

х, |!!!!(()|)истову1оть кругл!

8ираз

3начення

{а!зе

! {а!эе

1гше

&& {гце

|г{!е

{гце

{гце && {а!зе

{а!зе

|гше !! {а|эе

{а!ае && 1гце

!а!зе

{а|эе

{а!эе && {а!эе

1а!зе

{а!эе

1гше

1гце

!! {гце

|гше

!! 1гце

1гце

{а!эе

[а!эе

|!

.]]ог!чним вира3ом мо)ке бути ц!ле число. $[кщо воно не _ {гце' якщо це ,:1т>1;|внтое нул1о' то 3начення лог|чного вира3у _ {а!эе. '!!!()ло 0 [|ршкла0 -1. Розглянеш!о деяк! лог|чн! вира3и та !хн! 3на'!(}!|ця. }1ехай &: 7, 0 : 7, тод\: Бираз

1а!эе

!(а == ь

[гше

а+6==б 2

{гце 1гце {гце 1гце

=1

ь

1гце

[а|зе

ь<9!! ь>15

{а!эе

а!=б

3начення

а>=0&&б<=4

[гше

а>=б

;|<

Биоаз а>_3&&а<=2

3начення

а==б

}<

2)&&

3наченпя

! 1гше

!

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

наведен! означення лог|чних операц!й.

1гше

!(а<1!! 5>=10)

а!=б!! а+15>ь&&ь<0 (а!=Б!] а+15<ь)&&ь<0 0 !ь

1гше

1гце

{а!эе {а!эе {а!зе

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

в'.!'|']!!!1{о" Фднак |нколи на практиц|' наприклад, п!А час ! !!!{)|)()|(ня граф!нних зобраэкень чи в 3адачах арх!вування .!!!!1||х' виникае потреба пор!вн1овати не значен!{я двох даних'

|! !)(!!! б|ти.

1;:п:п;'

,;':)бл.

'(ля

цього

у тиов| €**

8): & (|), |(дьо),

^

е по6|тов|

лог!чн|

операщ||

(виклтонне АБо), - (нв). !аблшця 8. [1об1птов1 лоа1чн1

операт1!1'

ш]

в2

в1&в2

в1!в2

в1^в2

-в1

о

0

0

0

1

1|

1

1

1

1

!

0

0 о 0

1

1

!

1

1

1

0

о о

ду}*{ки'

3т :!(!


|1ршю;ал0 2. \|ехай Б1 = 001 1 001 1, б2 = 1 11 1 01 о1'

[од

_

!| (0) сош| << "Ёе!!о!"; !| (5) сош| <<

'!1' ь1 &ь2=001 10001 ,ь1 !ь2=1'!'1 101 100. 110о1 10, ь1 11000'| ь1 ь2 = =

|' (!5) соц! << "Ёе!!о!''; |' (!0) соц| << "Ёе!!о!"; !! (!о9(1)) сош| << "Ёе!!о!'';

^

Ёоэкний байт моэкна 3образит1{ у вигдяд! шосл|дов}1ост| 3 вось1ши нул!в та оди1{иць. для того' щоб 3сувути б!ти посл|викодовност! вправо чи вд!во на деяку ф!ксовану к!льк|'сть, 8суву <<' ча'с >> |{!д та ристову1оть спец|альн| операц![ всуву ь |{ехай !'. ,''р'',н| м|сця дописутоть нул|' Ёаприклад' 0о100101, с : 10110010, тод! п!д нас виконання коу[анд

:

б=Б<<2; с=с>> 1;

'Ёе!!о!';

':':.п

виведе'|ня на екран не буде

_ буде виведеве сдово _ виведення не 6уде _ буде виведепе слово

- виведення н

Ёе]1о| Ёе]1о!

е буде

3о0очо / (про обчиелеппя складепо[ функц1!). Фбчисли! вивести на екран зт{аче}тня складено! функц|| у у деяк!й

|!!!/{ан!й користувачем

точц| ,'

якщо

[св|т|'

х

<

о,

у={'3,о<'.ь. [:овьх,х>ь.

_ на6уде значен11я 10010100, 8 с 01011001' 3оуваэсення 2. |||д ч8с всуву цифр ц|лого числ& на п позиц|й вл1во в!дбува€ться мно'!сення цього числа вь 2п, а 1{& п позиц!й

31ш!нн& 6

-

д!лення на 2п. 3оувоэюення3. !!од!бно до комат!д присвоення з арифметинними операц!ями мохсна використовувати ко\да1{ди присвоен1{я з лог!чними поб!товими операц!ями: &:, |:, ^: та команди вправо

присвоення в поб!товим зсувом: 1';':,

((*'

5. 1(омапда розга'1уэ[сеппя !' (якццо)' }[омавда ровгалухсенпя !! мао дв! форми: повну та коротку' |1овна така:

//

0бчцслення вцра3у

#|пс]ц6о <!оэ{геап.п> #]пс!ц6е <па{ь.ь> #!пс!ц6е <ооп!о.б> мо|6 па[п() {

с!гэс(); !]оа! х' у; сош| << "!уе6!| х \п"; с!п

>> х;

|! (х < 0) у = {ап({аБэ(х));

е]зе

5) у - рош(х' е!эеу=!оо(х)/!оо(5); соц|<<'\пу="<<у; 1|

(0 <= х && х <

3);

9е!оь(); )

колсон0ш. Ф6числ1оеться 3начення лог!чного вира3у' ,8,кщо це 3Ёачення !стинне' то викопуеться ко1у1авда 1, у протиле}1{ному випадку _ кома11да 2. (оманда 1 та команда 2 лшохсуть бути пороясн!ми, простими або складе1{и}ди' [1ршкла0 3. Ёехай х : 9- 9насл!док виковання ко1шанд

!!.я

!! (х > 7) у = рош(х, 2); е|5е у = 5чп(х); !| (х <= 5) а = ехр(х); е|5о а = ++х;

отриту!аемо

у

:

8|, э

:

|1, *

:

{

ц ттабуде значення 15. рат;сла0 4. |1роанал!зуемо ком&11ди

:зм|::г:д: ||

;!н

= а++;

7=а+5; )

!! (а <= $) а= ++а /

1!

удор!вн:оватиме0 (оск!лькп

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

у

Розгляне:шо команди

()тто.татку

!! (<лог!зний вираз>) <команда 1>;

||(а>7)

10.

(х) у = 1- 19' !! (у) у += 2; о|зе у = '!5;

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

х * о', а

пот!м

2;

у = 7 + а:

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

39


6. }{о:иапда ?. $отшанда ? е аналого1ш команди розгаду}кення ]1. 3агальнпй вутгляд ко1иандут ? такийз <лог!чний вираз> ? <команда або вираз

1

> : <команда

а6о вираз 2>

[!я юо:пан0ш. Ф6числ1оеться 3начення лог!чного вира3у. 8кщо воно |стинне' то виконуеться команда 1 або обчисд:о-

еться вира3 1, !нактше - команда або вираз 2. 3о0очо 2 (про два числа). Бвести два ц!л| числа. 3найти б!льтше 3 них. 8цзначення б!льсцоео чцсла #!пс|цёе <!оэ1геап.[т> #!пс|цёе <соп!о.!т>

//

шо|ё па!п() {

о!гэсг(); !п{ х,у;

соц|<<"ууес!1 х,у\п"; с!п>>>>у;

соц[ <<

"[тл1ах

=';

х>у?соц1<<х:соц|<<у; 9е|с[т();

манд 1

_

}.[ ухоэке

бути одна ко1цанда' дек!лька або не бути

экодно! команди. $оманда бгеа& не е обов'язково:о ! 3аписуеть-

ся у раз! потре6и. Бона слугуе для виходу 3 команди зш]!сБ. €кладова частина 0е{ац]1: <команда [|+'! > такоэк моэке бути в|дсутня _ тод| матимемо коротку форшлу команди ви6ору зш||с[:.

[!я кольан0ш. $кщо значення виразу зб!гаеться 3! 3начен1{ям о3н&ку| п' то викону€ться ко]шанда 3 номероу\ п | ро3гля_

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

)

Ёоманда ? у раз1 потреби трактуеться ко:у|п!лятором як вираз' тому || зручно використовувати у директивах препроцесора' наприклад #6е|]пе абэ(х)

>

отри1иае1шо

:

10. 1од! п|сля викона}1ня команди

* : 8, оск!льки с не

л1оеться 3начення виразу 2. 7. }{оптапда вибору

дор!вт{}оо

(этш!|сБ). $оштанда

3' |

тошлу

тут обтис-

'1> :

<команда 1>; Бгеа]<;

]""".'.""*"

}.,|> :

<команда \> 0геа|<; },!+'! >;

)

Бираз та ознаки мак)тъ бути ц|лотисельн1. Фск!льки тр€1нс€*+ мо}ке розглядати 3начення зм|нних тигцл с|таг ! опцп| я|{ ц1л! дан|, то на м!сц| вира3у та о3нак мо'куть бути стал| :1!':п<;пю, си1цвольного або перерахов}того тип!в. }{а м|сц| ко,|о

12б,

|

= т' =

2,3, 4,

[зь,*=т,в. )тс|льки ко1штуватимуть й} квитк!в ![омер А якого вводять з клав!атури?

до н&селеного пункту'

#!пс!цае <1оэ!геап.[> #!пс!цёе <ооп!о.Б> мо!6 па!п() {

с!гзсг(); !п| к, п; ||оа| с!па;

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

са5е <ознака

ёе|ац!| ' <команда

./!'|'|'ор тиови

|

"'''=1'.,А=5,6,

соц1 << "9вед!ть номер с|п >> [ >> п; эш!|с[ ([)

эш]!сБ (<вираз>); {

[аэ' ь

(

0 ? (х); _(х);

[!ршюла0 6. Бехай с х= (9== з)?2" с..с-2:

.

'

&

населеного пункгу ! к|льк!сть квитк!в п

'';

{

са5е 1 : о!па= 22;бсеа\; са5е 2:

саэе

3:

са5е 4: с!па

=

25; бгеа[;

саэе 5: саэе 6: с!па - з0; ьгеак; саэе 7: саэе 8: с!па = з5; ьгеак;

\

6е|ац!| : соц[ << ''.{ан! введено неправильно \п"; с!па

= 0;

)

41


соц| << п << " квитк!в до пункту '' * соц| << с!па гп << " грн";

<< к << "

кошлують

3ауваэмення 4. Бикористовув&ти команду 9о{о в&рто ди1ше у ви_ няткових випадках' оск!дьки вона з:ш!нтое природну посл|довн|сть виконавня комапд | робить проц)аму в8хско3ро3ум{лото.

'';

9е|сп(); )

8кщо йд нас викона1{ня

на екран!

проц)а:у[и дан! ввест|д

так: 3 5, то

1шати1шемо:

9. ||ерераховапий тип утвор|о1оть |а перерахування |1шено!]аних ста.'тих ц!лого типу так: епцп

5 квитк!в до пун:су 3 коцлцють 125 грн.

команда зш:!переходу [пляхом ко1у[анд |н:пих виконання нтое посл!довн!сть пе(м!тку)' $отшанда т1о8начку мае [4Ф до вико1{ання ко1\да}1д[, реходу ма€ вигляд 8. [{о:шапда 6езу:шовшого переходу 9о1о.

дтбо

у

програ1ш1.

(:), а

1шо}|се

ро31ш!1цуватись перед дов|льттото ко1ша1{до1о

3она в!докремл1оеться в!д ко}1&нди двокрапко!о

сатше:

!

<позначка>:

<команда>;

!

|[означкото мо}{се бути литпе !дентиф!катор, тобто наб|р символу допуети1ших сипдвол!в, який почипаеться з 6укви а6о п!дкреслевня (_). бо0оча,4 (про квадратпе р!впяпвя)' Бвести дек!лька : на6ор!в коеф!ц!онт|в квадраткого р!вня:н11$ ах2 * 0х * с 0 ! вивести пов!домленпя: 1шатиме р!внятлття д!йсн! коретт! чи тт|? !!

1роерама Ёва0рагпне р1вняння

#!пс|ц6о <соп!о.['т> #!пс]ц0о <па|[:.[>

{!пБ}:; о = рош1п5, а1 - 4 ' а ' с;

)

42

:

9е|с[();

}.!>}:

опц:п шее& = {поп, !це, шо0, ![:о, {г!' эа!' эшп}; опц]п со!ог$ = {ге6 = 1, 9гееп, уе!!ош = 6' ш}п!{е};

!/ списку шеек ста.'т& поп дор1вн1оватиме 0, |ше: 1, ..., $шп: еписку со!огэ стала ге6 дор!вк:о€ 1, 9гееп в!дпов!дно 2, уе|!ош [|, а стала ш!'т!|е _ 7 (на одинищто б!ль:пе в|д уе!!ош). 3о0очо 5 (про розклад ша депь). €класти програму' яка б ш!{водида 1|а екра11 ро3клад роботи :та тихсдень.

(}. ]{'

||

1роерама Розклаё на 0ень

па!п()

епцп 5уе{ {поп,

!!

1кщо а=0, гпо перейпш 0о позначкц

|це, ше6' |[те, |г!, ва{, эшп}; !п| оау;

соц| << "Ро3клад 3анять на ти>о<день\п\п"; !ог (6ау = поп; 0ау <= 5{!п; оау++) этш!1с[ (0ау)

[|п1з!т

{

са5е са$е саве са5е са5о са$9 са9е

\п',;

,[ан! введено неправильно !! вцво0сомо в!ёпов|ан! ёоц1 << << "Р!вняння д!йсних розв'язЁв не мао"; !! пов!0омлення соц| !! 1ерейгпш ёо позначкц уу|6 9о!о уу!6;

{|п!з[

{<стала 1>' ..., <стала

гсольори):

е|5е

)

=

присво_ значепня 0' стал|й 2 значення 1 и т. д. [еяк! стал]. у списку 1ио}1{на !н!ц!ал|зувати. Ёе!н!ц!ал!зо!!{}ним ста.']иу[ авто1\(атичво 6уде присвосшо 8начення на оди!|иц1о б|льтпе в|д знанення попередньо[ отадо[ з| спиеку. [1ршкла0 7. Фпитпемо два перерахован! типи (дн! тиэкня та

!! !накц:о обчцслцгпц 0оскршм|нангп ]| (а>= 0) сош| << "!-|е р1вняння мае корен|"; !! 9кщо ёшскршм1нангп в!0'смнцб, по {

]т] >};

с!гэсг();

с!гзс(); {|оа| а' б, с' 0; уу|0 : соц| << "\п!вед|ть коеф!ц!снти р!вняння \п'; 0) 9о|о

<значення

{

{

|| (а ==

=

3 останньому випадку стал!й 1 автомвтитно 6уде

шо16

уо!0 па!п()

}ч!>

так:

#!пс]цёе <!ов!геап.[> #!пс]ц6е <ооп!о.[>

*]пс!ц0о <!оэ|гоап.б>

с|п>>а>>ь>>с;

<отала

епц]п <назва типу> ()но

|1оавачка

<на3ва типу> = {<стала 1> = <значення 1>, ...,

поп : соц|

:

|це соц| ше6 : соц! |п€ соц| |г| сош|

:

: :

$а|

5шп

:

<< ''[1онед|лок\| 3усгр!ч акц!онер!в. \г:"; << "8!второк\{ 8!дрядження\п'; Бгеа[;

Бгеа&;

"€ереда\{ Б!дрядженняБ'; 6геа]<; "9етвер\1 8!дрядження\г':'; Бгеа&; << "[1'ятниця\{ 3дати зв!т. 3айти в 6анк\г:"; 0геа&; соц| << ''€убота\| |демо на ри6алфп'; бгеа|; соц| << "}!едйя\[ 8!дв!дати батьк!в. 8венер! фемо у театр\г:"; << <<

)

9е|сп(); )

43


Бправп

1.

{и |стинний екладений лог!чний вираз

' 6) х: 2;

а) *:0 (в|дпов!дь: н!); в) л: 10; г) х: 5; д)х:|5? 2. $1кого вначення (1гше ии 1а!эе) набуде вира3 а) .т : 0 (в|дпов|дь: {гше); 6)х:2;

в)

*:

10; г)

*:

5;

д)

т:

<:8 && т } 3,

'

<:2!! х > б, якц]о:

в!др|зку: а) [0; 3) (в1дпов!дь: т

>:0 &&

1. }{о:шапда циклу з л|чильнико]ш {ог. Ёоманда {ог мае вигляд

3);

'

нале_

б) (_5; 5]; в) [10; 20]; д) [{;10] ! {3; 12]. 4. 3апи:п!ть умову того' що число а: а) парне; б) д1литься без остач1 на 3; в) не д!литься 6ез остач! на 3; г) д|литься на 3 ! на 5; д) д!.литься на 3 або на 5. 5. €клад!ть лог!чт*1 вир^3и для перев!рк!\, чи о точка (х; у): а) у друг!й тверт! (в!дпов!дь: * < Ф && у > Ф \; б) ва координатних осях; в) у друг|й або трет!й нверт!; г) у квадрат| з! стороното, що дор|внтое 1, побу_ дова1{ому }|а координатт|их осях у пертп|й иверт|; д) у круз! одиничного рад1уса з центром у початку координат (п!дказка: умова нале}кност! точки кругу така: х2+ у'< \). 6. йодиф!куйте програму Фбнислення вира3у так' щоб вивести ре3ультати у файл. 7. йодиф!куйте програ:шу @бнислення виразу т8к' що6 користував м1г ви6ирати, куди виводити результати: на екран чи у файл.

т) [2;|4) а6о

|20;25];

*<

Бюаз|вюа. Бикористайте' наприкдад' команди

ооц|

<<

''8иведення результат!в:

с|п >> п;

1

-

на екран' 2

$ 9. цикли 1\шкл (повторення) _ це процес виконання певного набору ко1иат{д деяку к|льк!сть раз!в. 9 тиов| б** е три ко1шанди циклу - {ог, ш[:|!е та ёо_ш]'т1]е.

15?

3. 3апитп!ть лог!чний вираз для визначення' чи деяка точка

+тсить

якщо:

- у файл'';

!| (п == 1) <виводимо ре3ультати на екран>; е!5е <виводимо результати у файл>;

8' €клад|ть лог|чний вира3 для потпуку у 6!бл|отец! деяко! кних{ки <.(еол>, р1к видан}{я - 2оо3,

{ог (<вираз '!>; <лог!чний вираз2>: <вира3 3>) <команда 1>;

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

1)

за трьома параметрами: видав[|ицтво _ автор

Ёовосад.

9. 1!1одиф!куйте програму (вадратне р!вняння

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

14. Розв'я;к|ть 3адачу

|с()||{!|!!|я програми

44

на екран.

},,1!

ре3ультати

5 свого вар!анта. 8ивед1ть результати

ви_

!п|п='1'$=0;

2) 3) 4')

так, щоб мохсна 6уло

мо)*{-

{ог (;п <'16; п++) $ += п; {ог (!п:п = 1,5 =0; п < 16; п++) $ += п; !ог (!п!п = 1' $ =0; п < 16; $ += п++); !ог (!п1 п= 1, $ =0; п < 16; $ +=п, п++);

)[' результат|. виконання ко1цанд зм|нн|й 5 6уде присвооно {!||.!!тення 120. 3аува}{сиш!о' що у спосо6| 2) {ог (|п1 п = 1, $ = 0; п <

з]и|нн| 8 | а !н!ц|ал|зовано (оголотшено) 6езпосеу ко:шанд! циклу {ог. 1ршкла0 2. }€!льк|сть ! добуток ус!х парних ц|лих чисел 13 :;1:слм!этску в|д 4 до 11 моэкна обчислити так: !(!;

$

+= п, п++);

|)(!/1|{ьо

!п| п,

'ог

},

|<!!;

(о = 1' [!!

=

0' п =4; п <= 11; п += 2)

{

о -= п;

к!!++;

)


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

циклу | забезпевуе перех!д до наступно! п!сля циклу команди. 1{оманда соп|!пце припиня€ виконання поточно! !терац!! та починао виконувати наступну !терац!то (повторення) цикду. 3азвичай ц! команди нале}|сать до деяко| умовно! команди. Ёаприклад,

якц\о вико!{у6ватиметься

певна умова'

то буде

вих|д з циклу' або, якщо умов8 не виконуватиметься' то 6уде перех!д до наступно! !терац!! тощо.

[!ршкла0 3. 3ианачити' чи чисдо с просте' !ог (!п| п

=

,д|т,о|т,ь|:,о|:,ь Рп!0,т!0'4 !о'3 1о,2

]<!!

2, Р= 1; п <= (!п|)эчЁ((6ошБ!е)а); п

]|(!(р=а%п))6;еа&;

1иож{на та}с:

++)

06числуттут ш{ате1ш&тичне спод!ван11я !у{х

|1обудувати таблиц}о в!дпогра1иа1ши' як1цо 1 унц|я

28,35349б г. |1очаткове 3начен}1я к!лькост! унц!й (шпс!а), крок з1ш!ни (|<го[) цього 8начення та к!льк!сть рядк!в (к!!) у та6лиц1 3адати сатиост!йно у рехситш! д!алогу. !! 1роерама в|0пов!0носп| м|р #!пс!ц0е <!оэ1геагп.}>

|| |/]

#1пс!ц6е <!ов!геап.[> #!пс!ц6е <соп!о.Б> #!пс|цёе <па{[:.[:>

#6е'!пе ш 4 мо!6 па!п() {

о!гэсг();

|!оа1 х, р,

!от (!п1

о|гэсг();

!!оа| цпс!а, 9гап, [го&; !п| [!!' п; соц| << "8вед!ть початкове значення унц!й' \г:' << " крок зм!ни та к!льк!сть рядк!в у та6лиц!\г:";

соц|

>> &го& >> &!!;

<< << "унцг[ <<

|ог (п = 1; п

'<<'\п";

!-рами " <<'\п';

'<<'\п';

<= [!|; п++)

{

*

28.353495 цпо|а; сош| << цпс!а <<'\1' << 9гап << вп6!; цпс!а += &го&;

9гап

соц|

)

<< "

=

соц|

м

]т:!

=

= 1;

0' й2

[

<=

р;

)

соц| << "\п

!

= ]тг12-

0' 9' 5;

=

|х|;

!++)

х " <<к <<'-те та р" << к рош(х' 2)'р;

<< ''8вед!ть *

+= х

]ч:!="

<<

"_те\п"; с|п

>> х >> р;

+=

1т:12

<< ]!!;

рош(й,2); 5 =вчп(9);

соц!.ргёс|51оп(3); соц| << "\п 9=" << 9

<< "\п

/!

для 3аокруелення ёо гпрьох знак1в п|сля комц

5!9па="

<<

5;

9е1о!т();

<<

.;

5!0па

=

=

'|,8; }

=

!! 7абулювання функщ1 #!пс]ц0е <!оэ!геап.}|> *!пе!ц6е <соп!о'[> #1пс]цёе <па!}:.|>

то!6 па!п() {

о!гзс(); |!оа| х, }т = 0.1' у' з'! !|оа| а = 9, ! = 2.5 +

соц|<<"х !ог(х

!! Фншщаемо екран = 0; !'т

1\п';

/2;

!п| п = 0;

= а; х <= б; х += б) {

у

{ отримуе 3качен1{я 3 деякими ймов!рностями

[т4

3а0оча' 3 (про табул[овапвя фувкц!! | пошпук даних)" !|1;отабултовати функц!то !:2э1пх }та про:у1!'*ску [0; 2'5] 3 !(|)()ком 7: Ф,! та обчислити середне арифш1ети1п{е (з1) зна!!()[|ь функц|! б!ль:пих н!э*с 0,5, ! ш[е11]11их н}*с 1,5.

)

3а0ача 2 (про вппадкову велпчину). Ёехай випадкова ве-

одер)1си}1о

0,458.

9е!с}:();

.,|и1!и|{ц

4(|

}<

{

(),21;

{

с!п >> цпо!а

ь'

1/ результат! виконання програ1ши

па!п()

соц! соц!

=|""'р,, ! середне квадратич}]е

)

#|пс]ц6е <ооп!о'}:> шо16

ь

=б '",,дково! величипи х. атпе м агп цчна с!п апцс(пцка

:ш1р).

в!дност! ]и!хс унц|ями та

!у1х2

2*ьрь, диспер-

::1дхиленн$ с

р ? сош| << "просге": соц| << "складне";

3о0очо 1 (про таблпц[о

-(мх\2, де

с:!ю .0 =|у1\2

=

= 2-э|п(х);

соц| << х << \1" << у !| (у > 0.5 && у < 1.5) {

!! Фбнослюсмо

<<

-\г:";

у

!! @6чцслювмо суму па !| к|льк|спь 3начень функщ-[ у'

47


п++; $1

за0овольняюгпь за6ану умову

/| як|

+= у;

) )

!| (п)

// //

{

з1 /=

соц!

п]

<<

)

е!5е

"$ _ "

// //

<< э1;

9кщо п не ёор!внюе 0, гпо

3ш0а,ча,4 (про су:шу цифр патурального числа). ,(ля зада!!ого натурального числа а п|драхув&ти еу1шу його цифр #]пс!ц0е <!оэ1геап.}т> мо!6 па!п()

обчцслюемо па вцво0цмо на екран сере0нс арафмегпшнне сшуканох 3начень функц!|'

{

|п|5=0,п,п;

сош[

// 9кщо шукан1 оан! в1ооупн!,6уое пооано 3вуковцй сценал па

соц{ << ''\а [аких значень нема€'';

//

вцве0ено в|опов]оне пов!0омлення

ш}:|!е

9е1о[();

(п

$+=ц7"19. п /= 10;

3оу ваэюення 2. )['раховутони специф!ку комп'тотерно! арифмети-

ки, щоб не втратити останнього значення (рункц!!, у циклу ш}:!1а до останнього значення {х зм!щення, у цьому виладку

/

:

будов!

(тш[|1е)

мае вигляд

шп!!е (<вира3>) <команда 1>;

колсан0ъс.

1) Фбнисл:оеться 3начення виразу. .{кщо воно |стинне' то переходимо до пункту 2), якщо хи6не _ до пункту 3).

2) Бикону€ться

ко1у|анда

1).

1 ! в|дбуваоться перех!д до пун-

3) Б|д6уваеться перех!д до насцгпно! п!сля

тм|т1!е

котшанди.

Биразо:и мо)*{е 6ути дов|льний лог|чний вираз' стала або 3м!нна ц1лого типу. ,{,кщо треба перев!рити дек|лька у1иов' то застосову}оть команду ''кош[а". $оманда 1 мохсе бути пороэ*с_ Ёо:ианда ш]т]!е моэке бути виконана один раз' дек|лька раз|в а6о не бути виконана }т{одного разу. 1ршк:та0 4' \\ехай | : 4, в : 0, 4: 1. |!!сля виконання ко1иатц

6)

{э += шл!':|!е (х > 10) 0 "= х;

х;

х++;}

0 * 4 + 5+ 6 + 7 + 8 : 38, -т: 9, & 3м!нна/ свого 3начення (1) не зм'нить' оск|льки 3начет{ня вираву х> 10 хибне, | тоу|у ко}данда 0 *= х у цикл! цг[:|]е виконуватись не буде. [/ршкла0 5. Бизначити обсяг в1льно! у певний у!о1шент оперативно[ патц'ят| мо}кна так:

з

:

!п1п=0; тш1'т!!е

(пеш о[аг)

:пбо 'гак: !ог (!п| п

,!1.}

<<

= 0;

п++;

пеш с[таг; п++);.

]

''€ума

цифр числа

,,

<< п <<

,'дор!внюе

,,

<<

5;

)

3в0ачо 5 (про оу]иу олеп[епт|в зпако3м!нпого ряду'

с:'лл!довност1). Ёехай # * деяке число' яке нео6х|дно :с;гспв!атури п!д иас виконант{я програми' е 0,001 _

по_

ввести з : точн|сть сг6,гислет{ь. Фбчислити суму елетшент!в знакозм|нного ряду ).,'. , 4ё ап = (_1)" Бизначити к!льк!сть доданк!в. Бивес-

#

;;!

'!'|!

!{а екр€!1{

ре3ультати обчислень.

8роарама €ума 1 #.пс|цсе <!оэ|геап.п>

//

#!пс|цёе <ооп!о.}:> #1пс!ц6е <па1п.ь> мо!0 па!п() {

с[гзсг();

соп5|'!оа!о=0.001; |]оа{х,а,5=0;

або складеното.

ньо|о' просто!о

ш|1!е (х.=

соц|

2'б) додае]![о деяке

2.

2. 1{опланда циклу 3 передумового

кту

> 0)

{

1

!,[я

''8вед1ть число,,; о!п >> п;

<<

п=п;

]п1п=о,{ас1=1;

соц| << "8вед!ть х с!п >> х;

а=-2"

\п,,;

х1

тл}:!|е ({або(а) > е) {

$

+=

д;

п++;

/| .=

|мова зак!нчення о6чцслень п;

а = !ош(-1, п) . рош(2 'ас{ . х, п) /

{ас1;

)

сош|.ргес!в!оп(2);

соц| << '$ = " << 9 << ''\п''; соц[ << ''(льк!сть доданк!в = " <<

9е{сп0;

п;

)

3оувалсентоя 3. Ровглявемо ще один спос1б (б!льлш економний) розв'яз5гвання задав! 4. ,(ля обвислення 8начень посл1довност| а' лобудуемо рекурент[гу фордгулу, тобто вщ>азимо стп чере3 с'_1' 0т:ке,

49


о*_, =

о'

=

(-|)'''

2х _2о,-,

#;,

а'

. Блемент

(|)п

=

@1

%-'

..'л;

{

=

+'

зв!дси

Би3Ё&9!!йо з умови 3адач1'

3а0оча 7 (про макси1шальне 3начення функц!!). |{ротабуфункц!то у : 2оозх на пром!экку [-п; т] з кроком !ъ: л / 4. Результати обчислень вивести на екран або у файл за :;::б<;ротш вико|'авця у вигляд! таблиц|. Бизначити найб|льтпе ]!!()!]{1ти

ц|!!,:![(€ЁЁя

3. 1{отшапда циклу з п!сляумово[о 6о-!'уь!!е мае вигляд

як|

коман0ш.

о6числтооться значення вира3у' 2) .{,кщо 3начення вира3у !стинне, то див' пу1{кт 1)' якщо ко1ша1{да 1 |

на_ 8начення виразу хибне - в!дбуваеться перех!д до ступно! п!сля ёо-тл}т!]е команди' бу_ $оманда 1 у цикл! 6о-ш|':!]е, на в!дм|ну в!д циклу ш!'п!!е' 3ав}1сди' де виконуватись хоча б один ра3 х : б' |[ршкло0 6. }1ехай ц!л| зм!нн\ х, ! мак)ть значен!1я у : |. 1[' результат| виконання команд оо

задовольня}оть

у+=х',2=2'х:, х-=2;

3:8' 2:6'

х:1'

*,!,2на6удпъ так].п( 3начень: у:о Роз_ 3ш0очо 6 (про роаклад числа па прост1 мноз[спики)' $!ль_ класти на прост| 1шно)*{ники 8ада}{е }1атуральне число' к!сть виведень ко'кного мно)кника дор|вн:ое його кратност| у

зшт!;шт|

<<

{

о'51геап

1аб{!|е("{абш!'1х1",

соп5| ||оа1 р! |!оа| х

= -р!'

[

хпах

= х;

х {,

<< "\п п = 1"; [ог(! = 2; ! <= п; !++) {

|| (п % !)

соп!|пце;

{

..

соц| << х << "\{" у <. "\п"; 1аб{!!е << х << "\|'' << у << "\п"; !! (у > пах) {

пах

хпах

соц1<<'""<<!; п/=!; )

ш1т!!е (!(п % !)); )

[:Ф

= у; = х;

) [т;

шБ|!е (х <= р[

+ б / 2);

соц[ << "\п [т:|ах = " << пах << "\п"; соц| << "хпах = " << хпах << ''\п";

{а0{!!е << ''\п йах = '' << пах << "\п"; |аб1!!е << 'х!пах =' << хпах << '\п";

{аб{!!е.с!ове(); 9е1сп();

{

)

у" << ''\п"; у" << "\п";

}=2-соэ(х)+1.75;

)

соц1

!оз::оц1);

3.1415926; = р! / 4, у, пах, хпах;

=

пах=2-соэ(х);

х +=

"8вед!ть число''; с!п >> п;

визт{ача}оть

с!гэсг();

уо!а па!п() соц|

потшуку'

#!пс|ц6е <па{п.п> мо!6 па!п()

#]пс]ц6е <!о51геап.п> {

умову

#!пс!цсе <ооп!о.[>

розклад|.

!п1 |, п;

деяку

7абулювання функц[[ #!пс!цёе <{э1геап.[:>

соц| << " 1аб!!!е << "

)

+5*

3'ясува-

//

сош|.ргес!э!оп(2);

{

ш}:!1е (х > '|);

а' тако)к

сканування (перегляду) во|х 3начень функц|[ та по1:|п;п:яння !х з деяким ета.'1оно1у!.

м{''|'()дом

1) Биконуеться

прошт|экку,

якого т (хпах) воно досягаеться. Р1аксиддальне чи м|н|мальне 3наче111{я функц!!, або зна-

|'[|' /{ля '!(.!!!|я'

[!я

(пах) на цьому

функц!|

)

!!сг1;|вняйте ре3ультати' виведен! на екран | у файл. :}аува?!сен,|я 4. 9 попередн!й програм! затш!сть оголо1пен[!я ста:го! сопэ| !!оа! р! : 3.1415926 мо'кна буйо використати стан/\пртну сталу 1!1-Р1, яка описана у тшодул! гпа{}л.}п. 51


Бправи таких команд (усно): виконання 1. Бизначте резудьтати а) а=5; |ог 1! = 1;1<=2; |++)3= а'1-2 а**; (в|дпов!дь: б\ а=1; {ог

в) а

г)

= 0; |ог р = 1; !ог

11. Ёапитд1ть програму'

а:

12. €клад!ть

.!!|сла до певного

5);

(| = '1; | <=

3; !++) {а = а +

2*

1;

а-=2''у

а) р = 4; ш}:||е (р < 10) р= 2" р * 1;р= р+ 1 (в!дпов1дь: р = 20); б) р = 4; ш1':!!е (р < 10) {р =2* р + 1; р += 1;} в) р = 5; ш!т|1е (р > 2\ р =(р-з) " 2; р = р_з; г) з= 1; ёо э = 2' з + 2тш?:!|е (з > 10); д) з = 4; 0о э =_3 (э -6)шБ]|е (э < 0); _= 1; (р >=5) е) р = 7; тшБ1!е Р = (р + 3) /2; р е) р = 7; ш[|!е (р >= 5) {р = (р + 3) / 2; р -='с1!,.

1![ова

4. Бивед!ть ца екран у вигляд| таблиц! номеРи ! значення пер1пих

десяти едемент!в чисдово! посл!довност1, загальний елемент яко1 мае та-

кийвигляд:7-5в!п|2'

5. беред пер|цих 20 елемент|в числово! посл!довност! 3 - 3в|п|2 ви: |, 2, вед|"ть на екран цомери ! зттачення ли:пе в|д'емних елемент\ъ, ! ...' 2о.

6' Розгляньте елемепти числово! послйовносф Б _ 3ев21 вй

10-то до 204' н1хс бйь:п!, на екра-тт) тю ! ви6ер!ть серед них (вивед1ть':хв| номери

8. Ёехай |.р

Рь

! визначте !! м1н!мадь2

-2

0,10

0,40

0,20

квадратич-

Фбчисл|ть матем&тичне спод|вання' диеперо!'о та середн€ не в1дхилення,

х

2

Фбчисл!ть середне виб!ркове з1{ачення с:|го

0

='п7'-т' 9'"',' -(тР ''

,'оеред1!€

'

=

\!*''',

14 виб1ркову диспер-

квадратичне в!дхилення

,

='!-о

'

10. 1!1одифйуйте процра]!1у 6ума'|, використову1очи 1юкурентку форттгууу'

(:2

чиела ]ч{}

п.

[{а

в

поточний

екран ус| прост| натура-ть:т!

6 з ровд!лу "3адан|" ваш]ого вар!анта" Ре-

,1!1(''сл х| у'

3. [ля писел в1д 1 до 1Ф обчисл!ть квадратв! кореп!, куб!нн! корен! та тсоретт! четвертого степеня. Результати навед|ть у вигляд! таблиц'..

функц!'с

доступ}1у

пролрами вивед|ть на екран ! у файл. 14. Розв'язэтс|ть задаву }.,{!: 7 з розд!лу "3адан!" ва|пого вар|анта- Ре{!у.,|ь'!'ати вивед|ть на екран ! у файл" 15. Ровв'яхс1ть зада.лу !} 8 в розд|лу "8адвв1'' двома способами: а) ви_ !!()[)истову1очи програму_зразок €ума 1; б) модиф!кував]пи програ]иу' врах(}|}у|очи 3аува)кення 1. Результати обчислень вивед|ть на екран ! у с|л:: [!л. |[ор|вняйто отриматт1 результати. 16. Розв'яхс|ть задаву }',|!: 9 ватпого вар!анта з розд|лу "3адач1". Ре_ |у.'||)тати обчислень вивед!ть на екран ! у файл у вигляд1 таблиц| пар ;|у.|1ьтати

эк)а=_1;|ог(! =1;|<=4; |++) а=2*а+11 а+=2, з) р = з0;'ог (ь = 7: б >= 4: ь_-) р -= Б; р += 5; * 1) о=0; {ог (п =6; п >=3' п*-) {9 =3 + 2 п; 5_-';}. 2. .[кого значення на6уде зм!нна п1сля виконання ком&нд:

?. }1одиф!куйте програму [абулювання не 3наче[{ня |{а 38да,{ому пром!э*ску.

програму' яка виводить

3аданого

13. Розв'яэк!ть задану

1;!<= 3; !++) {а = а + !; а_= 1;} (! = 1; ! <= 4; !++) 3 += !; 3 += !; (б = 8; б >= 5; р += б--); р++; (! =

д) в=0; |ог(п=7;п>=4; п--){5+=||! 5++]) * е) а=4; |ог (| = 1; ! <= 2; !++) а =а !- 1; а+=2; е) а = 1;|ог

яка у всто в1льну

м()мент оперативну пам'ять комп'к;тера 3аписуо деяке чисдо.

$ 1о. Функц]! (1) прогр81и)лван1{я €** дае мо}клив|сть реал!з}ъати кон-

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

!!().,|ягае

|. Фголо:пеппя фупкц!й корпстувача. }[охсну функц!:о коперед пер111и1и викликом передус!м необх|дно ого-

]|.|{!'|'у!]&ча

53


дооити (задекларувати' створити прототип' сигнатуру)' 3а стандартом 1во/Ашв1 прототипи функц!й оголо1шу1оть у спец!альних файлах заголовк|в. )[' програму ц| файли приедну1оть 3а допо1шого1о директиви *|пс!ц6е' наприклад:

1ак! значення на3ива1оться 3наченнямш 3о 3ал'овнуваннялс. \х 3апису1оть у к|нц| списку. 3начення таких параметр|в у програм| :иоэкна зм!н:овати. Брахову1очи це' розглянемо ще один сцос|б оголо1шення функц|й' наведених у приклад1 1. 5шпа(!п|

+1пс]цае <соп!о.Б> {+!пс!цае "[т/уЁеа0ег. ["

|{рототипи стандартних функц|й розм|ш1ен| у папц| 1}{сь1_}пш. 6интаксис мови дао змогу розм!стити прототип такох{ | в основн!й програм|. Функц!:о користувача оголо111у}оть так:

}<о0(!п!

моэ*сна.

[1ршюла0

.1.

{!оа|.

Функц!я ёг!б 3алехсить в|д двох зти!нних д!йс-

ного типу ||оа| | не повертае у програ1у[у )!(одного знанення. {|ла функц!я ]<о6 залеэ*сить в|д двох зм|нних ц!лого типу' д|йсна функц!я |о!о типу 6оцБ]е не зале}1{ить в!д )1содних параметр!в' |[|д нас оголо1шення мо}1сна в!дразу |н|ц|ал|зувати фор' мпльн| параш|етри функц|[, тобто надавати !м певних значень' |у4

'

!п| 12 = 5);

{

<т!ло функц!1>; ге|шгп (<назва зм!нно| 1>); )

9 т!л| функц!!

запису1оть команди' як| зада:оть д|то функ_ Результат виконан1тя функц|! повертаеться в основну ||рогра1\[у (у товку виклику) 3а допомого:о зм!нно! 1 коштандото ге|цгп. 1ип зм!нно| 1 мао зб!гатися з типом функц||. ]/ т|л| с!гункц|й типу то|Ё кош1анду ге|цгп не за3нача1оть. )[' команд| ге!цгп кругл! дуэтски мохсна не писати. 3оувонсення.[. Функц|то 1ио}кна описувати ! на початку прог11|.

трами.

1['

такому випадку декларувати !! не потр|б:*о.

2. Функц|! $цпа | о![еппуа, оголотпен! у деяк!й програ:ш! 1ио)кна описати так:

[[ршюла0 /(! 1,

{!оа! 5цпа(.п| !!!' !|оа| с!па)

//

у

прикла-

3аеоловок функщ1

{

!]оа|э=к!! 'с!па; те!шгп

{]оа[ 5цгпа(!п[ к!!, |!оа| с!па); то!0 0!!еппуа(||оа|, ||оа!); }<о0(]п| !<1' ]п| &2); 6оцб!е !о!о(шо!6);

га _ типу

}<1

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

Розглянемо сигнатури функц|й

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

|]оа| с|па = 2'5); = 1.2' |]оа| п = 3);

2. Фппе фупкц1й користувача. Фпис функц!! складаеться !з .]&головка без юрапкш 3 кол[ою | т!ла функц||, записаного у ф||'урних ду,}кках' а саме:

<тип функц!1> <назва функц![> (<список формальних параметр!в>);

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

}<!!,

то!ё '!оа| 6!!еппуа({]оа| у

(э);

//

3начення, яке поверпао функц|я в основну проераму

)

мо!ё 0!!еппуа (1!оа1 м' ||оа1 п) {

соц| << "\п 0!|еппуа = с'

" << у / п;

)

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

;}ддак)ть.

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

!т\:'|'|!о[

б5


'|оа|

рецпет

(!п| к = 4,

'|оа|

г =

#1пс|ц6е <!о51геап.ь>

2.5);

#!пс!ц6е <соп!о.б> !|оа! $шпа(|п(, 1|оа1); мо!6 па!п()

а описати власне функц|к: так: ']оа|

решпе1г {!п| &' {!оа{

ф

!!оа| п; 1п1 п; соц| << "8вед!ть ц!ну за '| сшг. \п',; с|п >> п; соц{ << ''8вед!т'ь к!льк!сгь купленого товару \.т,,; с!п >> п;

'!оа| р=&-г;

ге|шгп (р);

]

о|гэог

двояко: або ко:шандок) викли1{у' або в вираз|в так:

]

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

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

||ршкла0 4. Розгляне1цо сигнатуру 3 прикладу 3. =

4' {!оа!

{|оа| 5шпа(1п!

}}/ пертпому випадку зшт!нн!й А 6уде присвоене зпанення 7, а зм|нн!й г _ 2,8; у другому випадку Р : 8, г: 2,б; в третьо-

тнту*:7,т:2,5. )/ списку фактинних параметр!в

}те мо)1{на пропускати

з:ш!нн! 3 середини списку' тобто не ш[о'|сна функц!:о 1т/$шпс() викликати так: й$шпс(1.65);, оск|льки тут пропущено !н!ц!ал|зац|то пертшо[ зтш!нпо! Ё.

3о0оча, "1 (про товарний нек). Бикористову1очи функц|то користувача' скласти шрограму для виведення на екран товарн0го т{ека для куп!вл| п тптук товару за ц!но:о и} грнивень 3а одну !птуку. {!ну та к{льк!сть купле}{ого товару ввести са:у|ост!йно у реэ*ситш! д!алогу.

|_л6

!/ Фпцс функц[[ 5цгпа

5=к;! -о!па; ге|цгп

9;

)

4. ]1осилання. .(о даних мохсна 3вертатись 3а допо1цогок) або посилань. ![осшлоння слугуе для надання 1це одного

;мс:л*

!мс:пт!

(псевдон|ма' синон!ма, ал|асу) дано1иу. |{осилання утвотак:

!)!()[оть

<тип даного> &<назва посилання> = <назва зм!нно1>;

Ёаприклад, {!оа| &с!па =

();

|!оа! с!па)

!|оа| з;

решпе|г (7'2.в); (в);

&|!,

{

г = 2.5);

,{о ц!е! функц!! ]у|о}кна 3вернутись одним !з способ!в:

{);

соц| << \1 товАРний 9Ё( \п',; еоц| <<''ц!на за '| шт. - "<< п << " грн \п"; соц{ <<"3а "<< п << " шлцк нео6х!дно сплатити .; соц[ << 5шпа(п, п) <<', рн\п"; |/ 8с:клшк функф 5агпа сош| << "\{дяцомо за поцпку!',; 9е1с!п();

3. 3иклик фупкц!й користувача. до функц!! користувача 3верта;отьоя з розд!.лу ко1\д8нд основно{ програ1ди (функц!! па|п()) або з !нтпо! функц1!" Биклик функц!й мо)кт1& виконати

регупег рецпе!г

! 0еолоц;ення функц/;' $вгпа

о!гэсг();

р;

'!оа|

/

{

{

рецпе1г (]п| к

// [оварной нек

8цп?]

|/ цьошту випадку посилання с!па | зм|нна 5ц]па вка3уватина одну ! ту еа1шу адресу в па:ш'ят| ко:шп':отера. ,(ля !!()(:илань 1{е ре3ервуеться додаткова опер&тивна пам'ять. у с++ 1у[о;{сна утвор1овати посилання на дан1, але не на ]х_ :;! 'гипи. 3начення посилання !н!ц|ал!зутотъся в10раау п!д нас {!:::т; оголотпення' тобто на етап! котшш|ляц|!. ][' нашто]шу шрик,:;п/1! посилання с|па про!н!ц!ал|зоване з:ш!нното вц]па. Фт>ке, 5цпа: 11, то ! значен!тя посил9т{ня с.па тако}[с буде 11. ''!(!|(о !!|д нас зм!ни значе11ня посилання зш:!н:оеться 3начення ';м!гггто|, на яке це посилання вказуе. Фтэтсе, якщо у програм| :!;!!!}!€&?й ко1ша1{ду с!па = 15.7, то зм!нна $цпа тако}к набуде зна_ му'|'ь

';,';;пдя 1-5,7.

{]ги|нтовати (переадресовувати)

посила11ня у програш:| ис

.]!''!!'![а. |[осилан:тя 3ав}|{ди вка3уе на одну ! ту саму ядРесу в

57


()||ордтивн|й пати'ят|. [е використову1оть п|д нас створення та ви!{лику функц|й. ||1д нас виклику функц|! коп|[ ус|х !1 фак-

ти!|них параметр!в 3аносяться у спец!ально орган!зовану обл{1сть па:и'ят!. ||от!м викону1оться в!дпов!дн! команди фупкц![

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

3а0очо 2 (про гуртову покупку). Ёехай 8ниэтски на гуртовяку зроблено за1иовлення, а са:ше: п!д ,п::с куп!вл| товару на су1шу до 200 грн покупець ма€' сплатити |00% в|д вартост! товару' на суму в!д 200 до 500 грн йому !|{1да€ться знинска |0%., а на су]\[у понац 500 грн _ 2о%. |}:зести з клав!атури су1шу' на яку зро6лено за:шовлення, 1 !|ивести с}м9' яку необх!дно сплату!ту| а урахування системи ]}]|и'хок. Бикористати функц!:о користувача' аргу:иенташ!и :гпсо| е посила}1ня на зм!нн1. :п1

залеэ*{ать в|д сутши' на

#|пс]ц6е <!о5|геап.п> #!пс!ц0е <соп!о.[> мо!0 5шпа({!оа| &1); мо!6 па!п()

!|оа| &!1еп(|!оа|'а,

!п|

!) {ге|шгп'(а

+ !);}

Бид!лимо д|лянку пам'ят! для збер!гання вначень десяти д!йсних чисел рп = пеш 1!оа|[10]; Бикликати ц:о функц|:о моэкна звичайно: ц = !|егп(р:1, 3); ?од! зм|нн!й ш буде надано значення четвертого елемента. !й'ведемо 3начення п'ятого числа так: !1еп(рп' 4) = 10.

![' цьому раз| функц1[

|/ @еолоц;ення функц[/ $цгпа

{

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

{

/| 3м!на значення посцлання [ !' (! >= 2о0.0 && 1< 500) 1-= 0.9;

]'

(|

>=

50о.0) { --

0.8;

)

)|' цьо:шу

випадку функц|я $шпа() цовертае у програу|у 3на_

[!ення чере3 посилання р$.

5. Рекурс1 я. Рекурс!ек) на3швает!ься алеорштп;п!чна конст!руюц|я, 0е п!0проерол1а вцклцкс'е са.ма себе. Рекурс!я дае змо-

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

!|егп() на0аелоо

д|лянку пам'ят1 буде ванесено число 10. 5в

эамовлення

с!гэог();

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

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

|/ [ургпове

3начення, то6то у

{

!оп9 !ас|; !! (п > 1)'ас1 = п - 1ас1ог!а!(п

_ 1);

б9


ге|цгп

е!5е {ас1 =

1;

10. йодиф|куйте програму

{ас1;

:;|вники

)

3аувоэ;сення 2. 0ск!льки нав|ть д''я невеликих чисел {}1{ат{ен}тя фактор!ала е досить великим! то у цьому приклад! ддя функц!!

задано тип 1оп9" 1{е дае змогу о6нислити фактор1а'т:и нисел в|д 1 до 16" ,{ля визнанення фактор!ал!в чисел б|дьп:их в1д 16 необх|дно використати алгоритми ,'довго{ ариф:тетики''. {а'с0ог{а1

Фбчислимо функщ1:о {ас{ог!а!(5) = 5. {ас1ог!а!(4) = 5 . 4 . {ас|ог!а!(3) = 5 4. 3.{ас!ог!а!(2) = 5. 4.3.2.{ас|ог!а!(1) = 5.4.з. 2.1 = 126. |{ереконайтеся' що {ас1ог!а!(13) = 1932053504. [!ршкла0 6. Рекурсивна функщ1я обнислен11я суп1и щ|.:тих чисел в!д с до } тшае вигляд !п!

5шпа (!п! а' |п| {

!п{

5;

е|зе $

= б +

$шпа(а' б

_ 1);

)

3аувоэтсення3. 3астосову:оти рекурс!то, потр!бно т1равильно складати с!поп-у]у'овц' як! забезпечутоть зак!ннення щикл!нних обчислень.

3прави 1. |{ридумайте призначення, склад|ть ! запитц1ть функц!то &о0(!п| [1,

сигнатура яко| огодо1дена у приклад! 1. 2. |[ридумайте признанення та опи:д!ть дв! _ три функц!! р|зних

!п| !<2),

тип!в.

3. ]!1одиф!куйте програму товарний чек на випадок куп!вл| двох вид1в товару за р!зното ц!ното. ?оварний тек вивед1ть у файл' 4. }1одис!!куйте програму [оварний чек на випадок куп1вл! Ё вгпд!в то_ вару за р!зно:о ц|но:о, якщо к!льтс|оть товар!в наперед в!дома. 3коз!вко: викориетайте команду циклу [ог. б. 1!1одиф!куйте програму [оварний чек н& 8ипадок куп!вл! & вид|в товару ва р|зното ц!вото, якш1о к!льк1сть товар!в н8перед нев!дома. 8тсаз]вюа. Ёикористайте команду циклу |шь]|е 3 параметром завер]пен-

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

ники.

!-уртове 3амовлення'

використову!очи вка-

клк)човим еловом соп3|.

11. Розв'яэк!ть задату }ч!! 7 вахцого вар{анта, використав1ши дв1 футткц!! користув8ча дл.я 3наход'*сення оуми т& до6утку' Результати вивед!ть

а) на екран; 6) у файл"

12. Розв'яэтз!ть вадату

}ч|!

7

вацлого вар!анта' викориетав'ши дв{

фуцкц|.! користувача. Аргументами цих фуцкц!й ма|оть 6ути посилання пп д!йсн! зпд!нн|.

}.'!} 7 ватдого вар!анта, використову|очи рекурфункц|! (тобто без використання команди циклу).

13. Розв'яэ*с|ть задаву

с:ивн|'

$ 11. Фу!{кц1[ (2)

0)

!|(а==б)$=а; ге1цгп 5;

:}

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

|

1

}|!({1

3находить

1шакси1![а.]тьне серед трьох

введених

чисел.

#!пс]ц6е <!оз|геагп.б> #!пс]ц0е <соп!о.}т> |[оа| [т:|ах({!оа|'']оа|'']оа|);

мо10 па!п()

|/Феолошення функц[|

{

60

61


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

соц| <<" о "<< пах;

,л1!плогу. Бикористов).[очи ;ппсий прой1пов

потяг'

1

функц|то, ви3начити сзага.'тьний |шлях' тш!этс станц!ями.

в!дстан!

#!пс!ц0е <!оэ{геап.[:> #!пс!ц6е <соп!о.б> !!оа| ё = 0;

// |1ро

!/ Феолосцення ело6ально1 зм|нно[

мо!0 па!п() {

9е|с[();

!п|

[

= 5;

у,

{!оа| йах(||оа! а, !!оа1 ь, {|оа| с)

/! @пцс функцг{

|ог (!п| п = 1; п <=

мах

соц| << "\п!вед!ть час, який затратив потяг''; соц| << " на перет3д м!ж зупинками "<< п; соц| << . та ' << (п+1) << "\г:'; с!п >> |;

!|(а>б&&а>с)пах=а; !|(б>а&&б>о)пах=ь; е|зе пах =с;

ге!цгп пах;

>> м;

&; п++)

{

{

!!оа| пах;

е|эе

6

1;

соц| << "!вед!ть швидк1сть потяц \гт"; с3п '!оа|

)

локальн! гпа елобальн| зм|нн!

{!оа| 6;

// 0еолоц;ення локально[ зм!нно/

::0=;:0+6;

//

ё=!-у;

ё

)

3ауваэки:ш@:

1|{Ф

у ц!й шрограм| 3м!нна

|тах оголо1пена в!д-

разу у двох функц|ях па1п() ! мах(). 3шт|нн!, як! описаЁ! поза вс!шха функц!я:ши, тобто на початку програми або у файл| 3аголовка' назива1оть 2ло6альт!ш]}1ш.

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

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

)

соц| <<"\п 3агальний шлях "

}

<<

3верпання 0о елобально[ зм!нно1'

6 << " км

'';

)

цьому випадку зм!нна 6,, яка огодо|шена на початку прог-

|}|!ми' е глобальното.

][' блоц| кома1{ди

[ог оголотпена

локальна

ггм!:пна 4.

!. ,(ля динам|тних зм!нних не д|тоть правила видимост! та доступ!{ост!. ,(инам{нн| зм!.нн! видим! та доступн| у вс!х функц!ях та блоках програми протягом уоього насу !х

3оувоо:сення

визначеност!.

2. |{лаеп пати'ят1. ,{ля того, щоб 6езпосередньо вказати як ! де у його пам'ят! мак)ть з6ер[гатися значення :;м|г:гтих чи функц!й, як мо)*сна отримати доступ до цих /(|!!|их' як ви3начттти о6ласть видимост! цих даних' використоЁу!(угь спещшф|тсо7порш юлосу па.л[' ять1. 6 п'ять специф!катор|в ]сс:мпт'потеру

{':'г:б.::.

9).

[{лас папл'ят|

ац|о ]э1ег

ех|егп в|а|!с уо]а|

1[ае д!! зм1цпо[

1имчасово 1имчасово 1имчаоово |[ост|йно |{ост|йно |1ост!йно

!аблцця 9' 1€ласц па:п'ягп! Фбласт| впдимост! та л|[ з:и{нно[ ]1окальт*а

]1окальна .}1окальна .}1окальттд

[ло6альна |лобальна

63


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

ласть видитиоет1 таких впд1нних обтце}т{ена' 6локо;нт', у яко1шу в0ни 0гол01шен!- 11!д ч&с вихс>ду а 6.::ока шам'${ть, яка в!дведена для цих зм|нних, авто1\{атв(чно вив|льятяеться' а з*т!нн| 3}1иш"{у-

Функц|я сс при3наче}1а ддя о6числення су:у!и чисел. 8кщо эк потр|6но обчислити добуток чисел' то фунц!я гпа|п() 3алш!!!шп'ься без з:ш1н, а зати!сть функц|| сс сл!д записати таку

с[ункц!то:

сс(!п| п) {

з1а!!с!п|5=1;

10ться.

€пещиф|катор ге9|э{ег вка3уе кошхп|лятоР}, т4о 3}таче}[}тя здш!нно[ сл!д збер!г&ти у рег!стра'х' [е ашленштуе час доступу до зпт|ттхто! 1" шрискорго€. вик.о1{ання 1трогр8ми. ${кщо }1е м0}1{ливЁ розм!стити зтш!нну у рег|стр1, то з:ут|нна 6уде збере]*сен& з1 специф!катор0ш! ац[о. Ф6ласт| д!! т*" видитшост1 рег!отрових аад!гт* них' 8к ! вуя!нн*тх з1 епецшф!катороу[ аш1о, о6:иеэкен! блоко:ш, у $&0:}1} вони 0голотшен!. бпет1иф1'катор з1а!1с м0}кна 3ает0с0вув&ти як до л0кальних, так 1 до гло6адьних зпт!ттттих" }{а в!дм!ну в|д зм!нних в|специф!'кат0ра1у1и ац1о чи ге91э{ег 3!{&че:{ня докально{ статично! зтш|нно! з6ер!гаеться т:!сля виходу з б.пока вт+ функц||, де щя адд!ттна оголо|]:ег{а. |||д тас п0вторного виклику функц!1 зшт!нна абер1гае сво€ попередне зн&чення. [[ктцо з:и!ттша явно не |гя1г1!ал!зована' то 3& з&мовчуванням !.й надаетьея вттаче:тня 0" [!ршк:ъс.6 3. Ф6числити суму а6о добуто}с перш]их п щ|лих д0датт{их чисел. 06чутслитшо спочатку сушху чисел. !/ ё6ншслення сумш *!пс!ц{е <!оз!геап.}т>

#|пе[ц6е <соп!о.[> сс(!п| п); мо!0 гпа!п() (

о!гэс(); 1п{ п, $;

сош1 << "}вед!ть число';

с!п

>> п;

!ог(!п|

соц|

! = 1; ! <=

<<

э:

п; |++) $ =ос(!);

0е1сп(); ,

!!._*-*-

сс{|п1 п}

э|а1|с!п18=0; $+=п| ге1шгп 9; )

(',1

ге!шгп $; )

[ло6адьн! статичн! зм|нн| |н|ц!ал1зутоться п!д час 3апуску

|!])ограш!и. Фбласт| ,||||!!е на той файл,

!х д![ та видимост! розповс}од}ку1оться

де оголо1шена ця зм|нна.

{асто, якщо програма складаеться з дек1лькох файл!в,

||||]{икае потре6а передавати 3начення 3м|нних 3 одного файлу :: !:тхпий. } такому випадку до з:ш|нно! 3астосову1оть специф|-

!(|!'!'ор ех|егп.

Б!н дае з]иогу оголотпувати гло6альн! на вс! файли, 3 яких скл9даеться

;!|сих по1пир1о€ться

€пециф!катор

.}!|,|1{ення яких

!!|, т{аттриклад' |']|;|мера.

зтш|нн|, д|я

11роцра]иа.

то|а!|!е 3астосову1оть до глобальних зм!нних, мо}}{уть надходити в|д перифер|йних пристроякщо зм!нна набувае аначення в|д системного

3. [1ереваптапсеппя фупкц!й. ]/

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

!'!(,!.!(:ти Ё!.}('

програ1шу

для

ушорядкування

(:имводьного' або ц!лого типу.

трьох

уведених

даних

!пс!ц0е <!оз[геагп.|> мо!0 $ог!(!п{ п'!, !п| п2, 1п{ п3); шо16 5ог{(с}:аг п1, с}:аг п2, с}:аг п3); шо!0 па!п() ,,

]

{

$*=п]

// //

[]ей ря6ок буёе вцко'1анФ л!!ьые оёвн раз п!ё зас персх:оао вцклцц фу|.'кц![

(

!п[ !1' !2, !3,

&;

с]:аг с'!, с2, с3; соц| << ''9вед1ть 1 для впорядцвання символ1в, 2 для чисел\п,,;

65


с!п >> к; !' (к == 1)

![еявни1}1 створенття\!| е'саел1пляр(' |

{

ооц| << "}вед!ть три оимволи"; с!п >> с1 >> с2 >> с3; 5ог[(с1 ,

трограмуванн| називаеться

""

с2' с3);

1|'а6лоно. ?акий п|дх|д у в &н''я ]ш' функц|:о у"'".'|"''1го типу.

у 3а?апъ1{енш]ш про"р(' ]пу

"'Ё:::"-::::: ^у::{ "]'"р'1:

;;;;;;;;',

)

.{ (к == 2) {

соц| << "!вед|ть три числа"; с|п $оп(!1' !2' !3);

>> |'| >> !2 >> !3; !

параметр|в зам|сть стандартних 1--:::::*_форштальних тип|в

) )

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

|п| о; !| (п1 > п2) {с = п1; п1 = п2: п2 = с;\ || (п2 > п3) {с = п2; д2 = п3; п3 = с;} !1 (п1 > п2) {с = п1; п1 = п2; п2 = 9;1 соц. << п'! << ''\1'' << п2 << "\{" << п3; )

{

сьаг

о;

!! (п'1 > п2) {с = п1; п1 = п2; п2 = с;} !{ (п2 > п3) {с = п2; п2 = п3; п3 = с;} |! (п'1 > п2) {с = п1; п1 = п2; п2 = с;1 соц| << п1 << '\1" << п2 << "\1' << п3; )

3аувоэюення 2. !,ля функц!й' як{ в!др|зняк)ться типом значент1я' яке вони цовертатоть, ! ма1оть однаковий наб!р аргу1иент{в' переванта'1{ення у мов! €*+ не ви3начено, тобто !м надавати однаков{

|мена

(;

анн

ув ; *::"-::,: -*:- -т'" функц|! користувана.

:: 71.л:я ;

я *"о"

'"

"

у,]*

#;;;;

;;";1;

3ауваэюення 3. !/ стандарт1 1$Ф/А$$1 зам!сть клточового слова с!авэ прийнято 3аписувати 1урепапе'

,{кщо для деякого типу даних функц1то необх!дно описати то створ1ототь яв11у спецшф1тсот4йго функц:т. ф.д: у спис:с:пх формадьних параметр!в *'б''"' зазнача|оть конкретн1 '|'|! ||и аргуш{ент!.в. (}!сре1\1то'

1ршкла0 5. |{ереробимо програму з прикладу 4

для упо|)'!,(!{ування трьох введе!|их даних заздалег!дь нев!домого ти!!у' використову1очи штаблони.

#!пс|ц0е <!о5!геап.п> #!пс|ц0е <соп|о.}:> /| @еолоц;ення ц;а6лона функц[[ !епр|а|е <с[а5$ му1уре> мо!0 $оп(!т4у[уре п2, му1уре п3); '!,'йцуре мо!6 па!п()

не мо)!снс''

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

да1{их за3нача1оть на3ву _Б ;";;"";;;;;;;

::::"т:^"::]_

{

с!гэсг(); !п| !1, !2, !3,

&;

с[:аг с1, с2, с3;

со('!( << введ!ть с!п >> |; !' (к == 1)

.!

для впорядкування символ!в, 2 - чисел\п,,;

{

<< ,'!вед!ть три символи',; с!п >> о.| >> о2 >> сз;

соц1

5оп (о1, с2, с3); ]' (к

)

== 2) {

соц|

<<

,'!вед!ть

с|п >> ..' >> !2 >>

5оп

(!1, !2, !з);

три нисла,,; !3;

)

9е1сБ(); )

(;

67


!егпр|а|е <с!а59

мшре>

уо:с! $оп(му:уре п1,

мшре

/| @пцс ц;аблона функцг[

п2, йу1уре п3)

{

!т:!у!уре с; !{ (п1 > п2)

{с = п1; п1 = п2; п2 = с]]. !| (п2 > п3) {с = п2; п2 = пз; п3 = с;}

6. Функц|я

соц| << п1

<< "\|"

<<п2 <<

! ,

"\{" << п3;

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

1ршкла0 6. Бикористову1очи вбудован| функц!!' скдасти програму для обнислення до6утку !9ьь+э

дЁ-15'

Бикористання функц!! тут мае |лтостративний характер' !! 86у0ован| функц['т'

<<

& <=

1х|;

&++) о

"Аобгок дор!вню€

=

соь(к);

= " <<

9;

!

_ число аргумент|в функц|| * 1 (назва програми

те'*с

!!|!|1?к&еться арц/1у[е}ттом), як!

задак)ть у ко1у[андно1шу рядку. !1г:раметр аг9т _ це вказ!вник на 1шасив симводьного типу. |{а|}||метр епм[] слухсить для передан| параметр!в для операц!йно! (:}|()теш|и' у як!й виконуеться црогра.ма. Р1ого викориетову1оть' !!!|!!рикла4' тод'.' коли програму потр1бно виконати в р|зних г:гс;рац|йнох системах. 1ршкла0 ?. Ё[ехай треба знайти :ш|н!:шаль:те або максим!!.,[ьне 3начен}1я функц|[ ! : х2 в!п.т, де .т з:и!нтоеться на цром!;:ску [|; 2] з кроком }т * 0,1. с

#]пс|цёе <|оэ|геап.|> #!пс!ц0о <соп!о.[:> *!пс[цёе <ргосе9э.ь> #!по!ц6е <па|ь.п>

!/ 8окорслсгпання

функц[[ па!п() 3 параме(прамц

#6е{|пе !':0.1 #6е|]пе б 2

м!п(']оа| у);|!оа[ йах(||оа| у); '|оа! |п| па!п(!п| аг9с, спа.'аг9м[]) {

!{

(аг9с

< 2)

!/

2кщо параме[г'р не за0ано

{

/!

!|оа1 х, у;

соц| <<

"

[

\| }

\п";

|ог(х=1;х<=!;у4=|)

||осгпроково вцхо0цмо з про2рамц

/! 7абулюомо функц!ю

(

}=х"х-э!п(х);

!|оа| 0об(1п| а)

соц|

з1а|!с|]оа10=1;

+ 2) / (а

<< х << "\1" <<

)

{

0 = 0 (5-а ге{цгп ё;

-епм[])

)

)

-

15);

]

Биконазтши програ]у1у' одерэ*симо 3:{ачення доб5гт:су 28380' б.

68

/(() аг9с

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

ех!| (1);

{!оа1 9; |ог (!п: & = 1;

бути у

соц| <<'недосгатньо арцмент!в\п"; соц| << "!ведЁь параметр п!п або пах";

то!ё па!п() '!оа[

соц|

1п1

!_

)

#!пс[ц6е <|о$1гёап.ь> #се'!пе ш 10 6об(!п1 а); !п!!пе

1шае

3агальний вигляд функц|[ гпа|п такий:

!| (п'! > п2)

{с = п1; п1 = п2; п2 = с;|

8 пара1шетраш|и. Функц!я, яка

тпа|п()

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

!| (-аг9м[1]

/|

} << "\п";

!1ерев!ршмо,

нш

0руеай парамвгпр с

-(аг9м[1]+1) =='п' && =='|' &&'(аг9м[1]+2) =='6')

е]зе

(п!п

соц| << "[:!!п = " << й!п(у);

|| (-аг9м[1]

|/ 1ерев!рамо, нш 0руеай параме[пр с !пах -(аг9м[1]+'|) -(аг9м[1]+2) =='гп'&& =='а'&& =='х'1

69


е|5ё

0е1оп(); .е|цгп 0;

0:\!аб\рго9гап.ехе пах <Ёатисн!ть на клав!шу вводу> 0:\!аб\рго9гап.ехе [!! <Ёатисн!ть на клав1шу вводу>

соц1 << "йах = " << йах(у); соц1 << "[1араметр не визначено";

8к| результати ви отри:иали? 8анотуйте !х у зв!т. 7. 1!1одиф|куйте програму 3 прикдаду 6 так, щоб одн|ото командото

)

!(()ма}{дного рядка 1!1оэ{сна було знайти :::: або ли!пе одне з них.

!!оа{ й!п({!оа| у) {

'[оа|х=1,п; п=х*х-з!п(х);

'|'1!|

{ог(;х<=2;х+=Б) {

}=х-х-з|п(х); ге|цгп

)

$

,/1|!|1их

{

|]оа!х='|,п; п=х*х-5!п(х); !ог(;х<=2;х+=п)

!

!=х*х-в!п(х);

!:::;ву 1цасиву надае кориетувач. 1!1асив складаеться 3 е][е]],!.ентп[в. \,отт<ен елемент ш|ае |ндек-

|'!|' за яки1ши його :иоэкна з|тайт'1

||(п<у)п=у;

!!|!:}|тачао ро3м|рн!оть

)

ге|цгп п;

гм!1>пп|

)

ргосе55.}п використано функц|:о ех!1(),

3ш[огу достроково 3авер1цити виконання

програ1ци.

яка дае

Бправи 1. Ёавед!ть приклади оголо1пення гдо6альних ! локальних зм|нних. 2. Бикористову1очи перева1|та}кення функц|й, склад!ть програп|у для обвислення :ш!н1мального з п'яти введених даних. ,{ан| мо;куть 6ути 3. Бикористовуточи перева}!та}}сення функц!й, склад!ть програму

се1ии введених даних. ,(ан! мо:кутъ 6ути ц|лого

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

70

тшасиви.

:'г:п1!

масиву.

у масив|. }[!льк1сть

Розр|знятоть

1ндекс|в

та багатови-

одно-

наприклад' двовиш|!рний масив даних _ це таб-

,!!!!('|' що складаетьоя

з дек!лькох

рядк|в

| стовпц|в.

][' тшатема_

понятт1о масив в!дпов!да:оть поняття вектора та матриц|.

[}дгальний вигляд конструкц!| опису одном!рного масиву !']! !( ш |{:

- це к,льтс'с/пь еле1шент|в 1шасиву. Розм|р }дасиву знати | задавати 3аздалег|дь' оск|льки комп!лятор :}{]ре3ервувати для нього необх1дний обсяг пам'ят1. Розти|-

!)озшг|р

щ!лого або д!йсного тип|в. а6о д!йсного тип|в.

одного типу' як! збер!га}оться в посл]ао6но ро?1по.шо-

.!.!!!![х ко]у!1рках оперативно| патш'ят! ! шла:оть сш!льну на3ву.

{

для о6нислення добутку

12.мАсиви

1. 1![асиви. 1!1асив _ це впорядкований ск!нченний наб!р

!---------

{!оа! мах('!оа1 у)

3 6|бл!отеки

па!п() з параметра1ши.

п;

)

|

з

значен-

| пд|н|мальне

8. €клад!ть програму для розв'язувант{я задан| }'{! 8 ватшого вар|ан_ 1]икористовуточи функц!|, локальн! та гло6аль}|! зм|нн!. 9. Биконайте завданпя }ч1!: 8 ватпого вар!анта, використав1пи функ_

г:'!:<>

!|(п>у)п=у;

макоимальне

о:;'сг{!х!/{но м!|(]

|)!!м м()}ке бути

литпе ст!с'ла

величина

(не зшх!нна).

]м'я масиву у програм! зм!н:овати не

|1!||!!!!!1|' яка м!стить !ч!!|']!!!у е вказ!вником

1шо}1{на

адресу пер1шого елемента. на перший елемент.

_ це стала веФтхсе,

!!:пптриклад, команда |п| э|ш0[5] оголо1пуе 1шасив

з

н&з1]|1 |:цсппс:ти

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

7!


!. !,[' навчальних ц|лях використання !мен б!льп: наочне' однак в!дпов!дно до профес!йного п!дходу ол!д надавати перевагу вказ!вникам.

3оувоэсення

Ёумерац!я елеш!ент|в 1шасиву зав'|сди почи]1а€тье$. 3 '|упя'. 1[об звер11утись до деякого еле1ше:1та' необхино 3а3начити |:и'я масиБ}, & у квадратних ду3*сках _ його 1томер. Ёаприкл&д' 31ш|н}та э|ш6[2] е трет!'шт еле1иентом масиву $[цс' а $1цс[4] _ п'яти1и, оск!льки масив 5|ц6 м&е еле}денти 5!ц6[0], 51ц6[1 ]' 9!('6[2]' $|цс[3]

та

$|цс[4].

3оувоэюення 2. 1[омп|лятор мови

€** не контрол|о€

налеэ*сн|сть

|ндексу до з8д8ного д{апавову. 8!дпов!дадьн!сть за це несе програм!ст. Ёаприклад, .якщо у програм| оголооити масив па5 3 п'ятьм8 д1йсни:ши числ&ми ! написати комавд!/ гпаз[54] =2, то пов!домлення про помилку не буде, проте нев1домо' у яку д|лянку пам'ят! потрапить чпело 2 ! що трапиться.

}{азва :!!асиву з|ц6 е вказ|в|{икоп[ на його пер:ший елемент. 3:ш!нна 'э|ц6 пд!стить 3начення пер1|1ого едепле||та плаеиву (еле1шепта в|шё[0]). Фск!льки ве! еле1шекти масиву розпл!тцен! у посл!довних кошт!рках оператив1{о[ пам'ят| комп'}отера' то вказ!вник (э!ш6+1) вказуватиме на другий еле1иент штаеиву (зтл!_

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

||оа! г!з![10] =

(1

сьаг а!рьау!1[6]

а6о с}:аг

а

63.4' 154.6' '!70' 172'8, =

"А6етка"

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

с!о-ш1т!|е.

1рс.отсла0 .[. 6творити маоив в пер1пих ста ц1лих чисел ! с:(г'гислити су:шу вс1х його значе|1ь 1\{о}}сна одни1\,1 !з способ|.в:

!п|п[100];

!п|5=0;

|ог

а!рьау!1[6] = {'А', '6', 'е', 'т', 'к', 'а'}.

,Ё,кщо масив повн!стто !н!ц1ал!зу:оть п!д час оголотпен!тя'

72

п[100];

!ог ([

)

(

= 0; & <

2-й спос!6

100;

'(п+&) = 111' 9 +='(п+&);

п[&] = & + 1;

)

)

$

//

&++)

+= п[&];

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

2'.(ипам|тпе оголо]пеппя

лшасив1в. |[|д тас комп!ляц|[ коду для стати1!1|о ополо1пе||их пдасив|в 1{я ца€ться |]пм'ллть. .(ля ефектт4ввопо впкористаппя па1ц'ят1 признанене лш::;гм|чне оголотпення 1шасив1в' а са1ше: | )(

)]'р&1иного

<тип вказ[вника> *<на3ва> пеш <тип зм!нноР[<к|льк!сть>|, =

[1ертп| чотири елементи масиву г!э1 були про!н|ц!ал|зован|, _ н!. 1!1асиви символ!в детальн!-е розгляве},1о у нас_ ре1пта

тупно]шу параграф1.

100;

!п!

]п!$=0;

шу|'!, 1!1етодо1ш

.|

|;

(& = 0; & < (

/| 1-йслос!6

|1} :: ::

]|!сля виконавня ц1е! коматтдтт буде вид!лена неперервна ::гса па:и'ят! о6сягом в!:оо|(тип зм!нно1)

* <к!льк!сгь>

,

т3


масиву вка3уватиме на початок ц1е1 д1лянки. 3 динам!тт{о1о зм!нно1о мо}кна вико!{увати операц|[' визнанен1 для даних в|дпов!дного базового типу. |{1сля опрац1оваг1ня масиву вив!льнити пам'ять 1шо}тсна за допомого1о команди 1 ]{азва

{

гап0оп!:е(); с!гвсг(); |п{ у[1 0]; соц| << ',ёекмнда^\{ 1(йьк|сть виклик!в \п,,; !ог (!п| 5 = 0;к 0; & < то; к1]]''"'',",. ', = {

ёе!е|е[] <назва вка3|вника на масив даних>;

у[к] = гап0оп(з0); к+1.<<"\|\1"<<

||!д нас вив!льнення па1и'ят| розм|р ш{асиву зазначати не

потр|бно. Розв'я'тсе:шо 3адачу з прикладу 1, використову1очи динашт|чний розпод!л пам'ят! *п !п| = пеш |п| [100]; !ог (!п1 5 = 0, [ = 0; & <'100; {

-(п+&) = 4;1' 5 += *(п+[);

// )

к=0;

,'\п,,;

//

}

або $

+=

у[*];

$=.<< 5; & < 10; &++) |! ("(у + к) > пах;

соц| << "\п пах

масцв

9е1оп();

-

,,

тпах:

-(у

+ &);

)

//

Розв'я}1семо 3адачу про

. |)]|(:'|'увача'

8цв!льняемо пам'я/пь

3а допомогок) динам!чних 3м!нних

1у!о}кна

надходять на Атс за А-ту секунду. |[рипустимФ, 1{Ф ун - в14падкове число з! значенням в1д 0 до 30. !['творити тутасу!в у в десятьма елемента1ш|1 (н : 1, 2, ..., 10). Фбтислити суму викли. к!в за пертп| 10 е роботи А1€. Бизначити ш|аксимальну суму виклик!в' як! над|йтпли за деяку одну секунду. Бивести ро. зультати обчислень. 3оуваэсеюня 3' ,{ля того, щоб отримати ц!ле випадкове число ! д!апааону в!д 0 до /}, мо)к|{а скористатись функц!ето гап0оп(п)' яка описана у модул! з{01!б.}:. 1||об п|д час виконання прогр&. ми коя{ен ра3 отримувати р!зн! значення' перед використа1{|{' функц!{ гап6оп() треба записати функц!то гап0оп!ае(). /|

1роарама ёо за0ан| про

А[€

2!'

''.р'*"'р.*

1роерама А7€

//

розв'язати 3а_ шочергового опрац1овання одно|о програ1ио1о дачу деяко| к|ль_ кост| великих 1иасив|в (яктцо вс| п[асиви не мо'{сливо одночасно ввести у пам'ять). 3адану ро3в'язу1оть так. €твортототь масив' наприклад, *паз1 = пеш <тип>[<к!льк!сть>] ! ошрацьовутоть *паэ1 диттатш|нн| зм|нн! , -(паз1+1), ... Бив|льнятоть па1ш'ять ёе|е|е[] па51 . створ|о1оть й опрацьовук)ть еле1шенти другого масиву *па$2 - пеш <тип> [<к!льк!сть>] | т.д. 3а0оча -1 (про Атс). }1ехай ун _ це число виклик!в' як!

#[пс!шсе <|оэ{геап.[:> #1пс!ц6е <соп!о'[> #!пс!цёе <$10|!ь.п> мо!6 па1п()

,,\п

{&] <<

!ог (!п( пах = *у;

8цё!лясмо пам'я!пь 0ля сгпа ц!лох носел

// @працьовуемо

)

ёе|е!е[] п;

ооц| <<

3т;; ._ \, ? ^,,'

1

#!пс|цёе .;'.,""'.|3,кор #|по!ц6е <соп!о.!т> #!пс|ц6е <$1с!!ь.ь>

А?€, викооистоп\'итгт' '{\*.--яких" *."'"Рстову1очи функц|{

ц сп

ан ням фун кц| й

!п!

5цпа(!п| у[1о|); |п! мах(|п{ уг10])| то1ё па!п() {

гап6огп!:е(); с!гоо(); .п! у[10]; сош| <<_,'@екунда \! (льк|сгь виклик!в [ог (]п| 5 = 0, & о; к .:о; . = к*]!||!!'!^!о {

у[}<]

=

соц| $

гап0оп(30);

<< (}<+1) <<,,\{\{,,<<

}

=

пах;

'пах соо!

}[}<]

<<,,\п,,;

$цпа(у);

сош[ << ,'\п $=" !п|

\п,,: \|! ,

=

$;

мах(у);

<<

9о1с|();

<<

,,\г:

пах

=

,,

<< |пах;

)

|!п{

5шпа(!п| у[10]) {

|ог (|п|

9 5

ге!шгп 5;

=

0,.к

= 0; & < 10; |<++)

+= -(у +

}<);

)

74 !о


//-.

-"

]п| мах(!п{ у[10])

3ш0ача' 3 (про 1шасиви з р1зно:о к|льк1стдо ет:е:шепт|в). )['творимдсив у' елеметтги якотю зада:т[ фортшуло:о у- : 10сов тп * 2, 1-, 2, ..., 7, та мастлв в елеме}пга:ши 8 ''| €п: п2 |'{, , - 1, 2, ..., 9. 1,|||ис]|'тту' в цих масивах суми елемент1в 6|т:ьтп:тх, Ёэк 2. Бпн('(:'|'и на екран ре3ультати о6числень. '|']|

{

!п| [=0;

|ог (|п| пах

=

*у;

!| (-(у +

ге|ц]п пах;

& < 10; }<++)

[)

>

пах) 6д1

=

-(у

+

[);

)

//

А||асствш р!зно7 0овжцнц #.пс!цае <!оз!геап.|> #!пс!шсе <соп!о.[т> #!пс|цсе <па!|.б> *ёо{1пе [|у 7 #6о'|пе ш9 9

3а'0очо 2 (хцо створеппя новопо 1иасиву). }творити !у1аеу1в у' еле1ше1(п!1т якопо обт*1сл1о1оться 3а формулою !ь: 1п(Ё + 1) - 2, де &: |,2, ..., |о. ||обудуватт: масив' який складаеться 3 в!д'е}дних еде1|{еят!в 1шасиву у. вивести реаультати1 о6чу[слень. $!кщо 1шукат1их величин не1шае' то вт4вести про це пов|домлення. !|' наступн!й програтш! зтут!нна 7} ви{}начае к!дьк!сть в!д'о1у!-

них елеш!епт|в у

||оа! Ру(!п| гп); |!оа| Р9(!п| п);

уо.с ш|уогу|у('|оа| ('')(!п{ п)' .'

{|оа| 5шпа(||оа| то[6 гпа!п()

ново1шу :шасив|.

!! |гпворення масшву #|пс|ц6е <!о$!геагп.ь>

'а, "" -' |п!

п); ||]'

- пеш |!оа|[}т!у]; << ,,!!!асив |:\п.;

соц|

0{могу|у(Ру, у, [!у);

то!0 гпа!п()

,у -9

$ = $шпа(у, [т|у); соц| << "6ума елемент!в б!льших'

= пеш {]оа1[|"|];

'!оа! соц| !<++)

соц|

'(у+к)=!о9$+1)-2; << к << '\|' !| (-(у + &) < 0)

{-(ч + п)

..

+

&);

=

$;

= $шгпа(9, !т!9);

"€ума елемент!в 6!льйих,

7т],ж

,,

$;

<<

)

|!---------------||оа| Ру(|п| п)

п++;}

)

ое|э|е[] у; соц1 << \[!|асив 6:\п'; !ог (& = 0; & < п; к++) соц| 6е!о|е[] 9;

э' у масив' 6

,' <<

6:\п.;

ш9); $

6е|е|е[] 9;

'(у + [) << '\п";

='(у

<<

=

у маоив!

{!оа![|,|9];

.\пйасив

ш{уогу1у(г-9, 9,

{

соц|

'9 - пеш

<<

|

н|ж 2,

ёе|е!е[] у;

= пеш

]п| &, п; ']оа| '|оа|[ш]; соц| << \[\]!асив 1:\гт'; (к = о' п = о; & < 10;

{

|!оа1!=10-соэ(п)+2; <<

к << "\|' << -(у

ге|цгп

+ &) << "\г:";

3. Бкаа!вн|!к|[ ца фупкц![. Ёа практиц! виника1оть 3адач| одБакового опрят\[ован[{я !ласив1в в р|зното к!льк!стто елеш!ен_ т!в. Розглянемо' як просто у мов! €** под!бн! задан! ро3в'я3у1оться за допош[огото вказ!впик|в. )[' паведен!й нихсче програпл! для виз1тачен|1я еле1иент|.в :шасив!в, тцо обнисл1о1оться 3а допомогото р!вних формул, викориета'{о тип даних _ вказ!вник на функц!:о: <тип результац> (*<назва') (.тип арцменц 1>, <тип арцменц 2>' ..'' <тип арцмент п>)

{;

) ! !________----__--

)

76

'|оа|

{

#ёе||пе ш 1о

'ог

п);

||оа| $; {!оа| *у

#|пс!цсе <па!}:.|:>

|[оа|

-:,'|п|

!!оа| Р9(|п! п) {

[|оа|[=п*п/2; ге|цгп !!

!;

)

--------------,-

у о

!

с

ш

1уо гу!у('| о

а' |;;'|;;;;]:й:;;;;;;"'-"-'

{

!ог(!п|!=0; !<п; -(у+;;=11;;' соц| << ! <<

!++)

{

)

,\1-

<<

,\п"; ![!] <<

)

т7


||---------

*("(<назва вказ!вника>+<зм!щення

|!оа[ $шпа([!оа| *2' !п! п) {

!!оа1 5;

!ог(!п|!=0; !<п; !| ('(а +

ге|цгп 9;

')

!++)

> 2)

5 +='(а

+ !);

,

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

... [.Рш']

]посш.ву:

Ёапрттклад' елеш{ент -(-(0оба+2)+15) розтш|п4еттий на перетин! !! го рядка та 16-го стовпця. |{!д нао оголотпення двовишт|рн! масиви 1цо)кна частково :пбо повн|стто |н|ц|ал!зувати. [1ршкла0 2. Фсолосимо | про|н|ц|ал|зуемо двовим|рний мла,'г:пз ц|лих чисел ]п1 ьа!![2][з] = {4'

!

5' 3' 3' 5' 2|.

випадку елементам нада}оться 3начення так: ба!![0][0] = {' ьа!|[0][1] = 5' ьа!![0][2] = з' ьа!![1][0] = з' ьа![[1][11 = 5' ьа!|[1][2] = 2. {вовим!рЁ у1асиву!' авто1\[атт!!]но 1н|фал!зу:отъся' по рядках"' ';тлб'го спочатку тшодифйуеться зовн|тпйй (праз1лший) |ндеко . }1адавати значепня еле1шентам 1шасиву ш!о}*сна 1 так: 'гакошту

!п| ьа!![2][з] = {{4' 5' з}' {з' 5' 2}};

,

де р1' Ра, ..., !ц 3а.{атФть ро3м1ри для ко'*с1{ого виш[1ру. $|льк|сть |ндекс|в ви3начае вим|рн|сть масиву: двовим!рн! 1цасиви 1\[а}оть два !ндекси' тривим|рн| _ три | т.д. ]['с! багатовим!рн! ш[асиви моэ*сна ро3глядати й опращьовувати як одновим!рн!. Ёашриклад' триви1и|рний масив эа![5][20][30] ш[о}кна 1нтерпретувати як п'ять масив|в розтш!ром 20х30, а |нтп| _ як 20 одновим|рних 1шасив|в' як| м!стять по 3Ф елемент|в. Ёадал!, для простоти викдаду' розглядати}!е]шо двовитш|рн| масиви. Блештенти двовим|рного масиву ви3нача1отьея |мене:и :иасиву та двома |ндексами: пертший |ндекс означа€ номер рядка' |нтший * но1шер стовпця' т{а перетин| яких розм|щений едемент. Баприклад, оголоси1у|о масив 1п1 0оба[24][60]. Б|н м!стить еле1у|енти ц|лого типу ! складаоться з 24 рядк1в ! 60 стовпц|в. 8лештент ооба[2з][59] розтш!щений на перетин! останнього 24-го рядка та останнього 60-го отовпця (нумерац1я !н0екс1в масшву завэус0ш почцнае7пъся з нуля). .(вовишт|рн| маоиви комп|лятор роаглядае як посл!довн|сть одновишл|рних. 1отиу до елемент|в двовим!рного ш:асиву, як ! для одновиш:!рних, мо}кна тако)к 3вертатиоь чере3 вкаа!вники. )[' такотшу вишадку це вказ!вншк н(' вка3'вншк о0но;п1рноео

по рядках>) + <зм!щення по стовпцях>)

;:б<;

так: !п| ьа!![2][з]

=

{

4, 5, 3,

з'5'2 );

3о0ача 4 (про таблицто мно3[сецпя). бкласти програш[у для 1!!!!!осення в двовишх|рний масив р та6лиц| ш[но}кення двох чи('(,',! ! виведення масиву на екран. проерама |1|фаеор ,,.пс!цёе <!оэ1геагп.[т> ,,.пс!цае <соп!о.Б>

||

мо!0 гпа!п() {

с!гэсг(); соп5| п = 9; 1п| р[п][п];

{ог(!п|!=0; !<п;

!++)

{

!ог(!п||=0; |<п;

{

!++)

//

йноження чцоел

р||]||]=(!+1)-(+1); соц| << р[!][] << )

соц| << ''\г:";

//

"\1";

Аля вцво0у масцву у вцеля0! гпаблшц!

)

9е1с}(); )

79


3о0очо 5 (про ко!тд|!тероьку фабрику). [{ондитерсъка фаб_ рика для виготовлепня п'яти сорт!в цукерок використову€ п'ять вид|в оировини. 1[ехай норми 3атрат а,' ко'|{нопо виду сировини .| на вироб!{ицтво 1 т цукерок сорту ] задан! фор:иулото с,': |в!п{ + ! о, !:7,2, .-,5). Бивести ва екра}т таблицто зат-

3оувоэсення6. Ёехай 3адана деяк8 матри\я @а1, |' }: 1,2, ...' п. ?од| вира.зи 1: !, <7 та ! >] вивнанатоть в!дпов|дно еле_ менти головно| д!агонал|, ' елементи над | п|д головното

3а0ачо 6 (про доб5гток

рат сировини (тобто 1шасив с). Биз:татити' для я|сого сорту цукерок (!п!п) потр1бно найтдеп1це сировини (п!п) ц)етъого виду.

1:слм

/! [7роерама Фа6ршка

1шатриць). 3адано 1!1атриц|о А роз:ш|2{3 та матриц:о 6 розтш!роти 3х4. 06чиелитп !х добуток. 3 курсу математики в,.домо' що матриця с: А3 мхатптухе

1гсл;;м!р

#!пс!цёе <!оэ|гвап.[>

2|4

! |! елементи визнача}отьоя за формуло:о з - _г

#|пс!ц6е <соп!о.}:> #|пс!цёо <па|[.[>

с,1 = 2-@оьён}' Ё=7

то|6 й|п(||оа: у[5][5]); то|6 па!п()

.п ро ера м а до6угпок м агп р а ць #|пс|шёе <'о$1геап.п> //

#1пс!ш6е <соп!о.}:>

{

с|гэсг(); уу.га{у[5][5];

#се'!пе ш 2

<<

\1

1\| 2\| 3\! 4\| 5\п.;

/! |гпворшмо паблслщо 3а!пра!п (!п! ! ='0; ! < 5; !++)

'о.

!ог(!п|!=0; (

{

с!гэсг();

сорт,,; ]<5;,!++) << ''

[п| !,

{уу:тац+

к;

]п| А[|,{][й];

2 - !абв(э!п([ + 1)) ' |! 8цв!ё елементп1в 1ео ряёка -('(му!га{у соц| << ](

3 4

(

мо|0 па!п()

{

соц| << ! + 1

й

#ёе[!пе #6е!|пе

соц| << '\|\|\| 8ид сировини\г:.; '|оа1

соц!

!) + !) =

+ !) +,!) <<

', |п| в[й][(!; соц[ << ''!вед!ть матрицю А\п,;

+ | + 1;

|ог (! = 0; ! <

\|.;

] соц| << "\п';

й!п(!у|га!у);

!! 9с;лсток прцеёура

9о|с}:();

]:,|; !++) (| = 0; | < й; '!++)

|ог

!! 11ерех|ё на новий ряёок

)

соц|

<<

с|п >> А[|][]; ''9вед!ть матрицю 8\п,';

|ог (! = 0; ! <

/+4|п

'ог

(, =

|п| Ф[!т,][к];

то!0 й!п(||оа| т[5][5]) |' 1ропустпомо' {

со|'|

олр найменоле

п!п ='('у);

|ог '|оа!(!п| != 1;!< 5;

'ог

(

!п!п -

елемен'пц 3-ео ря0ка п!п)

сош[ <<

,,\п,,;

+= А[!][&]

- в|к]|]];

)

9е{сб();

сировини третього виду и.; ,, ,,Брт'; для цукерок << !п!п

..

{1.

Рпорядкувацпя 1шасив!в. 8адан| впорядкуванця даних у

м;цс:ив| }[а}оть ва'1сливе практичне 31тачення. 1|х да}1их мо}{{уть 61ти телефонн!

||рикладами та_ дов!дники (дан|, у!'р".'''-

'1

80

]++)

)

.. '\т Ёайменше 9',! соц1 << "потр!бно )

\п,,;

)

+ !) + 3);

!;

)

)

€:

}.!; !++)

о[|]{'] = 0; то1.!к = 0].[:.м' к++)€(!](]] соц| << €[!][]] <. ,,\:,,;

|++)

{

п!п =.(.(м

(;!++)

0 = 0; '! < (;

{

!| переаляёасмо |! (-('(м + !) + 3) <

<

с1п >> 8[!][];

<< ',[!|атриця

{

сорйу'|

]\:!; !++)

0;!

[ог (! = 0; ! <

сцровцнц !пре.пьоео

виёу погпр|бно ёля щгкерк першлоао

|п| !п!п = 1;

д|аго-

налл1о ц|о! матриц1.

!!

(;!+

81


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

зой(а);

соц| << "}порядкований масив: !ог (! = 0; 1 < 6; !++) соц| << *(а + !) << "\г:"; 9е{сь(); )

уо]{ $оп(!п| п[6]) {

!п|

!ог

|епр'

!' !; (! = 9; | < 5; |++)

!ог(=9;,! <6_|-1;!++)

|{(-(п+,)>-(п+!+1))

яктдй 3а 3рос!пан1!ям 3Ё.аче[ть'

{

1епр=*(п+!+1);

€6агатор!знихспооо6!вутторядкуванняданихвод1тови.

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

елеменп|в 8поряёцвання масцву мепо0ом о6м!ну

*|пс]шёо <!о$|геап'п> #!пс|ц6е <соп!о'[т> уо10 зо((]п! п[6]); мо16 па!п()

с!гзсг(); |п| !;

соц[..

"8вед!ть 6 чисел: \п';

|ог(! =0!<6; !++) -(а + с!п >>

в2

"(п+!+1)=-(п+!); -(п+|)={епр;

] )

_ це вказ!вник на пер_ тций елемент цього масиву' а функц!! т{ористувач{{ мо)куть повертати 3вачення у прогр&му не т!льки з& допо&{ого|о комац_ ди ге[цгп, а й терез вкав!впики, то у програм! сортування маси3оувоэюення 7. Фск!льки навва масиву

ву м!няомо м1сцями значення елемент!в м&сиву функц|! эоЁ()' використовук)чи вкав|вн:дки.

@

за допо1!|ого|о

Розглянемо !н:п! методи упорядкування масив!в.

]|{етпо0 м,1ш|;шопъншх елел1е1'уп]в. Розтляда1оть увесь 1ша_ с:п-:в | ви3нача|оть }то:у1ер м!н!ма.:тьттого елеме1{та. ?од| пертпиэ!

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

.!'||()ме11т тш!нятоть :п<лвий

|1

{

!п1 а[6];

\г:";

!);

83


б) не дозволено застооовувати ,|содних функц|й та операц!то

описана ста1{дартна фу:ткц|я 3оувоэюеюня8. ][' модул| в!ё1!Б'}т елементи масиву' 1] сигчвог{(), яка да€ змогуо упорядковувати натура така:

_ вказ1вник на пертший едеме}{т масиву' функц|я або функт{|я' _ стандарт1{а фун!ц!я пор|вняння пор!вняння

де

*<елемент>

створена кориетувачем'

8прави А16 ! визнанте' п|д тас яко| секунди про програму 1.1!1одиф!куйте виклик!в' Розв'яэк!ть :1г{1:],:""'""'над!йтпла максимальна к!льк!сть Результати виконання програми вапитп|ть у файл риотан11я вказ|вник!в.

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

гг)

1{ового масиву: утвор!ть ма2. 1!1одиф|куйте програму про створення елемент!в масиву у' Роз_ значень сив з м!н!маль!1ого ! максимального в'яэк|ть задачу 6ез використання вказ|вттик!в' |{ового масиву' використо_ 3.1!1одиф!куйте програму про створе1{ня вук)чи функц|! користувача вказ1вт{ики' 4. 1у1одиф!куйте протраму !-'!|фагор' використовуточи елемент|в: к!льк!стто з масиви р1зно1о про задачу б. Розв'яэ*с|ть а) без використа!]ня вказ!вник!в; б) 6ез використання функц1й користувача' 6. Розв'яэ*с!ть задачу про добуток матриць:

без використання функц!й користувача.

16. Розв'яэк!ть задану

:;г:вед!ть на екран !

про це пов!домленття' ,{,кщо тлуканих дат{их вемае' то вивед!ть на6ор|в 9}13€'[о 8. 3иконайте програму 6орцвання масиву для р!зних числа 0. в|дсортувати було мо}*сна ш{об ,'р'"р,*у т]к,

в) (ц + !) =

ц[!]

Б!

=

ж)&(-(ц+!))=ш+!

.!п| ш[10]'

з) &(ц[0]) = ц

Бваэкати, ш{о ш-масив' опиоаний як парних (неларних) едемент!в одвом1 11. Фбчисд!т' ""*у_|*'о"ток) ного масиву: а) мохсна застосовувати ли1пе операц!то %;

84

],,1ё

вказ!вники; в) функц|1 користува-

Результати виконання програми

15 з ровд|лу "3адат|'' ва1пого вар|анта.

1. Рядки си1ивол1в в|дти|ну в|д !нтших :иов !!|)огра1у[ування у €** не виз}1ачено спец|аль11ого типу для !}!!рац1овання рядк|в. Рядок си1ивол!в розглядаеться як масив

типу спаг' який зак!нчу€тьоя символом '\0' (нульщо е о311ако1о к!нця рядка. 1ак! рядки на3ива1оть ;|$(||-ря0кал'ш. стал! типу рядок запису1оть у лапках' на!||}иклад' ''.}1ьв|вська пол1техн!ка"' ''студет1тц", рядок' :г1с; шт|стить одитт символ-пропуск. !,/ сталих рядках нуль-си1ш_ .|',|()мент|в

(!]|мвол)

}|(}.,!

/1опису€ться

1

авто1иатично.

]. Б|ль:пост| котшп!лятор!в мови 6** автоп:атичт]о додае нуль-символ у к|нець рядка' тому 3азначати його не о6ов'язково.

3оувоэюення

1!1одиф!куйт"

б)(ш+|)=-(ш[!]) !:-]'-!:=*(ч[р -с, * !| -(ш[!])

14 ва:пого вар!анта в розд|лу ''8адат!",

$ 13. Ряд1си 1 д!| з ни1ии. Ёа

|* !2, де'1;, ;:1,2, 6|льтпе' 3 тих елемент!в масиву @' значення яких "'*,'9_'-9'числ!ть вивесту| о у вигляд| матриц| 5х6' 1!1асив *,Ё"у у' к!льк|сть елеметтт!в

методом вставки. |{оясн!ть тому' *_;';ш запис!в непоавильн!? ..'- ни)*сче ' 10. ,[[к! з наведених -(&ш!|]1 = ц1ц о) * :} = ч|;} а) (ш + !) = &(ш|!]) -.'.

}.'1}

у файл.

17. Розв'яак|ть задану

а) з використан}]ям вказ!вник!в; б) за допомогото функц!й користувача; пам'ят!' в) використ''у'''" динам!нний розпод!л за формуло|о 4'' _ о6чисд1о1оться якого еде1![е}{ти ,, *'.'' 7. 3адано складаеться ...,б.1['твор|ть | вивед!ть масив у' як'тй

сортування методом м!н|мальних елемент!в

}'.!!

!|[.|1{ористовутоии: а) |тшена :иаоив!в; б) ,в:т; г) динам!нний розпод!л пам'ят!.

а|з.{х{.

"".*;:т*;]1]|?"","*у

о/о,

явного чи неявного приведення типу; в) дозволено застосовувати явне чи 1!еявне приведення типу (!п|). 12. Розв'яэк|ть задану }',1! 10 з розд|лу ''3адат|" свого вар|анта' вико1;истовутони: а) |мена масив!в; б) вказ|вники; в) функц|| користувача; :') динам!нний розпод!л пам'ят!. Результати виконання програ}|и ви:;сд1ть на екран ! у файл. 13. Розв'яхс!ть задаву }ч{! 11 з розд|лу ''3адач!'' ва|пого вар|анта, ви!(ористову|очи: а) |тиетта ттасив!в; б) вказ!вники; в) функц!! користувана; п,) динап:|тний розпод!л пам,ят|. 14; Розв'яак1ть задану }[э 12 вап:ого вар|анта з розд|лу ''3адан1''.

!!1асиви символ|в оголо1шу}оть так: сьаг <назва рядка>[,4овжина рядка]; !

|[д нас оголо1пення символьного масиву необх!дно

с|;гт:с':':тяно[ дов'кини одиницк) рядка додати !;!!м|}()лу (але не у вс|х кош|п!ляторах). якщо

/{о

для ну.т!ьового масив симво][!в !!!'!!'|!()|!{у1оть й |н|ц|ал!зутоть одночасно' то дов}1сину 1ио}к}1а не !1!}!1!!!!|]г!ти' комп|лятор визначить тт. Фск|льки рядки е маси_

85


вами симв0л|в' то на3ва рядка е вка3|в}!иком на його пертший елеме11т (на пер:ший оимвол). [|рс*юла0 ]. Розглянемо оголо1пення та |н|ц!ал1зац!то рядк!в соп$! сьаг 1ех1'!11 = "ми вивчаомо програмування''; с[аг опаг

э!омо[] = "шп!уег5!{у"; 'га2а'|

[1

, яка ту|ае з}1ачення ''}1и вивчае1ио [1рогратшування'', си:швольн! масиви: э!омо (6ез за3начен!{я роатц|р},), !гааа1 (мо:ке м|стити до 10 символ|в) та1та7а2 (до 39 сиш:1ех11

во.т:т|в).

би:швольний масив з!омо тце мо)1сна оголосити так:

сБаг э!омо[1 1] = "(!п!уегэ|1у";

а6о так с}:аг э!омо[] = [ш'' 'п''

'1',

'у', 'о', 'г','э','!','|'' 'у''

'\0'};

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

=

-(э!ото+п);

3тш!нн!й {гааа'| надаоться 311ачення ''1)п|уегв!Ёу'' ! ця фрава виводиться на екра1{. ]нактпе це 1шо'1{на зробити так: |ог(!п|п=0; п<11;п++)

{гааа1[п] = э|оуо[п]; оош1

<<

!гааа];

1|'вести весь масив символ|в мо)кна 3а допомого!о команди с]п >> <назва масиву>;

$[ктцо рядок даних м!стить символ пропуску' то ко1у|анда с!п >> 3читае дан| литпе до пер1пого пропуску. 14о6 8читати

весь рядок до символу вводу' необх!дно 3астооувати ко1шанду с!п.9е1(<назва рядка>, <максимальна довжина рядка>);

Ёаприклад, с|п.9е1({га:а2, 40). 3нитати символ вводу ]шохсн& так: с|п.9е|(). 3нитати рядок раао1и !з си:иволом вводу мохсна одни1у1 1

!з способ!.в:

)

2) 3) 86

с!п.9е|({га:а2' 4о): о!п.9е|() с!п.9е1({га:а2, 40).9еф с!п'9е1!!пе(1сааа2' 40|.

соц1 << <назва рядка>;

|1оси:швольно вводити чи виводити елементи рядка мо'кна :}!|

1!' !гаа.а2|40];

1ут оголо:шено оталу

Ёивести 3начен1{я рядка на екра1] ш|ох{на за допош!ого1о ко_

ма1{ди

допомого1о 'ог

коту[анд циклу

[ог або ш}:|]е. }{априклад'

(|п1 п = 0; п < 11; п++) с[п >> -(1гааа1 + п);

Б к|вц| рядка необх!дно поставити нуль-с}1мвол, тобто *\1тааа1

+п+1)='\@';

9 6|6д|отец! соп!о.}: визначен| стандартн! функц![ введен!|'!-виведення рядк|в. Ёаприклад, 9е!с(), 9е|с[а() 3читу1оть по ()/{цому си1утволу рядка' введет{ого з клав!атури, рш|с() та 1;п;:с[аг() виводять окрети| си1у[воли рядка то1цо. } б|бл!отец! :;!,с1|о.}ц описан! функц![ для введення 9е!з() та виведення рш[в() у()]'ого рядка. ,{еталън|тше по ц! та !н:ш1 функц!| написано у

7цлв|дниках.

2. Фупкц|! для опрацк)ваввя рядк1в. ,(ля опрац1овання як| опи_

м::<:ив!в символ|в у мов! 6*+ е стандартн! функц!!, с';пг:! у тшодул! в1г!п9.}:. Розгляне:ио деяк! 3 них.

_ визнанае фактинну к!льк!сть символ!в у РяАк}' 8астоеовуеться у вира3ах; в|гса!(г1 , г2) _ команда з'еднання рядк{в 11 е в один ря' док' резулътат присвотое а:и!нн!й г1 ; в|гпса|(г1 , т2, п) - до зтш!нно! г1 додае пер|ших п сиш:вод|в рядка Р, ко:шанда; в|гсру(г1, г2) _ коп!1о€ сипдволи 3 рядка Р в рядок г1 , в|г!еп(<рядоо)

команда; , Р, п) _ коп!тое пертпих п символ!в рядка г2 в рядок г1 ' ко1!1анда; в|гсБг(г1 , <символ>) _ ви3начае пер1ше вход'1сення деякого символу у рядок г1 так: повертае рядок' який починаеться в!д пер:пого вход)|се|{ня 3аданого си1шволу до тс!нця рядка г1, 3астосовуеться у вира3ах; с:|ггс}тг(г1 , <символ>) - визнача€' останн€ вход'1сення зада_ ного си1\лволу у рядок' 8астосовуеться у вира8ах; в!гврп(г1 , Р) _ визнача€ нош[ер пер1шого символу' який входить у рядок г1, але не входить у рядок г2, застосо_ в!гпсру(г1

87


е) _ ви3начае в рядку г1 п|дрядок' що почит1а€ться з пертпого вход}кення рядка т2 у рядок г1 , засто-

!|ръсюла0 3. Роагляне1ио ре3ультати д|!

5|г5!г(г1 ,

()!'()ло1шених ниэкче

совуеться у вира3ах; - визтаачас частину рядка г1 , яка зак|ннуеться перед пер1ши1и однакови1и си1у|воло1ш рядк|в 11 та 12; э1гпэе|(г1, <символ>, п) _ вставляе п раз|в заданий сиутвол !теред рядко1и г1 , застосову€ться у виразах; э|гшрг(г'! ) - перетвортое ус| мал| л!тери рядка у велик|; э|г!тшг(г1 ) _ перетвортое ус| велик1 л|тери рядка у штал|; з|ггет(г1) - записуо рядок у зворотному порядку.

сьаг

Рядки символ|в ш|о}кна пор|внтовати м].эк собото. ,(ва рядпор|внтототь зл|ва направо посимвольно' причо1цу 'А' < 'в', [!' < 'с' тощо. "Б!льтшим увапсаеться символ' який розти|ще_ ;;::й в алфав|т| даль!це (в|н тшае 6;'льт:;ий номер у таблиц| код1в

п=21

э{гса1([.]п, !-у!у) э1гпоа1([_.!п. !-у!у. 1 0) в{гсру(г'| . !-у!у) э1гпсоу(г'1 . |у!у. 10)

[.!п =

р р п о п о р р п

= э1гс[г(!-у!у, '[1') = в1ггс|г(!-у!у''|')

= э1гэрп([-у1у. "]|ьв|в'') = 51гз{г(!-у!у. "тех") = ч1Ёо[/!

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

"цу "' г1[30] ='"; "р; !п| п;

3астосування функп!й

у!у "кс"\

= з1гпэе1(!_у!у. 'х'. 10)

}оц'') э|г!шг("! !-оуе }оц'') = = 5![цр[(''| !-оуе

= ч!ггеу1''теун|кя'')

Результат

"Р!} !!ьв!вська пол!техн!ка''

г1 = "Р|! ]1ьв!вська'' г1 = ''[!ьв!вська пол1техн.ка" г1 = ''[!ьв1вська"

р = "пол!техн!ка" р = ''!ка''

[=5 р о о р р о

= "техн!ка" = "[1ьв!в"

=''ххххххххххпол!техн! ка" = "! !оуе уоц" = "!

!-Ф!Ё

[Ф!..]''

= ''ак!нхет"

{|о0ача 1 (про дов}[сину фрази). ]['вести рядок сиутвол{в тд

3ауваэюення 2. Функц|! перетворення л!тер э|г!шг 1 з|гшрг д|тоть

ли1пе для латинського алфав1ту. [{р!м того, у деяких верс|ях мови €** ц1 функц!| мо)*суть записуватись 1нактпе: -в!г1тмг,

!!!!:!!1|1чити

його

довэкину.

{}робипло це двома способами:

_вЁгцрг.

]{' б!бл|отец| в{01!б.}: о стандартн! функц!| перетворення тип!в даних. 3окрема, функц|я а!о!(г1 ) перетвор1о€ рядок символ!в г1 у дане ц|лого типу !п|' а функц!я !1оа(<нислове дане>, г1 <система числення>) * дане ц|лого типу !п| у рядок г1 . ,(ля перетворення даних типу ёошб|е у рядок си1\11вол!в ви3начена функлц1я 9см1(<нислове дане>, <к!льк!сть знак!в у числ|>, г'|), а о6ернену д|то ви1{онус функц!я э1г1о6.

,

-р;

псп:

1зо1 =

п = э1г!еп(!-у!у)

{;

11[5]'

"_з.1415"

[!ршкла0 2. Розглянемо результати застосування функщ!й до таких вм|нних: сьаг !*т!м[] = "д"";.6ька пол!техн!ка", с}:аг

цих функц|й для

!п| п;

ёоцб!е

5|пок(г1 , т2)

!!п

з:ш|нних.

|

) за допомого}о вказ|вника пам'ят!:

*::,пглс;|

#!пс!ц6е <!оэ1геап.б> мо!6 па!п()

|/

типу

с}таг

| вид!лення ди!|{!-

!овжшна ряёка сцмвол!в

{

сбаг *э; |/ Феолосоуемо вказ!внцк на ря0ок $-= пеш сбаг[50]; |/ 8цё|ляемо пам'я/пь 0ля вве0ення ря0ка с!п >> э;

!п{с=0;

в9

|1


сош|

:ш}:!]е (-э++) 0++;

соц|

<< 0;

'ог

)

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

",{овжина рядка г1

<<

(!п| != 0;

|| (г1|ц =='

{

ёБаг -э, 5 = по{!'

с!п

!/

'р; сБат[50];

>> $;

!{

персло;й

сомвол ряёка

!/ 8каз]внцк э !пепер вка3ува!пцме !! на осгпанн|й сомвол ря0ка

ш[т|!е (-э++); !п| 0;

{ог

мо10 па!п()

соц! соц!

'оу !ог

с|п

<< г1 <<'\п'; << ".[овжина

(! = 0; ! <

9!!!ок(р'

соц!

');

'');

'ог

рядка г1 = " << э[г!еп(г1) <<'ъ'' !! 8сгпановлюсмо вказ!внцк р на перо;лшй пропуск !! у ряёц г1 /! 3 ряёка р вцлучасмо вс| сцмволц п|сля йоео !! перш;оео пропусц

!<

= з!г!еп(г1 );

= 0; ! < }| - !;,!++)

{

!! (э!гспр(р[]' р[+1]) > 0)

!! 1ор!внюемо ря0ко

у раз| погпребц, м]няемо !/ !\ м|ссцямц

// |' р[!]);

)

)

|ог

! (! = 0; | <

\;

!++) соц| << р[!] << '\п'';

)

!!}!

3. }(риптограф1чп| вадап!. !екстов! фувкц!! 8&стоеову1оть-

для розв'яаування

38дач

код}гватт1{я даних

|!((!|]ня еекрет}тост! !нфор:иац!1. 1сттуе 11аука

_

3 меток)

збере-

,сршп]поэроф1я,

-

{

с!гзсг(); с}:аг г1[] = "скоро -р; !п[ п1. п2, к'

|

,|!! |]ивчак)ться ! створк)1оться р|зн! а.!1горитми кодування |н_ ;|псл1;мац!!. Фсновн! задан! криптограф!! це тпифрування текс-

то|ё па!п()

п=0;

Бвоёимо ряёок

этсру(р[+1], п);

ще оди}1 спос1б розв'я3ан}{я 3ад&ч! 2, в якошгу ря_ розглядаеться як 1шасив си1швол!в ! функц!! для роботи 3

сьаг

вказ|внцк1в на ряёкш 0о 15 сцмвол!в

$!гсру(рш]' рш+1]);

)

|| Ряаок як масцв сцмвол,в

//

+!);

_ '|; !++)

в!гсру(п'

||одаш:о

#.пс|цое <|оэ!геап.[т> #!пс!ц6о <соп!о.п> #!пс!ц6е <$1г!п9.п>

(|п|,

-(р

}..!

{

<< р;

рядками не викориетову1оться.

! < [ч,!; !++)

>>

А]

/! 0овжцною

р[[!][16];

с}:аг гп[16]; (|п[ ! = 0;

!! 1оолук 0руеоео спова за 0опомоеою функфй

"€коро будгь кан!щли";

р = э{гс!':(г1, '

90

/! Фаолосшусмо

(

с[аг

{

*р;

|| 8цвоёцмо слово м|ж ёвома пропускамц !++) соц[ << г1[!];

#]пс!ш6е <${г.п9.ь> #1пс|ц6е <соп!о.[:> #6е'|пе ш 5

уо|ё гпа!п()

с]:аг

па ёруеоео

!/ пропуск!в

*|по|ц6е <!оз1гвагп.|>

#!пс]цёе <51г!п9.п>

=

+ 1; |< п2 - 1;

//

// с[полцц| кра[н

!! 8цзначаемо ёов>кцну ряёка як р|зноцю а0рес

3о0очш 2 (про по|шук одова у фраз1). Ёехай 3адано рядок "6коро будутъ ка1{!кули''. Бизначити дов}1сину рядка. Бивести }{а екра[1 друге слово цього рядка.

спаг г1п

п:

!| 8цзначасмо номерц першоео

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

)

{

!; == 2\ п2 = 1',

9е1сь();

= 9 - р + 1; соц| << 6;

док

(! =

1ерееляёасмо вс| сцмволи ряёка пропуск

/| |1!укаемо

]

6

#|пс!шёе <!оэ{геап.}:>

(п

" << к << "\г:'; //

)

)

!/ Феолош;уомо вка3,внцкц !! 8цёйяомо пам'ягпь0ля ввеёення ряёка

-

!++)

п++; !! (п == 1) п1 =

дов)кцна ряока сцмвол|в

!! 8каз!вншк р вка3уе на

р=5;

}<;

{

си1ш-

вол|в:

#!пс]шс|е <!о$1[еап.п> то1{ гпа!п()

! <

п;

6удгь кан!цли';

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

в локальних чи

91


.(ревнеримський 1типератор {езар кодував сво! секретн1 вказ1вки так: кох(на л|тера тексту за:ш!н:оваласъ на четверту п|сля не[ л|теру з алфав!ту. ?акий шифр назив&€ться в криптограф|| :пифром з1 сталим зм|щенням (тут 4), або тшифро:ш в

одни1!| кл}оче]и.

3о0очо 4 (про |пифр |!езаря). €класти програму ддя кодування деякого тексту до 5Ф символ|в тпифро:ш {езаря, затш!-

нив1ши ко'*сну л|теру на Р-ту (наприклад' четверту) п|сля не[ л|теру з алфав|ту. |]й алфаз|тотл розулш|ти таблицто //

"'*"

1роерама !{о0 !-|езаря

#!пс]шёе <!ов1геап.[> #!пс]ц6е <51г|п9.ь>

А$с]!.

мо10 па!п()

Бправи 1. 6клад1ть програ1!|у розв'язування оадан! 1, використав|ци етатич_ масутв та функц!то зЁ!еп.

эсоцй

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

муван[!я" треба вивести так: "яття!]аз з яннавумаргорп'' (модиф!куйте цього програ!у1у Рядок як масив символ!в). 3. Розв'яотс|ть зад&чу про столиц! кра!н бев 3астосування функц|й з модуля в{г!п9.}т. 4. }1одиф|куйте програму (од !-{езаря, тцо6 моэ*сна було затпифрувати

д.,!я

уведений у дек!лька рядк!в. 5. 6клад!ть програму розтшифровуван}тя тексту' 3акодованого кодом

'|'(||{ст'

{

с}:аг а[50];

!(<:заря.

соц[

<< ''8вед!ть текст:\п.; с!п.9е1(а, 50); |ог (1п| &, п = 0; п < э1г!еп(а); п++) (

ц = -(а+п) + 4; -(а + п) |; =

соц|

)

<< а;

)

3о0ачо 5 (про зам1ну сл|в). 6класти програ1\{у' яка скр|зь у 3аданому текст|. гпу{ех1 зам|}тить деяке слово |.нтпиш: сдово1и тако|

}1{

дов}1{ини (ттог01 на ттогё2).

#!пс|ц0о <!оэ!геагп.|> #!пс|ц0о <$!г!п9.п> мо!6 па!п()

//

<<

соц|

''

!п| & = в11|9д1щ9161;.

!<

{

р = ${г51г(р, 1! (р ==

соц!

)'ог <<

_

(!п|, =0;,!

< &;

|/

у ря0ку р 1кщо !пакоео вхоёхсення немае, /по

//

| ряёку р зам!нюемо

]++)'-(р *;)

=

копли, |нпт|

способами: а) з використанням функц!й з б!бл1отеки в0г!п9.}т; б) без використант{я функц|й з б!бл1отеки в{г1п9.}:.

к; 1++) //

цццц;6'""1.

пу1ек;

71шрма

Фпра'с1йЁ/""' // ря0ок р ''",""',""' // 3нахо0цмо шога1 'ерс,е "'ооження шог01); !/ э1г!еп(пу1ех1)

з не! пропуски та

числами' що чергове число мен!пе в|д 0, ваповнення '|'||кого рядк& припин!ть. |[1сля чисел у ко'1(т{ому рядку запигп|ть ще од!!(! число - к!льк|сть чисел у ньому. 8ивед|ть масив. 10. Розв'яхс!ть аадав! п! 16, 17 ! 18 з розд|лу "3адач!'' ва|цотю вар|анта

''8вед!ть текст\п,,; с!п.9е!(гпу{ех|, 50); 'с|п шо!с:; ]!вел!ть шукане слово\й.; ''8вед!ть |нше олово\п,,; с!п >> шог02;

р = пиех1; !ог (!п| ! = 0;

вил}гч!ть

!!!!одяться з клав|атури. 8кщо

сЁаг шог6 1 [5], шогс2[5], пу1ех{[5о]; << <<

вЁг!п9.}:.

|:!{мволи продублтойте. 8ивести результат. 9. 1!1асив з! 100 рядк1в ! 1"0 отовпц!в заповн!ть ц!лими

с}:аг -р;

соц|

'гс:лси

8. 3акодуйте фразу так:

1роерама 3ам]на сл]в

{

соц!

6. €клад!ть процраму кодування тексту так: пертпий символ зам!нити пдо розм{щений в алфав|т! п!сля нього (тобто зам!нити з кроком :;м|щення &), коэкний ваступний символ замйтовати 3 кроком 3ц!тт\ення на ,} одиниць б!ль:пим, н|эк попередно зм!щення. Алфав!т (таблицто код!в ни !'1 фрагмент) ро3глядати цикл|чно' Ёаг:риклад, о6мехситиося алфав|топт 0, 1, ,|, 3, 4, б, 6,7,8, 9. .{ля А:2, гп:1 чиседьн!сть в!йськового гарн|зону 12290 вояк!в 6уде за:пифрована числом 85646. 1ахий лпифр назива€ться !!!шфром з] зло1ннцм 3м1щенням (а6о плшфром з 0вомо клю+алсш)' 7. 3апитц!ть програму 3ам!на сл!в без використання функц!й з б!бл!озпх А-{а,

//

вцхо0цмо 3 ццкпу на шог62

-'''-

шос111

-сшой*,)1-

$ 14.

стРуктуРи' списки, ств]{и'

чшРги' оБ'еднАння 1. т € руктд:и. (тпрутстпур0 _ це спец!альний тип ,!!{ий створ|оо

кориотувач

для

опрацтовання

д{}|1их' про |нформац||

сгб'екти 3 деяко! пред1у1етно| област!. 1ака !нформац|я мо}ке (]|{ладатися з да11их р!3них тип!в. €труктура складаеться 3 ::атбору по]ь|в _ даних р|зних тип!в' ! !! тип описуоться т&к:

92

93


Фгодосити ли1це зшт!нн|

9|гцс! <назва типу струкцри> <тип п0ля '|> <назва поля 1>;

п> <на3ва поля

{

с!таг папе[20]' 5цгпагпе[20]; {!оа1 5ёфа!!;

п>;

}

];

Фпио етруктури обов' я3ково зак1нтуеться си}[воло1!['';''. |!ршкла0 -|. бтруктуру' яка:ш!стить анкетн| дан! студент|в (пр|авитце, !1ш'я та середн|й 6ал), мох(на описати так:

9г1' 9г2,'р;

[труктцэа 1\[озке м!стити поля типу сц)уктура. 1ршкла0 3. Фголосимо структуру 9гшра1 та дв1 з:и|вн! 9гА, 9г8 цього типу. Ёехай структура 9гшра1 пЁстить поля пр1ввище' !м'я, серед:т|й ба.тт ! структуру дату ттарод}}{е11ня (б|Ё}:6ау), яка (:!{ладаеться 3 пол1в: р1к, :ш!сяць' число.

5|гцс{ 9гцра 1

$!]шс| $гцра1

с}:аг пагпе[20], вшгпагпе[20]; [!оа1 зегБа!|;

{

);

1. 11!д час оголо||]ення структури мо}*сна 3адавати обсяг пам'ят!, який займатимуть зм|нн! певного поля. ,(ля цього п!оля на8ви подя ставиться в1|ак двокрапки та 3&знача€ться ц!ле виело або стала _ к|льк|еть байт!в. ?ак| поля

с}:аг папе[20]' $1гцо1

3аувоэ:сесст+я

н&зива1оть 6]тповцлсш' Бизначити о6сяг, який займае ц1ла структура' мо''сна так: з|аео(<на3ва типу струкгури>).

}{оли у програ1и! описана структура' то оголосити зтш!нн! або вказ!вники цього типу што'{сна так: <назва типу струкцри> <список 3м!нних

!

вказ!вник!в>,

$априклад' оголосимо 3м!нн| 9г1 | 9г2, вка31вник р ддя

структу;}и з прикладу

1

9гцра'р;

8годосити з:ш!нЁ1 типу структура. $1гцо{ <назва типу

1шох{на гце

й так:

струкцри>

{

<тип поля 1> <назва поля 1>;

.{'' ,'," п>

<на3ва поля п>; } <список зм!нних ! вказ!вник!в>;

'[ктцо тип стру1{тури ви3т1ач&ти не обов'язково' а достат. !{ьо лит11е оголосити !! з:ш!шн|, т0 на3ву типу структури 1шо}1{нц [{е 3а3}{ачати.

!1ршкла0 2. [труктуру та зм1нн!. 3 прикладу 1 оголоси:у:о та]с: 51гцс| 9гшра

{с[аг папе[20], вшпапо[20];

{|оа[ эефа!!;} 9г1' 9г2'

{

|п{ уеаг,

}

зцпапе[20]; поп|[, 0ау;

б!пб0ау;

|!оа{ вегба!|; }

9гА' 9г8;

3м!нн| типу структп)&

1шо'*сна

!н1ц|ал!зувати в!дразу п1д

|[||с оголотттення.

[1рштсла8 4. Фголоси1шо та про!н!ц!ал!зуемо зм!нну 9г 5|гцс| 0гцра |

1

с!таг папе[20]' вцгпапе[20]; {!оа| эегба!!; } 9г =

{'йрмолю(', "Флександра''' 4.9};

1ут поле папе зм,.нно! 9г

0гмра9г1' 9г2;

94

так:

$|гшс|

{

.!', ,',"

ш[охс1та

1шае з}1ачення '{ртшол1ок' т:0де _ 3начення ФлексанАРа, а поде 5егьа|| _ 4,9. '{!!гпа.тпе ,(оступ до конкрет1{ого т1оля 3,м]11но[ т'|лу етруктура дае (1|сл9 4е}1е !м'я вигляду <назва зм!нно]>.<назва поля>

[ршкла0

5.

3м!нништ

|!'!/(&ти 3начення 5{гору(9гА.

9гА та 8гв з прикладу 3

:иоэкна

папе, "ь{айковський'');

ог8.Б!Ё}т6ау.0ау

= 28;

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

-р;

95


[1ршкла0 6. 0толосутшто вказ1вник р на структуру прикладу 3 та про!н|ц!ал!ауемо його. 0гцра1 'р; р = &9гА;

9гшра1

соц| << "\п Ф!рма пропонуе так! машини:\п"; соц| << "назва\| р|к випусц \1 ц!на\г:.;

{ог

р вказуо на аёросу зм|нно[ 9гА

// 8каз!вншк /|

Аш1о_0ез[(а1);

|/ 3аповнюомо 3начення пол|в вегБа|| р->зегба!! = 4.7; // па б!г!!т6ау'уеаг р_>ь!Ёп6ау.уеаг =

{

зм|нних типу структура мо}кна оголосити так:

сош! << ''\п йащини дешевш., н!ж $3000:\п''; соц! << "назва\{ р|к випуощ\г:,;

!ог(|п|!=0; !<п;

соц!

дарт1{их тип!в.

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

<<

:!!;'язок. Бле:шент однопаправленого списку складаеться {! двох !!||стиц: самого даного (насто скла.деного) та вказ|вника на !!!|ступний елепдент списку. .(ля опису описку використову1оть

'|'!.'[п

даних структура ! вкав|вттик' а саме: э|гцс! <назв а типу списц> {

<тип поля 1> <назва поля 1>;

...;

<тип поля п> <на3ва поля п>; <тип вка3!вника> *<назва типу описщ>;

1роерама Авгпомоб1п|

);

<назва типу списщ> *<назва вка3!вника .| >, *<на3ва

.

'.

,

вка3!вника п>;

|1ршюла0 7. (твор*тмо стру1стуру про р!чку (г!1<а), яка

(

1'!'|'гь поля: па{|ва' дов'*си1|а р1вки к1лоплещ>ах с;сгйн} у 1свадрат|тих к1лометрах' | поставимо

у

сБат гпа*а[15]; !п| уеаг, рг!ое; );

|' Феолосцмо функц!ю, ареуменпом уо!6 Аш1о_6еэп(5|гшс| Аиорг!се'р); то16 па!п()

яко[ с вка3!внцк на спрукгпуру

-|

Ё.,]()менти

Айорг!ое а1[п];

// @еолосцмо

!| €гпворлоемо

пд!.с_

та площа ба-

[й у в!дпов1дн|сть

списку:

5[гцс| пка

гпцп й*а

{

с}:аг па:ма[12]; !п| 0оу;

{

с!гэог();

|оп9 !п|

масцв а1 гпшпу Айорг!се

{&а

!++)

р|; .6а|!;

|! ёпворооемо поле вказ!внцк на

пцп г!*а

);

{

г!&а *е!опоп!, 'регэБ!!, *рорвге0п!!, *пощ|;

соц| << "}вед!ть марку машини, р!к випуску та ц!ну:\п"; с!п >> а1[!].паг!а >> а1[!].уеаг >> а1[!].рг|се;

96

,,\1\1,,

2. 1!оняття про сппоок. Ровгл,яне:ио структуру даних _ о0_ (о0но3в,,я3аншй) спшсок. (пшеото _ це ск!кче_ '!онаправленшй |!ий наб!р да|1их одного типу' м!пс якими палагод}|сено

#1пс|цёе <!о51геап.п> #!пс!цёе <соп!о'[> #!пс]цёе <э1г!п9.['т> #6в|]пе п 3 |/ Феолосцмо поп Ат|орг!се 5|гцс| Аиорг!ое

)

р[!].паг[а <<

)

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

|ог(!п||=0; !<п;

<<

р[!].уеаг << "й";

<на3ва елемента>[!ндекс]. <назва поля>

//

!++)

|! (р[!].рг!се < 300о)

,(оступ до пол!.в окремих елемент!в масиву зд|йсн:оетъся так:

}

,,\п',;

)

<назва типу струкцра> <на3ва масиву>[к!льк|сть елемент!в];

}

<< "\!'<< а.|[!].рг!се <.

уо!ё Аш!о_0еэп(5тцф Аиорг!се .р)

'!986;

1!1асив

(! = 0; ! < п; !++) сош| << а1[!]'паг&а << ,'\1\1" << а1[|].уеаг

11п'е!епеп! _ вказБпик (ттп: структура

н(!}]т

?

списку'

с[+

е|епеп[-> 6оу

- динам!нна

г!}ка) на потот!ний елезм|нна ц|лого типу (|п:),

97


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

1\(|стить 3начення дов'*сини

3астосову|оть список. |[рограма €писок р!к розв'язуе поставлену задачу ! детшонстру€ ос1{овн! прийоми опрац1овання списку. 0лементи сциску опращьовук)ть один за од11им 3а допомого1о команд циклу. 6понатку створ1оють описок ! вводять !в кдав|атури в нього дан!. 14об 3авертпити введення даних' доштовимося ввести нул1 для 3начень назви' дов){{ини та площ| басейну р!нки. |[!сля завер1пе11}1'{ введен}1я буде створено зайвий (останн!й) елеш|ент списку (з нулями). його сл!д п!зн!тпе л!кв!дувати' 3аздалег!дь оголосивтши 1це один вка3!вник (на попередн!й елем€Ё! €||}16. ку) | прийняв1ши рореге6п!.! -> 6а!! = шш|-!-. €уттева перевага спиок|в у тому' що вилучити заф|ксо.ваний (тобто вибраний в!дпо. в|дно до деяко! утиови) елетт[ент 1у[о'к1{а 3а допо1шого:о одно| ко. манди переадресац|! вигляду рорегеёп!! -> 6а!| =:а!!х -> 0а||. Биводимо список на екра}{. Фтвортоемо новий елемет1т ку ! вводимо в його поля дан!. [овий елеме1{т зробимо у списку. 6уттева перевага списку над ш!асиво:ш ! в цьо1иу щоб вставити яовий елемент п!сля заф!ксованого' п ли1ше дв| команди переадресац|! ! экодно! "6рудно! роботи хвостом''. Бказ!вник нового елеме1{та переадресовуемо куди вказував вказ|вник заф|ксовано елемента' а вказ|вн заф!ксованого елемента ''втикае1шо'' в повий елемент: пому!->6а1! = аа{!х->6а!|;

:а{!х->0а!! = поуу';

[

98

8пайд|ть у програт,!| м!сце, де новий елемент записуеться у список пер]1ти1ш' €аме так вносять зм!тти у |)егляда]оть його на екран|. "''""'* |-""'" ,'"поля для трьох да}{их

о)

регоб!/

поле вказ|вттика

эраф1нне зоброэсенн.я елеменп'а *е!етпеп! епцс,су;

-рореге0п|!

в) вшлутення 0оншх про АА/{!сс1с!п1 (елепенпо *эа||х) 3! спцску; регэ|!.!

е!епеп1 = рег$п.-,;

пому ]-> 6а!! 6|969д1; =

регэ|!,!- пощ!; а) перех|0

0о понатпку спцсюу ! 0олунення 0аншх про р!нку !н|про;

:#_]#'==;}}"> 1!|

(|().|!учен}|я

0оншх про р1нку !н!стпер (елеленпь *пооу!)

рис. 1| програму !|()експериментуй'" " "1,.

|'с>;з:'ляньте

н|''|']!

оа!;;

у спцсок

з !|оео елемс:нй"й 6писокр!к. Биконайте про]'р11-

99


соц|

в|епеп{ -> па2уа << "\{" << _> 0оу << '\1" << е!епеп1 -> р! << "\п"; е|епоп| = е!епеп{ _> 0а!!;

// ёлшсок р!к

|/ €тлворюемо

з|гцо! г|ка

гпцп г!*а

)

||..-..---____-_ )

{

сБаг паауа[1 2];

мо!

!п| 6оу;

|оп9 !п|

р!;

!! ёгпворюсмо поле вказ!внцк

*6а!|;

г!&а

);

,':] йр"6ыш|Ёкгай(уо:с); й'!а эййш|ч!Ё!ейеп:(уо!ё);

!/ Функц|7 спворення спцску !/ Функи!7 вцве0ення спцску на екран !! Функфя с!пворення ново2о олемен1па

мо!6 па!п() {

соц1

<<

поч, = пеш (г!ка)' соц| << "}вед!ть на3ву, Аовжину та площу ново| р!нки\г:"; с!п >> поч| -> па2уа >> пощ,! -> 0оу >> пощ,! -> р!;

-е!епеп*, -регэ|!!, -ророгеёп||' -пощ!;

$шогу1у$руво[<(мо16);

''6творення списфп"

"!ля зак!ннення введ!ть ус! нул!\п"; $1тогу|у9руэок(); !ууеэ{у[']аЁ&гап(); ${уоц{уш]щ! Ё!епеп{() // Ао66емо 0о понагпщ спосц новшй елеменгп соп,о| <<

;

е!егпеп! = регэ[!|; пому! -> оа!! = е|епеп|;

<< "Ёовий список !ревц}х!аЁ[гап();

соц1

\г':";

)

то1ё $1мофу5рузо[(то10) {

е!епеп{

=

)

-

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

та черги. €тпетс

: :

пош;

рег5п!, =

6 5шофу}',|!щ| Ё!епеп|(мо!6) {

гпшпу й*а

.

г!ка

мо16

<<

е!епеп1

<!о5|гоагп.п> #!пс!ц0е <соп!о.[г>

#!по!ц6€

пеш (т![а);

регз[т!! = е!епеп{;

{

= о!епеп1; ророге6п1! .!ведпь на3ву, довжину та плоц{у р!нки\п'; соц| <<

с!п >> е|епеп1 -> па:уа; с]п >> е!епеп|'> 6ом; с!п >> е|епеп1 -> р|;

е!епеп| _> 6а!! = пеш (г!|<а); е!епеп| = е!епеп| -> 0а!!; )

-> р! != 0); ш}:!!е (5орегФп[! '> 0ом != 0 !! рореге0п1! -> 6а!1 = }ч!('!]-!-; рореге6п|! )

#!пс!ц6е <|о5!гвап.ь> #!пс]цсв <ооп!о.[>

!! 11роерама €гпек

в|;цс| 5|аск

!! @еолосдення гпопу в[ас*

{

с[аг

сб;

з1ас&'0а!!;

{

ёоц| << "€творено е!епеп[ = регэ|!!;

ш}:!|о (е1епеп1 !=

такий список:\гт'; ш1-]|_!-)

);

5|аск -5!,-е!епеп|; уо ]6 5&огу|у$1е[(э1ас[

-э|);

{

100

101


уо!а уу|цспепп!а7!3{е1<ц(э1ас& то|6 па!п()

[5пег9а -91мофу7в|ег9ш(шо!6)

-в1);

{

спаг а;

е!епеп1 = пеш (19ьег9а);

(

3апам'ягповусмо а0ресу перо;оео елеменп'а черац = е!епеп!; с!п >> а; /! 1окц не ввеёена крапка шь|]е(а != '.')

э1 = ]',!(]!_!-;

//

5!уогш91ек(5!);

регзп!'

!у!шо[епп!а2|5!е!<ш(э1); )

мо!ё 5{моу|у9!ек(51аок

{

-э1)

е!егпеп{_>сь = а;

е!епеп[

{

спа. а;

со

// !воёцмо ёан| /!

{

е!ёпеп1

у сгпек

3ншпуемо сцмвол, увеёеной з клав!агпуро

->

сп

ш}:||е (а !='.');

е!епеп1

!/

|/

3аповнюемо елеменпц черец

/!

8во0цмо нас[пупну л'(перу

-> оа!!;

е|егпеп| = ш!..,!-!-; ге|шгп регэ[!!; )

3а6ирати елеме}1т !з терги

= а;

)

пеш (|з[тег9а);

)

е!ейеп| = пе|у (51аск); /! 8ц0|ляемо м!сце ёля новоео елемен/па е!епеп1 -> 6а|! = з!; // 1еренаправляемо вка3!внцкц е!епёп|

=

с!п >> а;

д = 9е!об();

5| = е!епеп{;

_> 6а!| =

мо!ё !у!шс!'топп!а2[в!':ег9ш(1э!тег9а

1окц не ввеёена крапка

1\[о}1сна

-!в[)

3а допо1шогото функц!!

{

шь|]о (15п != ш|,!-!-)

)

то!ё !у|шс[гепп!а7!5!е&ш(з|ас&

{ 6о

-э{)

{

е!егпеп{ = 1з[:;

// 8олунення елеменгп!в з] спека гпа !/ вцве0ення ]\ на екран

соц|

|э[

{

е!епеп1 -> оа!!; е!епеп| сош| << э1 -> с[; 5{ =

_>

сь;

-"','

)

шп!!е (Б! -> 0а!! != [(.|!-!-); )

е!епёп1 е|9гп"'1 _'

<<

)

= $1;

)

|!ереш

=

_ це отруктура даних' у як!й елемент'

аап

пертшим' 3читутоть пер1пим. 1ут д|е принцип ''перший 1шов - шерший п!1|1ов'', добре в!до:ший з побуту: черга у

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

4. Ф6'едп'ашпя (шп!оп). Фпис об'еднань у шлов! €** нагадуо структш)' а.'те !хне призначеввя !птпе. Фб'едттання слугу-

()|1ис

3ин1 то1цо.

|()ть для збер|гання (поол|довного' :те одночаст1ого) в деяк|й

Ёад елемент&1ши черги ви3начен! операц!!: занесеттня елеме у чергу та 3абирати 8 черги. )[' нерз! доступним е ли1пе н

711лянц|

9ергу, як | стек' описук)ть 3 використа}{няш! структури

н1и елемент.

[!ршкла0 8. Фголосимо нову структуру з|вники на цей тип

1э}:ег9а

та два в

5{ц]цс| |9пег9а {

с}тат сб; -0а!!;

э{ас[ 1.

|$пег9а

(5п

,, -|з}т,*е!епеп1;

!!/ цьотшу випадку' наприклад' етворити в!дпов|дну мо}кна за допомогото функц![:

|о2

оперативно[ пам'ят! комп'}отера даних р!вних тип!в. ||отреба в цьо1цу ву!'1у!кае, наприклад, п|д нас створет1ня таб'лпиц| з дани1у[и р!зних тип|в. Фб'еднання мо'{сна оцисати т&к: цп!оп <на3ва типу об'еднання> {

<тип поля 1> <назва поля 1>; <тип поля п> <назва поля п>; );

!/с! правила' як| розглядалися для опису та використп[|!|'!

(]'['руктур' д|тоть | для об'еднань.

103


3о0очо4 (про копферевц[:о)' [ля у{&ст! у конферевц|| & тако)к потр!бно заповнити 3аявку: пр!звип1е, !м'я, адре€}' }китло зазйачати' чи тре6а бронтовати номер у готел!' '{,кщо

!накште непотр|бне' то 3аписати св!й контактний телефон' б давала яка програ1шу' 3а3начити 1{азву готел1о. €творити конференц!!' з1иогу ввести отриман! дан! у баау да:тих |Фнференц!я *!пс]цёе <!о5!геагп.п> #!пс!ц6е <соп!о.[т>

4.

на

9о!е![20];

!е![7];

5. Розв'яхс[ть 3&дачу 3 (про символи), використову1очи чергу.

6.

поле кол1р (со1ог). яких _ в1д двох до чо-

1!1одиф1куйте програму Автомо6|л!, вв!в:пи

!!

!<оп1ег

!' користовук)чи:

а) списки; б) структуру;

{

ё}:аг папе[1 5], эшгпапе[1 5], аёгоэ[1 5];

ьг;

у стек посл!довн!сть символ!в. 8илут|ть !в ц!е! посл!дов_

::ост! вс! л!тери с.

9. 1!1одиф|куйте програму про конференц!по так, пдоб |{83ву готел}о

);

!п|

екра[{.

1['вед!ть

мо)ква було би вибирати !з запропоновавого списку. 8каз1вка: викорис'г:цйте команду вибору взг*Ёс1д. 10. Розв'яяс!ть задаву ].{! 19 ватцого вар!анта з розд!лу "3адан!",

(

з1гцс|

|!иводьте

'|'ирьох тисяч умовних одит|иць.

цп1оп 9о1е!-|е!

_

програм! 6тек викокайте виведення да1|их у т!й эке посл|довщо | введепня. 1!0казюо: перенес!'ть введен! дан! у другий стек' а з нього в}1{е

!|ивед|ть дан! про б!л| та вервон1 модел{, ц!на

|/

с[аг с|а:

3.9

:т<>ст!,

//

1

- преба 6ронювапо номер' 2

- н|

в) об'еднанпя. 11. Розв'я:гс!ть задаку

0о{е!_|е! бгоп; );

!,,|!

20 ваштого вар!анта з розд!лу "3адан!''.

то!6 па!п()

$ 15.

{

1п| п = 1; &оп!ег а;

1. |раф!тппй реэ[сип!. Роэглятте1шо'

шь1!о (п == 1)

::с>будови

{

ёоц[..

"\п !вед!ть пр!звище, !м'я та адреоу\г'т'; с!п >> :.папо >> 2.5шгпапе >>:.а0гов; соц| << "\п [реба житло? 1 - так, 0 - н! ";

с|п

>> а.бг;

систе}1и

оо5'

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

соц| << "\п }вед!ть назву готелю\п'; с!п >>:.бгоп.9о{е!; )

(

оош| << "\п !вед!ть номер телефону\п"; с!п >> 2.ьгоп.{о!; ";

м'! координатами

с|п >> п; )

(х, у). ||риклади

розтатпува}!ня

деяких

то-

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

)

8правш 1. йодиф!куйте програму €писок р|к так' щоб: а) ви'гучити оетанн!й новий елемент у к!нець списку; в) вотавити новий елемевт; б)

додати

елемент трет!м у списку. 2. йодифйуйте процраму 6тек так, п1об мохсна було натискати на клав!тпу вводу.

1

л|.кселя:шш. 1{|льк!сть

о!9е

104

у середовищах 6++ ддя операц!йно!

!}|(ра1{!

{

)

:

як виконув&ти граф!нн!

у середовитц| коштп|лятора [шгбо с++ 3.0. [раф|нний екра1{ дисплея складаеться 8 точок' як! мох(на ;:::св!нувати певни1и кольоро]ш чи гасити' у ре3ультат1 чого на

]!()!{рема'

!' (:.б0

_ соц| << ''\п !-!асгупна заявка? 1 _ так, 0 н!

гРАФткА

пй

час введення

ситивол1ш

105

1


5е|у1е!шроп(х1,у1,х2,9, п) _ задае координати нового раф!нного в!кна. !-|!лонисельна зм!нна п задао режим в!дс!кання зо6раження, яке

виходитиме за меж! в[кна; с!гс!е(х, у Р) - риоус коло 3 рад!усом Р ! центром у точц! (х' у); агс(х, у, <початковий кр>, <к!нцевий кр>' <рад!у*) - рисуо дугу; рису6 р!еэ!1се(х, у' <початковий кр>, <к!нцевий цт>, <рад!ус>) зафарбований сектор; <горизонт. рад!ус>' е!]!рэе(х, и <початковий кг>, <к]нцевий <вертик. рад|уф) - рисуе ел!пс чи дуц ел|пса; 3адас спос!б заповнення замкнугот эеЁ[!!!э!у1е(<заповнення>' <кол!р>) област! 3алежно в!д знанення параметра 3аповнення: о заповнення кольором фону, 1 - оуц!льне 3аповнення, 2 - заповнення 3аповнення нахиленими товстими горизонтальними л!н!ями, 1о заповнення точками,'1 л!н!ями' щ!льне 3аповнення точками; |!оо6!|!| (х' у, <кол[р меж!>) - заповнюо 3амкнену область, що м!стить тонку

-

(Р),

-

479

(160,479)

(639,479)

Ршс. 2- Ёоор0цнапьц п[очоЁ 1'{' ароф|+ному екран| 64Фх480

.(ля того, що6 створити зобраэ*се1{ня' спочатку треба ти граф!нний реэ*сим. [е викону}оть так: /|

...,

(х'у);

5е1!ехьы!е(<шрифт>, <напрям>' <розм!р>) напрямок виведення: 0 розм1ри символ!в '|, 2, 3

:< ''\п !ля виходу натисн!ть на будь_ящ клав!шу,';

9е1с[т();

ех!1(1 ); )

2. Фупкц|! для- граф!пших побудов. Розглянемо функц|[ б|бл1отеки 9гар}:!ся.}:' як| використ;вуються

$е|пахх() 9е|паху() че|оо!ог() $е0(0' 9е[ю 0гарпгезц]!()

соц1 << " граф!нний режим задати не вдалося.\п"; соц1 <<''[]омилка:,, << 9гар}:еггогпэ9(егогсоёе),

се[ес!згарь(<драйвер>, <режим>) дисплея;

як команди.

3. $ольори.

_ ,о.е!'а.

3начення характеристик

в|_Аок=0-чорний; ='| -оин!й;

снпЁш=2-зелений; 6}А},!=3-6лакитний;

|_[снтсвАу

рш[р|хе!(х, у, <кол|р>) - висв!тлюе тонку (х,у) 3аданим кольором; {2| - рисуе л!н!ю д.о|,]'о"*й|; ";* л!н!ю в|д поточнотточки у) рисус до тонки (х, у); ]|!?19!}: !!пе|е](сх' ёу) - рисуе л!н!ю в!д поточнот точйи !з заданими приростами; у1, х2, у2|: рисуе зафарбований Р1]!'].' ьагзо(х1 х2, у2, <о6,смна глибина>, 'р"й'1Ёй"*; Ё) - р'оуо-.;;;;;;'';;;#динатами паралелеп!пед; ' -у1 '

|06

1{ольори задак)ть числами а6о англ!йськими

!!1"$1' у1, х2,

Р) -

ви-

режим; 0 - у раз! 3адання; повертае значення розм!ру екрана вздовж ос! 0х; повертао 3начення розм!ру екрана в3довж ос! 0у; повертао 3начення поточного кольору; повертають координати пото;ною п!ксел:я

РЁ9=4-нервоний; мАсЁштА = 5 - ф!олетовий;

х|'

як! використову1оться у

повертао код помилки, якщо неможливо 3адати раф!нний

3е|со|о(<кол!р>} - задае кол|р майбщнього зобраоення; зе[б&со!ог(<кол|р>) - задае кол!р тла;

у-1,

- 3адао вигляд символ!в, чи 1 - вертик€шьно' а також

!|113ва1ши:

в|-!'.]Б

гес|ап91е01,

горизонтально

[)шзах.

{

ооц1

-

Розглянемо деяк! функц!!'

еггогсо0е = 9гар!.:геэш!{(); !! (еггогсо6е 1= 9гФ&)

1-

с!оэе9гар}:() - закривае раф|нний режим; оц[[ех[(<текст>) - виводить заданий тексг .3 поточнот позиц[[; оц{[ех|ху(х, у, <текст>) - виводить тексг у заданому м!сц!;

,!ля оласу харакперцспцк 0цсплея

!п!90г!мег = овтЁст, 9по0е, еггогсо0е; // 3аёання ераф!нноео режшму !п|19гар}т(&90г!тег, &9поёе,',,'}

3 -

_

рису€

.р""'*й'''*

16

та

внФ9\'=6-коринневий; = 7

-

св!тло-с!рий;

оАпксвАу

- темно-с!рий; _ яскраво-син!й |_!снтспЁвш = 10 _ яскраво-зелений; !-!онтсуАш = 1 1 _ яскраво-6лакитний; !-!снтвЁо 12 _ яораво-нервоний; !-!снтв1-0в

= 8

= 9

=

]_16нтмАсЁштА = 1 3 _ яскраво-ф!олетовий; уБ!-|_ош = 14-жовтий;

шн!тЁ=15_б!лий.

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

!


<$|6!!ь.ь

#!пс]цае

9е|о}:(); ех!|(1);

!! |Фла

*!пс]цое <!оз|геап.}:>

)

#!пс]ц6о <ооп!о.б> #|пс]ц6е <9гар[!св.[> !п! па!п()

зе|Б&со!о(0); эе1со!ог(3);

гес!ап916(1 о0, 0, 3); зе1{!|!э{у!е(1

(

|п| 90{тег = РЁ1Ё61' 9по6е, еггогсоёе; !п| х' у' ,"6;ц5 = 19! !п!|9гар}:(&96Ётег, &9по0е, еггогсо6е = 9гар}тгевш!|(); ||

{!оо6$!!(200' 100' 3);

");

(еггогсо6о != 9гФ[)

зе|со!ог(14); с|гс!е(200, 10Ф' 100); 5е1|!!!51у!е(1

(

соц!

<<

"[1омилка: ''

<<

300' 200);

'

{[оо0{|!!(200,

9гар}:еггоггпч(еггогсо0е);

'

14);

100' 14);

соц| <<'\г': Р{атион!ть на будь-яц клав!шу";

эе!оо!о(0);

9е|о|т();

ве{|ех1э!['е(0, 0' 3); оцшехь<у(': до, 95' "!!ьв!в'');

с!гс!е(200, 100' 100);

ех!|(1); )

оо1с[(); с!оэе9тарБ(); :о1цгп 0;

х= 9е{гпаж()/2; у= 9етт:ац() /2; ш[!|в (га6!шэ <= 100) {

ве|оо!ог(га6|цэ/ гао!ц9 +=

'|

10);

3о0очо

)

эе|со!о(РЁР); г€сип9!е(22о'

1

3 (про граф!к фупкц|0' Ёарисувати

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

о!гс!е(х, у' га6!шэ);

1;

4$' 429, 349|;

9е{сь();

с[озщгарБ(); ге|цгп 0;

3о0очо 2 (про еплблеппу). Ёарисувати емблепду. |/ верхн1й л!в!й чаетин|' граф!нпого екрана ва чорпо1!дду фоп! варисувати бдакитпий квадрат' а в пьоплу _ чор}1е коло' зафар6оване }ковтим кольоро|ш. у цевтр! емблепди чорвими л!тератши вяписати сло_

#ъв1в

во'.}1ъв|в''.

#|пс|ц6е <в!0!|б.[:> *|пс!ц6в <!о$!геап.ь> |п[ (па!п() {

|п| 9ёг!тег = 0Бтвот' 9посо, оггогсо6е; |п!|9гар}:(&96Ётог' &9по6е, "); =

9врБгеэш|!();

!! (еггогсо0е != 9Ф&) {

соц|

<< "[1ошилка:

,

<< 9гар}':ешогтпэ9(еггогсоёе);

соц| <<'\г: }!атисн!ть на будь-ягу ш:ав!ш|'';

108

;4:=Ёз !гт2эс+!

Ём6лема

*|пс|ц6в <соп!о.б>

*!по!ц6е <9гарб!сз.}п>

егоюо6е

//

*]пс]ц6о #!пс]ц{е *!пс|ц6о *]пс|ц6е *|пс!ц6е

<э|0!!б-}:>

!![раф1к

<!ов1геап.|> <па1!'т.}:>

<соп!о.[:> <9гар}:!сэ-б> |!оа1 |(!!оа1 х);

то16 па!п() {

109


соп5|'|оа|а

сопз| !п| |1

|п|96г!мэг = |п| х1, у1; !|оа! х, у;

=

б = 2. 3.14,п = о.1; у6 = 60, уо = ацо, ?'А 50; =

0,

= $,

овтЁот, 9пьсе, еггй;6е;

'|'.'!

!

3о0очо 4 (про дипа1}[1чний ефект). 3образити екрана рух зеленого кола вверх-вниз.

#!пс!ц6е <соп!о'п>

(еггогсо6е != 9го&)

#!пс]цёе <9гар[!сэ.|> #1пс!ц{е <6оэ.}т> мо|ё па!п()

{

соц| << ,'[-!омилка ' << 9гар|еггогпэ9(епогсоёе); соц[ << ,'\п Р{атисн!ть на будь-яц *л]|;шу'';

{

9о1сь(); ех!!(1);

!п| 96г|мег = 9Ё]ЁФ[' 9по6е, еггогооое; !п!!9гар!':(&96г!уег' &9гпо6е' "");

еггогсосо = 9гар!'тгеэш|1(); !! (еггогсо6в ;= о@[)

)

ве{б&со!ог('! );

зе{со!ог(14); !!пе(20, у0, 600, у0); |'пе(хо, 440, х0, 20);

{

со0{ <<''[омилка" << 9гарьеггоппэ9(еггогсо0е); соц1 <<'\п Батисн!ть на будь-яку клав!шу";

х=?] х'|

ое1с}п(); ех!1(1 );

=1$+й*х;

у = |(х);

)

у1=у0-й-у;

эе1б&оо!ог(8!-А6(); эе1со|о(6РЁЁ|х!);

!ппх=9е1пахх()/2; 0о

поуе1о(х1, у.!); зе!со!ог(15);

!п*у=69'5у=4'г=50;

!

{, }+|(х);

у1

=у0-(й-у);

{

с1гс|е (х'

!!пе|о(х1, у1);

у

оц({ех{ху(з60, 245,,,6.3"); $е{{еп$1у!е( 0, 0, 2);

(у < 60

ош!|ех|ху(1 00, 380,,'|-раф!к функц!! у=2э!п2х+.|,');

) тшп1|е(!&б!'':!1());

,

9е{с[(); с!озе9гар[();

х)

!!

у >

9е{пац()

- 60)

5у ='$у;

| докц не на!пцсну[па 6у6ьяка клав!ц]а

)

э!п (2 - х) + 1;

ге|цгп 1цпс; ]

4. |м1тац1я руху об'екта :га екран1. .(ля |:и|тац|! руху зоб_ ра}1{ення об'екта на екран| необх!дно викоЁати такий а.'1го-

рит1ш:

1. Ёарисувати об'€кт

2. Битерти о6'€кт,

у заданфй тонц|.

3арисував1пи його колъором тла.

3. 3м|нити координати об'екта. 4. |[ерейти до пункту 1.

110

+= 5}!

1{

9е|сь(); с!озе9гар|();

=

г);

эе{оо!ог(8!-А6$; с!го!е (х' у' г); $е1со!ог(спвЁш);

)

ш}:!|е (х <= !); эе|1ех!э|у!е( 0, 0, 1); оц1!ехщ(60,245, .0-);

{]оа| !цпс; 1цпо 2-

у'

0е!ау(30);

х1 +=}:1. х=х+|.

'|оа! {'('|оа!

|!Ёфекгп руху

#]пс]цёе <51о!!ь.п> #]пс]цёе <!о5!геап.п>

!п!19гар|(&96г!уог, &9поое,,,,,); е-ггогоо0е = 9гар[геэш!1() ;

}{а чорнош|у

Функц!я

ёе|ау(п), яка описана у б!бл!отец!! 6ов.}:, при3надля 3атримки на екран! ревультат!в виконання програми !||! п м!кросекунд. Функц|[ кьь]|0 повертае 3начення хибн!сть (або 0), якщо !|{1тиснута будь-яка кдав!.1ша на кдав!атур!' або |стина (дов!.,]1'|{е ц|ле число) у протиле}1сному випадку. Бона описа1{0 у б!бл!отец| соп!о.ь. |!(}н&

3прави 1. Ёатиаллойте в центр1 екрана правильну чотирикутну п!рам1ду. 2. 3обрао!ть рух сонця на блакитному неб!. 3. Розв'яяс|ть задак| }'[е 2|, 22,23 ватшого вар!анта з розд!лу "3адан!''.

111


$ 16.

встуш до оБ'ектно-оР1ентовАного

пРогРАмувАння

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

<специф|катор доступР: <тип поля 1> <на3ви пол!в 1>;

.'й,',оля

!!'1

с!азэ 7Ро!п| {

р!о|ес|ёс:

!п| х,у;

пол!в }п,!>; <декларацг' чи описи метод|в класу>;

1Ро!п1(!п| а' !п| б); мо!6 @п() {Ргаш(9е|со!о());}

то|6

у|г|ца] уо!6 9гаш(!п! {рш1р|хе!(х'

рг!та|е

рго!ес!е6 ршб!!с

пох!днцх клас1в 4оступн1оть для будь-яко! зовн!тцвьо! функп|!

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

1\2

;)

со!оф

почц

/! Ршсус

-

ь

малюо |т кольором фону

почку кольором со|ог

у' оо!ог);}

!

на ёу вназ

]]птачення кл1очового сдова у!г|ца| в опис| 1иетоду 9гаш() буде по'!()|1ено

них{че.

3авначи:шо' що 3начення пол|в класу баэкано з:ц|нтовати за /\()г1о}1ого}о тшетод|в. ![априклад, з:и!нити розти|шдення точки мо)кна 3а допомого:о методу [т:|оме. |{оза описом класу 3аголовок 1шетоду шлао такий вигляд:

|

|.'1

.назва класу>::<на3ва методу>(<списокформальнь:х параметр!в>);

!

Фпитше:шо методи створеного клаоу: 1Ро!п{::1Ро!п1(|п| а' !п| ь) {

х=а; у=ь; )

уо!6 [Ро|п{::]ч:|оме(!п| 6х' !п! 6у) {

Ф1|0;

х += ох; } += 0у; Фп();

Аоступн1сть ли1пе для метод1в класу .(оотупн!сть ли1пе для метод!в класу т8 метод!в

?од! за 3а1![овчуванням

// 8шгпарае

!

);

Фпис

Б опис! класу специф!катор доступу

Рцсуе [почку попочнцм кольором

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

зовн!гпн!х в:ш!нних. €пециф!катори доступу описук)ться так: постутгу

//

|/ |1ерем|щае [почц на екран! на 6х вправо то!6 йоме(!п| 6х, !п! 0у);

класу е функц|[, як! визпанен1 для пол1в чи

€пецпф!катор

@#()

|Фор0анагпш

/! |н!ц!ал|зус поля коор0шна{п чцсламц а

{9гаш(9о{б&со!ог())

);

1!1етодами

//

рць]|с:

;

[ч!> <на3ви

точки. Фпис кдасу 1Ро!п| мае такий вигляд:

пдо''се

актив![и1ш е специф|к.тор рпта["'

)

3шл|нну (о6'ект) 1Ро|п1

п(1

1!1етод

класу оголошу,оть аналоЁчно до |нтших клас|в:

2'24)' п(1 00'200);

класу викликатоть так:

<назва об'екта>.<на3ва методу>(<список фактинних параметр!в>)

Фголосити й використати ек3е1![пляр

!|1!' наприклад'

Ро!п1

;

класу 1Ро!п| молс-

так:

}Ро!п{ Ро!п|(50'50); Ро!п{.@п();

Ро!п!.йоуе(35' 70); Ро!п|'о1'();

|] () ь+

113


або за доцош{ого1о ди|та1ш'чних 3ш[!11них: [Ро!п{" Ро!п{Р1г

['<;плу

|'Ро|г":1&'

Ро!п1Р1г->0п(); Ро!п1Р1г->]у|оуе(35' 70);

Ро!п1Р!г->Ф1{();

,{ля клао!в ви3наче}тий спец|альний метод орега|ог' & <тип> орега|ог<символ>(<формальн!

в опис| операт0р-методу орега{ог() викориетовуемо п0си.'1ання Ёотианда ге1цгп 1шае повертати екве1шттляр (знанення з:ш|н::сл|) типу ]Ро!п|. Фск|льки на момент опису класу !:и'я зм1но! !{|,ого кл&су нев!до:ие, у с++ |снуе спец|альне кл|оч0ве слово |Б[в - вказ!вник на ц1о ам1нну. '

= пеш Ро!п1(100'100);

параметри>)

{

са1ше:

2. }|'спадковувавня; )/спадковування вд|йснтоеться так:

<т!ло методу>}

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

с|а95 <на3ва нащадка>

:

<специф!катор достпу успадковування> :<назва предка>

{

<додан| поля класу>; <декларац!| чи описи доданих

!

перевизнанених метод!в>;

)

|1)

,(ля визначе11!1я мо)*сливост| доступу до елеш[ент!в шох!дно_

класу

керутоться

наступ}{о}о таблището:

#|пс]цёе <9гар[!сэ.}"т> #|пс|ц0е <соп!о.|:>

#!пс!ц0е <э!0!!б.[т>

с!аээ 1Ро1п{ (

рго1ес[ес: !п! х' у; ршБ!!с:

[Ро!п|(!п{ а

=

0' !п| Б

= 0)

{

х=а; у=ь; уо;с

"''6

|{ро!лтоструетшо меха:л|зм успадков}|ва1{ня створет1ня1ш |ерар_ _ клас!в ! ''коло''' ,,л!н!я'' ,'пря:ио_ |(утник'! (див. рис. 3).

ог}с)

х!.пного дерева !н:ших клао!в

о'$'"*(9е*со!о());}

}Ро!п*

{[гаш(9е|б&оо!о());)

у!*ца] уо!ё 0гаш(!п| оо!оф {рш{р!хе!(х'

-------'/} €!го1е

у' оо!ог);}

[Ро|п1& орега!ог()(!п! |'|п!

|)

{

х=!'у=|;

ге[цгп -|п!5;

! !

18,ео*

);

мо16 па!п() !п[ 0ог!уег = РЁ]Ё€[' 9по6е, еггогсо0е; !п!!9гар[(&9ёг!мег, &9по6е,''''); |Ро!п{ Р;

гап0оп!ае();

'ог(!п| 9е{сп();

!=

0;

! <

1000; !++) Р(гап0оп(!)' гап6оп(!) ).9п();

о!оэе9гар!'т();

9 ц|й

)

програм! дл'т зада:{т1я ко0рдинат точки вик0рист0ву_ е:шо орега1о(). ш{об 1шон.снд. було застосувати' н&11риклад ко1!танди Р(30'80).оп() або Р('!00,200)'о1'0' орега1ог() м8е }1а.,1е]*{ати т}1пу [Ро!п!. 114

!Бпа !

)

{

\*- -\.=

$лас

Рше. 3' [ерорх1*не 0ерево клас!в

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

115


ни пря1!|окутника 3ада1оться координата1\[и точки 1 11 8м1щет1. ням. для ус!х пох|дних клас|в реал|зац![ ш!етод|в @п()' Ф{{() та 1т4оте() 6удуть од}{аковиш[и' тому перевизначати [х не потр1.бно. !(онструктори та 1иетоди рисування ус!х успадкова|1их клас!в р|зн|. 1о:шу !х необх!дно переви3начати. Фголотпення й реал!зац!я класу ]6!гс!е мае вигляд: с[аээ 1Ф!гс!е:рц!!1с | Ро!п1 (

]п|

г;

//

ршБ!|с:

|@!го!е(!п| а, 3п| б' !п|

у!г|ца] уо!ё 9гаш(!п| );

]Ф!гс!е::16!гс!е(!п| а' !п1 б'

с);

оо!ог);

1п|

Раё!ус

// |н|ц|ал|зуе

//

поля клаоу

Рцце коло кольором со!ог

1Ро!п1::9гаш(!п| со!о0 {рш{р!хе!(х' у' со!о0;}

1{об уникнути ц!е| ситуац1|, в опис| методу 9гаш() у базовикористовук)ть слуэ*сбове слово у|Ёца!:

}

у!г|ца! уо]ё 9гаш(!п| со!ог);

цьошлу

уо!6 [6!гс!е:: 9гаш(1п| оо!ог) {

ве|со!ог(со!оф; с|гс!е(х' у, г);

Буёе наросоване коло

механ!з:и називатоть 0шноуш1нюшлш, а6о п|зн]:п 3в'я3уа 1иетод 9гаш() _ в|рпъуалънш1'1 1иетодом. 3о0очо 2. \|арпеувати десять ко|{центричних к!л' як| ма:сгт'ь оп!льний центр посередин| екрана.

ош|{,!я]}0,

г);

)

Б конструктор| [6!гс|е в!дбуваеться виклик батьк|вського конструктора' який !н!ц|ал|зуе успадкован! поля х ! у. Фголотшення клаоу 1!-!пе мае такий вигляд:

#!по!цёе <9гар[!сэ.Б>

#!пс!ц6е <соп!о.Б> с!аэз 1Ро!п!

с!аээ ]!-!пе: ршБ!!с [Ро!п{

{

рго|ес!е{:

]п| $}:!{!!,' 5}:![11; !! 3м|щення 0руеоао к|нар !! (\1 ; у1) | (\2; !2) - коор0шнагпо к!нц1в в!1р!зка рц6!]с: [!-!пе (!п| !,1 !п| 11' !п| )€' |п| {2); {

' у!г[ца! уо!0 9гаш(|п[

со!ог);

// Ршсуе в|1р!зок

ршБ|3с:

кольором со!ог

!'

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

!.

!п1

х,у;

тРо!п|(!п| а' |п| б); то|ё Фп() {}гашл(9е1со!о());} мо!0 Ф1!() {9гаш(9е1б[оо!о());} у!г|ца| уо[а 9гаш(!п| со!оф {рш{р!хе!(х' у, оо!ог);}

', ]Ро!п1::]Ро!п1(!п| а' !п| б) {х=а; у=$;}

с!азз }€!гс!е:

ршБ!|с [Ро|п1

{

!п| г; ршБ|1с:16!го!е(!п| а' !п| б' !п| с); у!г|ца[ уо16 9гаш(!п| со!оф; );

[@!го!е::[Ф!гс!е(!п! а, 1п[ б' !п| с):[Ро!п!(а' б) {г = с;)

уо!0 1€!гс|е::9гаш(!п|

со!ог)

{

зе!со!ог(со!ог);

!| вцклцкао мегпо0 Ргаш()

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

116

//

1_{ей

{

{9гаш(9е1со!о());}

9гаш()

)

эе{со!ог(со!о0;

1Ро!п|::@п()

випадку адреса виклику потр!бного 1иетоду

|!|13начаеться ли1]]е на етап| виконання програш{и. Биклик 6дптьк|вського 1иетоду Фп() класоти [6!гс!е веде до виклику в}|се !|()ревизначеного методу 9гаш():

с):1Ро!п1(а' б)

уо]6 1Ф|гс!е::9гаш(!п| со|о0

1.

Буёе нарасована почка, а не коло

:пому клас1

{г = с;}

с!го!е(х' у'

/|

с!гс!е(х, у' г); )

шо!0 па!п() (

!п! 90г!мег = 0Ё1Ё@1' 9по0е, еггогоо0е; !п!19гар|(&90г!уег, &9поёе, ""); ! = 10; ! <= '|00; ! += 10)

'о](!п|{[6!гс!е 6!го!е(9е!гпахх(у2' 9е|пац(у2'

!);

!€ гс!е.Фп();} 9е{сп();

с!о5е9гарь(); )

71.7


|{ереваги о6,ёктно-ор|снтоваттог0

ттрограш1уван}1я найб!льтп

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

$ 17.

сшРвдовищв шРогРАмувАнн,{

8++

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

118

* ддя викона}1ня прогр&1![и; Фогпр!!о _ для кош:п|ляц!! ]1рогра1т[и та створення ехе-файлу; 0еБш9 _ для 1{алагодэкенн8 програ}ди; Рго]ес! _ для створен}{ проект|в; ор|!оп$ _ д]1я конф!гурування еередови1ца; !9!пёош - для конф|гурування в!кон | роботи з ни1ци; не!р - для шадш{ня дошо1шоги |{отр!бний пункт вибиратоть стр!лка1ии пере:и!тцення кур_ 8цп

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

5[т!1{+стр1лки

61г!+!пэе( $[!{1+9е!

$[!1{+!пэей

Ф|г!+9е! 6|г!+| 6!г!+@, | !!г!+]\,! 01г!+Р90р 61г!+Р99п

- виокреш{ити чи 3!{яти виокре1шленття бдока тексту; - коп!товати блок у буфер обм1шу; _ перетш|сттттп 6лок |в тексту у буфер; * вст&вити текст !з буфера у позттаче1{е курсором шх|сце ос[{ов1'ого тексту; _ вилу!ити виокре1шлений бдок |з тексту; _ вилу{ити рядок' де е кш)сор; _ вил1гчц.дц текст в|д ки)сор& до к!нця рядк&; - вставити рядок; - перейти до цочатку тексту; - перейти до к|шця тексту

[| акорди па1у1'ятати не обов'я3ково. Фпис пер1пих чотирьох пункт головногт} менк) Ё6!| (А!|+Ё). 3. 8кщо очевидних помилок }1е1шао' програ1шу 1ио}кна ком1!|.'!!овати ! виконати (г10=+Рцп або за допомого1о комб|нац|| *:с:бпните, актллв!зувавтпи

;*::гпв|.тп

6|г!+Ё9).

4. ,Ё,кщо система виявить си1ттаксичн! помилки' то про це бм71с: негайно пов!домлено. $урсор буде в РяАк}, де допуще}[о !!!|милку'

або безпосередньо

вказуватиш[е

на позищ|:о з по1шил-

119


г

1{о!о. на екран| з'явиться

рядок червоного кольору з пов|допл-

ле}1ня}и ттро зтш|ст по1цилки' що суттево полег1шуе |! виправ_ ./{я|{ня. €ередовище пере6увати1ше в реэким! редагування | по_

1иилку 1ио}кна буде виправити. 1епер вдруге кошлп|лтототь | ви!{ону1оть програму (натиска:оть на 61г!+Б9). Биправлятоть нас-

тупну по1у[илку у раз| потреби ! т.д. 5.8ктцо синтаксичних помилок не виявлено' але отриман| результати програми неправильн|' 3а допомого}о коман71 Рцп э 5{ер омег (або гв) викону}оть покрокову комп|ляц1то. [ако)к 1цо}*ст1а просте}тситу!, як 3м!н1о1оться 3начення зшт|нних ш!;ц час коптп|ляц|[. .(ля цього викону1оть ко:т]анди 9ебш9 э \0а{с|ов э А00 ша1с[... =) вводять назву зшт!нно| э Ф[< (натиска1оть нд

2. [ирективи препроцесора. Ёаведемо директиви препрота [хн| 3начення (табл. !0):

!ц()сора

! аб лшця

,{иректива #

#0е!!пе

#е|!{

клав|тшу, переходять у реэким редагування програ1ши.

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

120

0. !шрекпъшвш препроцесора

1_{хо директиву мо}кна розм|щувати у середин| умовних директив #!'6е', #!'пое{, #!|. 8кпдо стала (умова), 3аписана у ц|й директив1, визнанена (|с-

тина), то викону1оться в!дпов|дн| команди

61/+Ё7).

6.8кщо синтаксичних помилок немае' програма буде ви_ конана. Результати 1ио)кна ло6ачити у в|кн| результат!в' для чого натиска1оть на А!1+Ё5 або використову1оть заео6и пункту )ебш9. Ёатиснувтпи п|сля перегляду результат|в на будь-яку

1

Фпис директиви |[ороакня директива. Ёе задае акодних д!й 3адае сталу або описуе макрос

#е!эе

#еп6!{ #еггог

#!|

#!!0е1

{то директиву моЁ(1{а розм!щувати у середин1 умовних директив. ![кщо во1 отал! (умови), записан| у директивах #.{ае' (#!{псе{' #!|) та #е[!!, не визначен! (хибн!)' то викону1оться кош|анди, що м|стяться м!:к лиоективами #е!зе та #епё!{ 3ак1нвуе опио директив #!{6е|, #!!п6е!, #!| )/казуе комп|лятору, що треба вивести в|дпов|дне пов!дотилення про по1иилку та переривае його роботу

||ерев|ряе умову. 8кщо вона !стинна' то вико]1у_ 1оться команди' розм!щен! до директив #е!!!, #е!эе або #еп6!!, якшто хибна _ то ц! команди не викону|оться |{ерев!ряе, чи ви3начена пев'1а стала. .$кщо стала

визначена' то викону'оться команди до директив #е!||, #е!зе або #епё!|' якщо не визначена _ ц! ко:ианди не викону1оться

#!!п0е| #.пс|цае

#!!пе

#рга9па #шп6е{

Аналог!чна до директиви

#еп0!!, але перев!ряеться' чи не визначена певна ста.'та |[|д'еднуе файл ваголовк|в 3м!н:ое л!чильник рядк|в процра1\м компйятора. ,[кщо програма складаеться з дек!лькох файл|в' то фе:о

директивок) мо}кна явно вказату!' 3 яку!х номер!в починати тгсптеоа_тт|то оялк|в файл!в. тпо пй'едттутоть

,(ае змогу 3а допомогото спец!альних команд керу_ вати мо)кливостями компйятора. !! д!я 3але}ки1'!, в1д моакливостей певного компйятора 6касовуе устат|овки вйповйно! директиви #ёе{!по.

3. !аблиця код|в А$ст1. 1аблиця код!в А$с1|

(Аптст'|сслтл

'\!суп4аг4. ёо4.е [ог [п|огпта[1оп 1п[егс!топ9е) склада€ть()'! '!1!стин: базово| 3 кодами в!д 0 до |27 1розтширеллот з оз1д

|28 до 2бб. Розгляньте таблицто код|в в|д 30 до

:! /1!!()х лс<;71::мг|

2|'л|у.

121


!аблшця

7

ш

{ 6

7 ш

э 10 11 1а 1э,

1+

15 16

1? 1-в

19

20

,' ,2

з{ 9г

дт!

#

{!*+

аз45

6

\}!

в

г6нт Р0!5 т,|\] Ёе*ч

0

т ь г

1|Ф1)ц

хуа\ вгдв шноп цчшщ а6вп

.?

д

к ш

;1

з

!

)

ж

з

11{| |1-

ъ д

кл}!н

..п_

г_г {г;ч !|!! цчц]щ ЁЁее '{ш[

1

ш

е

0

п

1

{! [_ !

г

{!

ъ

ьх

т

1

в

|

с

1. 1|о0ц А-8(!1

!

Розд!д 2

$ъ6! "|п1 в9:;

3АдАч]

вс}э ьшг{о т т{ х 'т 'аьс 5ь1:ш с

Р

1

1.1

-пдБ у|йкл туфх ьэюя жзий

1/

1''

!!!;жж!

![тд_ш

!г! + тРфх ][д1[ ь9юя

уЁо-

Р|зних 3а

23. Б!льтш!сть аадач ма]оть тхо 25 завдань. Ёо:шер 3авдан1{я' яке штае розв'язати {:'|'удент' у к0нкретн!й задан| визначаеться числ01ш | - нотшерошл ;;от1;[анта. Ёо:шер вар!анта _ це 1{о1шер студента в атсурнал1 або !{}|(].,|о' утворе;{е з останн!х двох щифр но]шера зал|ково! }{!!]{}кки. Фск!льки вар!ант|в 3авдань € ли1ше 25, | якщо ]> 2б, 'п'сг :з|д числа -{ потр!бно в!дняти 2б а6о 50, а6о 7б. .{,к:цо в умс;в| задат! ттемае 1{онкретних даних' то !х тре6а задати на с'п:!!'! ровсуд' керу}оч?1сь {! зпд!стотш. $кр!зь ви1у!8гаеться скласти |||}()граму для розв'я3ування задан!. !/ к1нц| кохсно| програми {п]||]0чити свое шр|звище' 1} утшовах багатьох задач с посилання на функц1|. ||отр|6н! г|ву::гс:1|[ сл!д вибирати в!д:тов!дно до 3наче}1ня числа п' яке !'.1',!(!]кить в!д номера конкретпого вар!анта ! та умови задан| 21. $[кщо в |,гц:::п. та6. 1). Ёаприклад' ро3гля11е1шо вар|ант : ': 3а3н&чена задан| умс::л! деяко! функц|я ! {; + :р(т), то | * 19 = :| ! г 19 : 4Ф. Фск!дь}си ще число б!ль:пе, н!эк 25, то в!д ньо1';; п:!71п.т!штаетцо 25 ! отримуемо нош{ер !ндив!дуального 3авдання и 4() * 25:1б. Фт:*се, ви6ираемо з таблиц| фушкц!то з номе|||!м

них

9 ц!й таблиц! коди в!д 0 до 32 си1швол!в, коди в1д 128 до

3аре3ервован| для сиотом.

|75 \ в|д 224 до 255 _ для

вол1в нац|ональних алфав!т!в, коди в!д 176 до 223 _ для

вол!в псевдограф!ки, 8а до]1омого1о яких 1!|о)'сна створити складн! граф|нн! зобрахсення в текстовош[у ре:*сим! ек |!ертпа ни першт! дв! цифри коду поа11ача1оть }1о1шер рядка' остання _ но1шер стовпця' на перетин| яких ровм!щений в!дний еи1ивол. Ёаприклад' чисдо 75 е кодом ведико! сько! л|тери $, а кириличн!й л!тер! )1 в!дпов|дае код 139.

,!

: 15.

|облшця 1. Функц|!

п 2 3 4

б [ 1.1

1

тема1ши 3адач е

[:п7цив|дуаль}{11х

|)

|0

!]

!2 !|!

|4

Функц|я #-{*) 9,2соз2х_|в!п*/1'1| 12'4в|п|х / 2'1] - 8,3сов1,2т эозх / 2.т1+ 9.1в!п{1'2эс+ 1) з!пх / 3"|2 + сов*2|_ 8'3в|п3* сов|2.т| / |'12 _ сов(3т - 2) + 6'1б з!плсов2.тв!п(т * |'4'' / о'85 + т,\4 !з!п(2х

-

1.5) + 3в|п4л! + 2.38

совл2в!п(2х_1)+4.29 еоэ(х2'ц + 1) _ !в!п2т - 5'76' в!п.т _ созл3в!п(л2 _ 4.2| + 4,27 !в!п12тсоз!2х\ / 3\ + 4.2! совт3 / 2,\ * еоэх2 / 1,| - 8,3з|п(3* * в|п.зс2сов*3 _ з|пт * 5,2 2в|п*я]п(2л _ 1.5)соз(2л + 1.5) _ 6

1)

123


?х_4)_ц.дц - 5,8

[[л.}вести

0,1б

4,5 0,1 + !],2сов12л

17.

- 9,7в|Б[7-}|1

9,4-Б@7!

_!!!

7.

8' 9.

*Ё;ж']:1"нт'ф.'му

р|вноб|тно| трапец|!. Фбтислити

с1шетану &2

вертпки

[1

|;;;;;;#;"1;"'а:ну#}##:т"-ж8,5Фгрн".-,""*"*, -&3 к[ по 2,40_грн'

;ы:*"'

$! п' а,:Ёгр/ ;;;;"*". потр!бн! ддя куп!вл: продукт!'в, | загальгту '*р"#**

3:.*:у-тку}{д

ма|оть доба, тиэкдень, р!к?

:';;;г;';;

;''|жгж.":::т:т, ! ?п, ;-; задано! масу[

;}"?::1^:,.:а.о. штвидк!ст:о

*ж#ъж.види

";;;"".1альну Р

:

;;;;;;ж;ъ;;

7пвп

Аз!

товар|в 3росли на в;дсотк!в. р 8ивести стар!

Ф6чтаслптц площу поверхн| 5:4пг2 та об.ем |: 4пг3/ 3 сфе_ 3а 3ада1{им рад!усом г. ри -_ 10'пт;##;;ъ;;''"" 299792 км/с. $ку в|дстань дола€ св|тдо

11. ]/вести вройайн|сть трьох сорт1в птш-ениц! площ!

трьох'тг:']Р;"

за

(в6,

44

т/га) | 9-чд-ц'д,д 3 ко}|(ного поля | з трьох "'й-]",). с;й;;;{'11"=,*"*'ц; пол|в разопт ? 12' Рад!ус й!сяця 1?40;;.'ь;;;;;;; .*-""^"' площу поверхн! 8 : 4пР та об'ем планети у : 4пг3/ ь. --

13. Фбчисду!тц

як|

напов1{1о1оть

?!ло пад&€ 3 црискорен1{я1!| 9. 8изначити шройдет*ий 1шлях }т : 9ф / 2 п|сля пертшо[ та друго1 секунд пад|ння.

т1до:и

дану{у[ц катета1ши.

!{).

пРоста проц)а1ша. €класти | виконати прог. дан! самоЁт!йн'. 1. Бв|ткова клумба_мае.форму круг&. 66чцелпти |! периметр | - :]'щу 3а 3адани1ш рад1усй.2. ]трямокутного трикут1{ика 38 "'.1:;?#11*::ч":*:-:::зу Фбчислити дов)кину ;"; ;-;;;;у крула 3а 3адани1и д!амет. ро]у1.

6.

трф,

|8. Фбчислити периметр | площу пр,я1шокутного трикут}{ика за за-

ра]иу' 3адав1|1и'(уэ*се вх1дн!

5.

трьох

круга задано| площ! 8.

1

3адата 1'

4.

роботи

бкйьки води набра:то в басейн|? !(!.8ку площу ! периметр 1шати]у{е квадр&т' описа:тий навкодо

+ 10,51

* ]1,73сов(т"6, _

продуктивцост|

6асейн,1 час ]хцьо! роботи.

4о,

дов11<у\ну г|потет*у3и та площу [тря]цокутного три_ кутника 3а зРпаними двома й''*'й'. 14' Фбчистпгти оо'# т8 пло11п/ б!'дтто! ,.""р*"; кфа, ят<що в1дош:е ребро.

1елефонн| розтшови 3 трьом8 населени1у!и шункт&ми ко11]ту,оть €1, €2, с3 коп/хв. Розтшови тривали |,1, 12, Ё3 хв в|дшов|дно. ,{,ку суму 1тарахуе коштп'тотер до оплати 3а ко'*с1{у ! вс! розтшови?

20.Ф6числутти пдощу б!чшо[ поверхн! 8:2пгА та об'ем |: пг2!т д|этски за 3ада1{о1о висото1о |а та рад!усом оспови ,". ]] | . }{в|ткова клум6а мае форшту кв&др8та. Фбчислити {! перитшетр ! площу 3а заданото еторонок). ',',2.96числтати катет т& площу ]трямокут}{ого трикутника 3а 3ада1]!}.

24.

!||-;.

нитши г|поте1{узо1о та други1ш катето1ш. Фбчислити сторот{у та площу 8 : а2 / 2 къадрата, якщо в|до;ша його д|агональ 4.

96чиелити площу б|чно[ поверхн| 8 : пг1 та об'ем у : пг2п 1 3 конуса 3а ваданото висото}о }а, тв!рното | та рад1усотш

основи г. |{о!зд !хав Ё1 год в! штвидк|стто р1 к1у|/год' [2 го!, з| тпвидк|сть о2 | ф год з| тшвидк!стто о3. [}изнатити пройдеш! :цдяхи з р|зното :пвидк|стто ! весь 1плях.

3адача 2 (про трикутник). 1рикутник 3адано координатами вер1пин А(0; Ф)' в('; та б(_/; |*1), де ! _ нотшер вар!анта. '_1) ! . Ф6чутслитц висоту !т' та 6|сектрпсу'||'". ||. Ф6члелтттта тиед|ану тп' | 6|сектрътсу'\|'5. ;!. 06чутслуттп б|сектрису '1|'' та рад1ус впис&цого кола ,'. '| . Фбчислити висоту !т., 1 мед|атту пъь. !л. Фбчислити штед|ану &6 та 6\сектрису'||'". (|' Ф6чиелтцти б!еектриоу Р', ! рад!ус опио&ного кола Ё. 7. Ф6чрхслцти висоту !ъ6 та 6|сектрпеу'\|''. |{. 66чиелити висоту }ъ6 | мед|ану тп". |). Фбчислити висоту !ъ' та рад|уе вписа|{ого кода г. !(). Фбчтаслити штед!аву га" | б|сектрису'|1/'. 1 ! . Фбчиолити висоту !т.6 та 6|сектриеу'\|'". !|''' Ф6чцслцти тшед|атту пт" | рад1уе впис&т{ого кола. г. !1]. Фбчислити висоту й6 та тшед!ан! &* |'! . Ф6чпелттти мед!апу пь' | рад\уе опис&ного кола .8. | [г. Фбчиолити мед|ану т'а та 6\сектрису'||'".

124 125


16. Фбчисдити висоту

17. 18. 19. 20.

Ф6чисдити Фбчиедити Фбчислити Фбчислити 2|. Ф6чцслити

|а"

!.

| 6!сектрису'\['а.

:..

:иед!ан! 7п6 та 6|сектршсу'1|''. :иед|ан! |пс \ р&д!ус о1тисашого кода л. висоту й6 та б!сектршсу1г|'6. 22.06чцслити висоту }т6 \ мед|аву пъ6. 23. Фбчисдити висоту &, та рад!ус описацого кола.|?. 24. Фбчпслити виеоту !о' | 6|еектрлсу'||'6. 25. Фбчислити висоту !т' та мед1ану тп".

3адата 3. Ровгалу}|сепня. |,/вести дов!ль[те обчислити 8начення фу:ткц|] 'на'че1!}тя <

,1.

'

т&

:о,

"кш' ", _ [[,-э<о:, :.о, [4*з(о), якшо де 0=с9@+о|-:овдР+т|, о ="{7;;{т, | _ но:иер вар|анта. |*|

|*|

€клаети

>

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

|{о1\4ер

студента. 8ивести його пр|звище та 1в!ц|али-

тшоделей. ,{,к вх1дне д&не ввести ко}[ер тшодел! й отри:шати характериотики: рй витуску ! ц|тту. 8вести }{омер по!зда. Бивести т1&3ви пу:ткт!в в|дправлешня т& при3наче:т1{я. Бвести пер1шу л|теру на3ви кра|ни. Бртвести 8а;!ву !1 столиф та

кйьк|сть н&седен}{я. [л. 8вести 11опдер двя ти'1{1{я. 3пвести його ттазву дво}да 1шов81ши: укра|нськото та аягл!йсько:о. (|. 8вести но1иер трамвая. 8шести 1т&3ви йото к!нцев:о< зу']ивок. '! . 8вести ттертцу л|теру ц&3ви кратни. 3ивести на3ву ко1[тишевта та |! плоп1у. н. 8вести тто]\дер тш!сяця. 8ивести ||азву шори року дво]ша 1шоватши: усра!нськото та яттгл|йськото. !). Бвести 1{опдер студе|тта у списку. 8ивести його !:ш'я. !(). Бвести йер:пу л!теру }1азви м!ста. 8ивести дов|дку про к!льк|сть населення ! площу м!ста. ! |. 8вести 1{о1иер ввтобуса. Бивести к|льк!сть 3у|1инок його 1!1ар|шруту.

!1,}.

!:1. 1,1.

|{,. 10.

17.

л|теру |{авви кра:ни. 8ивеети к!льк!сть цасек!льк!сть тш|ет ц!е! кра!тти. Бвести телефовний код райцетттру. Бивести його шазву. Бвести нош,ер дня ти}к!{я. Бивести ро3к4д пар у цей детгь. € дак! про ш|сть товар!в. 3вести числовий код одвого з вих' отри1цати довйку про ц!цу ! кйьк!сть товару на склад!. 3вести номер м!сяця. Бивести к!льк!сть д:*!в у ньому. 3вести числовий код групи. Бивести повну :|азву групи | к!льк|сть студент!в у н!й.

Бвести

лешт]я !

1тер1[1у

йсщя. 8ивести ттязву:и|сяця | шомер ква}}та.'гу. 3вести ч!ив':о з д1апазотгу в! 0 до 5. 8твести його натдтсалш*я ,рош[а

]н. Бвести 1{о1!дер [!).

мов&ми. 1}!{}. '}| !

Бвести

т{о1шеР

по!?да. Бивеоти дов!дку про час в!дшразлення.

. |}вести пер|]ту л!теру на3ви р!вки. 8ивести дов!дку про !1 дов-

кйьк|сть 1тр!(гок. !}вести числовий код суз!р'я. Бивести к!льк!сть з!рок у

эпсину |

1|!].

1!|, 'тьо1шу. !}вести 1{омер дня ти'{свя. 3:двести йото шазву |' к1льк!сть пар. !|4. |}вести номер квартири в 6удинку. Бивести к!льк|еть к|:шндт }{б.

мелпканц!в у н!й. ]{'весттт чис]то в д!апазоту мов&ми.

вц 5 до 9.

1

3тдвес:тд його зттачетлня '|'рьомд

6. {икли. ?а6лиця м1р. |[обудувати таблицло в!д_ |[очаткове 3начення м!ри, :срок зтш!3начепня та к!льк!сть рядк!в у таблиц! (10 _ 1б) за-

{}адана

:;г::г!71ностей м!шс шт!ратши.

|'!| |(!'ого

,1.!'!']| с&1иост!йно '!

126

|[вести

:|. € дан| про а8томо6й| нотирьох

тшед|ан! &6 та рад'ус вт|иса;1ого кола г. висоту }ъ" | мзед|ану тп..

|

!. !

| |

у

{о' використовук)1{и

реэ*сиш:!

д|алогу. Фформити та6лиц:о якттпй-

форлпаттт

виведен1{я.

\27


1. 1 унц|я :: 28-353495 т : |42 карати; 2. 1 1рахут !.77]85 г:0'06249 унц!й; 3. 1 карат -_ |-2 т: 2.94|2 тран; г:0.038378 драхш:; 4. 1 грйн:0.068 л; 5. 1 па*ш :54"\8 :пек: 417'33(с1ш,!_: 6. т "'"'" (брит.) : |.2 талотт : 3'785 4'546 л; 0.0347 сак 7. 1 галон (стшд: : л : 0'00012 туайута; 0.0568 8. 1 нарка : 9. 1 квартет : 29! л: 5123'24 нарок; 72.73 л:1'280'46 чарок; 10. 1 страйк

3адана 8. |{икли. Ф6численця суми зпакозм|ппого неск|н_ |!о!|пого ряду.

!|!{|]ести

||()|цуку

23)а:3а0-0;

аь7

|6) э :

25)э:5а-20.

@ь1т7+'

|8)э:2о_0;

6)э:в1п(о)+0;

э:

8)а:о2+3ь; 9) э

де

:

добутк1в'

14)а:1а-ь1;

5)э:5а0_4; 7)

су1ш 1

\9\э:||2а-ь|; 2Ф)э:2а_0; 21)

!5)э:с\9(2а)-0; ехр(3с});

|7'1а:40а-0;

,+5

э:

19@ + 0);

22)а:|п|о+40|;

13\ э -- соз(с0);

,+8

'!.

:}!{аченЁя.

!]изначити су1щ/ додатних значень функц1! та к!льк|сть в|д'е:тштих. в!д'етиних ! додатних зн&чень ллае функц!я у? !} ()бчисдити у{одудь р!зниц1 макоимадьт!ого та цер1цот0 3начень у. ()бчислити добуток в|д'ештних 3начень функц|[ у' $ як\й тонц! 1().

}{ ()к!льки !

24)э:о*ехр(0);

=п!!-6(!о , ,-'{к) , з табли| _ номер вар!анта, Ё _ц|л| числа' Функц|| | втт6рати ц!. Бивести 3начення [, а,0, 2.

. =|!

|<= т

у вигляд! 'таблиц| пар чисел х, у. 3иконати 3авдання даних в!дпов!дно до ва1пого вар|анта. ,![кщо 1шуканих

']'- Ф6числуттц суму й до6уток ус!х знанень функц|[ у, д]!я $ку[х викону!оться нер|вност\ у < -3,2 а6о у > Ф. ;!. Фбчислити до6уток та к|льк|сть ус!х з!1ачень функц|| !, Аля викону1оться нер|вност| у < _3 а6о у > 0,4, 'тких '| 0бчислити добуток ус!х в!д'оштт{их 3начень функц!! у та в?т.]начити к|льк|сть додатвих. !л Фбчислити до6уток зт{ачень аргуш[ент& (х), для яких досяга!оться тш|н!мальце та макси1у[аль1{е 3цаченння функц!! у. |'. €к!льки 6уло в|д'етшних значень? Бизт*ачити ш[&кси1иальне

!:1 ! ;{

(.г) функц!я набувае ш[акси1иадьного значення? ()6.тислцти су{шу квадратБ ус!х додатних зт{аче1{ь функцй у. Биз!!11чити' для якого л функц|я набувае тий|:шального 3начення. ()бчислити супду та к|дьк!сть додатних 3начень функц|| у.

()бчислиуп сушту вс|х 3начень функц|! !, Аля яких вико1{ут()'|'!) (:'| нер!вност| у < |'2 а6о у > 4. Бизначити 1у|аксим|1.]||)!!(| :

ь

['*т@,)"'

/(,!|{их нема€' вивести про ще пов!до:шлення. !. Ф6чутелуттц суму ттертшого й оста!{нього значет1ь функц|[. Бизначити к!льк!сть ус!х зттанень.

!|)э:о6-тт: \!)э:а_20; |2\ а : 0а;

3')а:|9(0)_а: 4\а:(о+0)21

(-1|

3адаиа 9. 1{икли. ?абулговання фупкц1| | пошлук даних.

: 18. ! ""а" ф|нгер :11.4 см 4.5 дтойм|в; : : б.? стш 2.25 дтойтц!в; 19. 1 йейд 20. 1 фут : 0.3048 мл: |2 дтойшт|в; 21. 1 ярд : о.9144 м: 3 фути; 22.\ к16ельт Брит. :0.183 кти : 680 фут|в; 23. | ка6ельт €йА :2|9.5 м: 72Ф фут!в; 24.1 дтойм: 2.54 смт: |2 л!н!й; 25. 1 мороька 1цидя : |-852 кш: : 6076 фут!в'

2\э:а0;

=

!11>ота6ултовати функц|1о у: [а+в(х) на прошт|хску [0; |] з кро_ но1\[ер вар1анта. Ревультати обчислень :с<;м й : 0.1!, де

ку6' фут|в; шт : : 0'16б шт ку6рода; 4-672 1 стйттдарт 15. 16. 1 род :2в.в ку6. ти : 1000 куб' фут|в; буд|вельний:30.48 м: 100 фут|в; 1т. т

|\э:о*0;

аь

;!|!{|чень точност|.

:-\^2-8

3адача 7. |{икли. Фбчислепця ск!нченних Фбчислити 311ачення зм!нно! 2 свого вар|анта:

2'н , де

п!' ь=7 _ (0; 3 точ1) з шрошт!этску | т дов|льне дане : потр!бно ::|стто е 0,001. €к!льки доданк|в для досягнення :;:пдано[ точност|? Биконайте програ1шу трин| для р|зних

11. 1 челдрон: 1.309 д:0'149 пека; 12. 1 сак: 109 л:1.499 страйка; 13. 1 цек : 8.81 л: Ф.|7929 сака;

т *,рд малий :3.624 куб'

ряду

- ношхер вар|анта,

уу;

1+.

Фбнислу|ту! суму

} ! !

[чет:{1тя фу:ткц|[.

()б.тпелу1ти добуток дода.тних зт{ачень | к|дьк|сть в1д'емттттх.

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

1

12в

129


1шаксима-тьцого 18. Фбчисдити модуль до6утку

з11ачень'

та

12. Ф6чпелити су1шу збитк!в, що були у 1![еясах

:и|н!:шального

!1].

встх-: в!д'еттштих значеяь фу*тсш!|'

Фб.тислити серед}1е арифметинне та'йттдо к!'тьктсть' 2Ф. Ф6чиелити с}'му ййй {"и додатнш(-3начень зн&чень функц!! у' дт$ якутх тчх 2|. 3найтутсеред1{е а!и6ш:етивне^ у < 0 або у > 1'

1_9.

цей пер|од.

викону1оть"" а т&кохс визначити 3на' ""р1'*Б"т| 22.3найтутм:н;мал|не ""'*6"*' функц!!' !!е11ня 8ргумент&' для якого воно досяг&еться' тих значе}1ь функц!| у, д][я яку[х 23. 96чттеух*'" "у*у та к!дьк!оть < 1' виконуетьоя нер!вн!стъ 8 <-у тих зн&чень функц|! !' !''|$' 24. Ф6числ'.* *:,'{*]"т" : д'буток < < 5' яких викот{уються нер1вност! 1"3 у чи в!д'емних? 2б. $кттх3}1аче1{ь функц!! 6йь:це: д'д*{"** Ёехай прибуток ф!рми аа 3адана 10. Фдновипг!рн| ш!асиви' ууоввих оди' 1о-й р1к обчисл:оетьоя за ф'рмулч ур:||$[;,.9(Ё) .{,кщо вар|анта' *'*"р ниць' де ь:1993;"1й, "', )ооз;"!-_ при' ма''1а тцо ф!рма пев1{ого року 9ь> Ф, '' *'**'{й*"*',' табли_ екран }т8 Бивести

десяти

рок:в'

БикБнати

додатково

вавдання

ватшого

;шука' ви}кче' Бивести пов!домле11ня' як1цо як1цо зб!тк|в ни прибутк!в но

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

",*;;;;й;;;-'_,;й"!' був максит!1альт{ии{ було ментпе' н!"эк 1000' ало 4. к€ йьки р.*;' |"]"_й-й!су'кь найб!льших збиткБ? бйьтше, н!гк 500 у'о? 1{оли ф!ртша "**''"' був найб;_тьптий? при6угок ]/ якотшу роц! б. 0бчиолити "упщ з6иткь. (в у'о')' 9 6<у67|Ф *й"! прибутк!в у-. 6. Фбчисдити суш:у найб!льтпих збитк!в? ли прибуток

яко1у[у роц| ф!р#а

?00 у'о?

в!д до "Ё,*''. '1. €к|льки рок!в шри6утки були ' й*й'" 8к! це 6ули роки? 8.Фбчислити"у*у.'":*збитк!в.!!/якомуроц!збитокбувнай. 200

130

ц'

(

1]найти су}ду третього та 1постого додатцих еле:утент!в.

!!' /{ругий в|д'етиний еле1![е]{т заш:!ттити :и!н!тшальтти:ш. ., 0кйьки с елеме:*т|з з:ттй!:утапьним з|{аченням се;;эед додатних? ||' 9с| додатн! еле:шенти масиву' кр!м макси1ш&ль}{ого' 3&т{ести !пт:ций 1шасив.

\

для яки]' справд)ку!о-ться умовг[ 9. Фбчис.тддти "р.у1"" збиткБ' визнан*'" ур< -650 або ур' -т8о]! у'о')' з6итк!в' ч"9'*.ут^у:6уток' 6к!льки рок|в ф!рмо 10. 8изначити су1\ди "й"Ёй:" !

,'!"оу'кБ, що бууп: у ме}т{!!!к 23^0'ур< 8500 11. Фбчисллати "у*у мада так! прибутки? у.о.). 6к!ль*', р'й!* ф;р*'

3адана 11. Фдновипл|рв! масиви та складпий полпук. ]/тво_ _ но1шер 1:::'ги | вивеоти 1у[асив у 3 елеме1{тымп уь: [о+то(Р), де ! шп1;!анта, Р : 1, 2, ..., 7. Биконати завдання ватшого вар|анта. )/ ;ш:;т! в|дсутност! тпуканих да}1их вивести шро це пов|домлення. !, [{ертпий додатнтй еле}{е:тг цомйяти :ш!сцятшт 3 макеипдаль}ти:ш.

0.

ои{тши*т .9;кий це був збиток?

була при6утковою?

14.Ф6чпелцти суми прибутк!в,- що бу4и в 1ше'*{ах у1<17Ф а6о ур> 62Ф (в у.о.). €к|лъки рок|в ф|рм{ мала так| прибутки? !{_л. Фбчисдити суму збцтк!в 1 визначи4и, ск!льки рок!в ф!ртша була збитковото? !/ якошту роц| збиток був макси:шадьний? |(!. 8изпачити найб!льший збиток. )|' яко:шу роц! ф|ртиа штада найб|льтций шрибуток? !?. } як| роки ф!ртиа пдала вайб!льпт! шрибуток ! збиток? !|}. Фбчисдити су]шу збитк|в. т{и 6ув хоч ра8 нульовий баланс? !!). Фбчисдити суми прибутк|в ! збитк|в ф!рми та |х р|зницто. Бизначити м&кси1ша.'тьний вбиток ф|ртии. ]!(). Фбчислити су]шу збитк!в, для яких с1травд){суеться }]ттова }р< _590 або ур> -336 (в у.о.). Бизначитити найб|льтз:ий прп6уток ! в яко1шу роц| в|н був отритшаний? ! . Фбчислити суму в6итк|в ф|ртии. ||' якотшу роц| прибуток 6ув найцдетттпий? 8ианачити його величину. 1''?'. 66числцти середн| арифштетитн| вс|х прибутк|в | з6итк!в. 1|!]. Фбчислити суми при6утк!в ! з6итк!в за пер:ш! п'ять рок!в роботи. 6кйьки рокБ п1ютятхэ1и цъого пер!оду ф!ршта п:ала прибугки? !|'| . Ф6числити су1шу прибуткБ, як! 6ули в ]у[е*{ах 315 < ур<958 (в у.о.). у яко1у[у роц| збитки 6ули найб!ль:ш!? }![!. !фли при6утки булпт бйьтп1, ш!ак 580, та :шен:ш!, н!шс 100 у.о? 1{оли був макси}ца.']ьний прибуток? 11

буток, а у випад"у'у|''о_ "6у;:у' 11риоутку' ц}о: номер Рок9, величина д!яль:т|еть ф!рми |1отшук *.'";:"'?;;;;;;и; ф!нансову !тротягом

-7бо < ур< 200 (в $оли був м!п|тиальпий? дох!д у.о.). Фбчислити су:иу прибутк!в ! збитк|в а& шершт| с!шт рок|в роботи та !х р!зницто. 8извач]4ги 1ша]сси1шадьпттй при6уток 3&

;

()бчислити су1иу пер]цих чотирьох в!д'етшних едемент|в. !}ивести во1}!ер передостаннього додат;{ого елемент&. !,]дештенти 1шасиву

мпсив.

п|сля другого в!д'емного 3а}{ести в

в

!нпттий

!|, |]гтайти добуток другого та четвертого елемент{в, б|'гльтпих, ::!эк 3.

|(!. [!1дксималь:ттд:1 едешхент

по:ш|вяти шг!сця:тшт з др},ти]\[ щ/дьови1ш.

!!' ()станн!й в!д'емпий едемент зам!пити найб!льц:им.

131


15. 9 ск|лькох ос!.б зароб|ток вищий за оередн!й? 16. )/ якому п!дрозд|л! менцтий середн!й зароб|ток? | 7. ]/ ск!лькох оо!б зароб!ток в!дхиляеться в!д серБднього мен тпе' н!эк на 10% ? 18. 9 якотшу п!дроздй! був зафйсовавий вайб!.тьлпий заро б!ток? 19- €к|льки ос1б працтовали б!льпте, н! э*с 5, | 1шен1ше' в!э*с 12 дн|в? 20. $кцй середн!й зароб|ток пер1цих л'ятл ос76?

Ф6чиолутти добуток другого в!д'ештного та ш'ятого елемент|в' 13' 9и трет|й додатний елеш[ент е останн|:ш у масив|? |4. 3ив€х,уино1!1ери двох най6|льт:шос едеште:гтБ. Ф6'*тсуштуц й сушгу.

|2.

15.9иедваеле1у[ентисередв!д'еш:них|зм&кси1ша]1ь}|и1у{значеЁ. ням? 14Ф 16. 1!1аксималънпй еде1у!ент цо:и|ттяти м!сцяш:и з четвертий' |' задовольняе уш[ову !ь> 17. [рет|й додатний еле1шент вам|нити макси1цальним' еле1шет{та' 1 8. 8изначити но1у|ер п'ятого в!д'емного та 19. об.'""'*.* добуток пертпих трьох додатних елеш:ент|в номери. визт{ачити |хн{ 20. Ф6числити суму другого додатного та третього елеме1{т1в' ат.друтиьв!д'етшний*,'"*"*,пом!нятитш!сцями!зтрет|ш:додат.

21. ]/ ск|лькох ос!б зароб!'ток був :шенш:ий за середн!й?

$нутй середн|й зароб|ток останн|х вотирьох ос!.6? ]/ якотиу п|дрозд!л| 6уло в!дпрацьовано б|льтшу к1льк|сть л:одино-дн|в? 1]4. \то заробив б|льтше, н|ак 100, ! ментпе, н|э*с 200 у.о.? ||11. €к|льки ос|б прац:овали два' три або нотири дн|? 1|2. 1]3.

3ав0ання п[0вшщено[ скло0ностп1. Ака к!льк!сть в|дпра!(|,ованих дн|.в найнаст|тше була заф!ксова|{а у коЁсно1шу п1д-

ни1ц.

22.!творити ш[асив еле:шент!в, 3начен}1я яких 6 ут|эк значення:ши третього та 1у!акси1!|адьного елетшеттт!в задаЁого масиву' 23. Ёутвести добуток вомерБ двох найтшен111их елеш:ентБ серед додат' них. €'71€' 24. Булзначутти с},т/гу номер!в другого та третього вц €1!!$ого

1:стзд|л|?

3адача 13. ,{вовити!рн| 1шасиви. [|ростий пошу1с. )['творити м1!сив 3 елементаму| с[ьп: п[;+тт(А) + в!п(й)[11 э(п), Ае | _ ноштер т;:п1;1анта, Р, п :|, 2, 3, 4. Бивести його на екран у вигляд| таб.г::::ц| (:шатриц!). Биконати додатково 3авдання ва1пого вар|анта.

штегтт!в.

25.3ивеетут номери другого та четвертого додатних елеме11т1в'

|. 3изначити

еле1шешт|в. ]/ п|д' 3адача 12. \у1асутв!в !з р1зпого к|льк!стк) _ ш!|сяця во|[ротяго1ш 20. 6 а в сп|вроб!тник!в, розд!л|'1 е 15 як випад' зада1{а яка к!льк|сть певну дн!в, в!дпрац|овали йи *''"'*']"ло 3| 3наче'й"* в!д 0 до 31. [енна оплата прац| ё у.о. ||одаткова ставка 2о%" !!/творити масиви !, 8, вивест|4 3начення [хн|х елепдент!в на екран та у файл' Биконати 8ав' дання по]шуку даних 0ля юоэюно?о п'оро301лу' Р.ивести пов!'

домлення' якщо 111уканих даних немас' 1. €к!льки ос!6 працтова]\и у ко}кнош!у п|дрозд!л| 6|дьтпе 16 дн!в? 2. )(то найшлентпе заробив у ко)*спо1шу п!дрозд!л|? пйроздй|? 3. 1{оплу нарах''.*,' бй'*е, н0к 100 у'о', у ко}кно1\((у п!дрозд|л!? 4. €к!льки лтодино-дн|в було в!дпрацьоватто у ко)кт1оуту 5. $кутй середн|й зароб|ток у ко)кно1шу п1дрозд!л|? н|эк 120 у.о.? 6. 6к!льки ос|б отрймали б!льтше, н!эк 50, ! ментше, 7. 6к!льки ос!б працтовали мен1ше, н1ак 10 дн|в? 8. ,[ка сума податку була сплатет{а у ко}т{т{отиу ш!дрозд|л!? 9. )(то сплатив най6!л|тший податок у ко}тснош[у п!дрозд|л|? 10. ][' ск!лькох ое|б податок перевищив 2Ф у'о'? 11. .![кий середн|й податок був у коэ*снош:у п!дрозд|л!? 12. ]/ яко:иу п!дрозд|л! б!ль:ций середн!й зароб!ток? 13. {то сплатив ттайтшентший податок у ко){сноп[у п!дрозд!л|? 14. 6к|льки ос!б шрацтовали литце один дег{ь у кохсно}ду п|дроо. д!л!?

132

!,.

|ттдекси шт1тт|мального еле1цента ]шасиву. Ф6чиолцтут

добуток його в|д'етшних едетшецт!в. Фбчислити к|льк!сть елеш:ешт|в 1ш&сиву' для яких виковуеться

нер!вн|еть|<ар'<6. |!. Фбчислити добуток 3начень тих

' ь. ,|

1оться нер|вност! анп<

_!

а6о

едеп[ент|в, для

ар'} |.

яких справд'ку-

Ф6числити к|льк|сть додатних еле:шент|в та |хн|й добуток. Ф6чтасухити :т!эк 1.

суму квадрат|в

елештент|в, зттанення

яких

6|льтш|,

|}. ()6числитут добуток квадрат|в тих едемент{в ш:асиву' для яких '!

'

'

!|иконуеться нер|вн|стъ |ар'| < 3.

кйьк|сть тих еде1!1ент!в :иасиву' для яких вико|туор'> 3, та с}|1!гу елемешт|в :шец:пттх, тт|пс 9. 0бчислити добуток в|д'еш|т{их еле:шент|в. 8ивначити !ндекси ()6числиттт

п;'гься нер|втх|еть

'1. м{1кси1иаль11ого елеш!ет{та. ! ()бчислити сутшу д|аго}|альних еле:шент!в тз!д'омттих еле:утент|в.

1шасиву

та к|льк|сть

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

|

133


715. Фбчислити 1иасиву.

16. 8изначити 1шасиву.

добуток м !в|п:альттого ! махсимальвого еле1!(е1! т!в

(;. €к!льки

!вдекси м !н!мальнбго | ш:акси1шальвого еле1шет| т!в

- )(то з кандидвт|в на6рав м&ксималь}{у к|льк!сть голос!в у другопду в&селеному пункт!? |]. Б яких населених пувктах к!льк!сть опит&них б!льтша дея кого з8давого числа п? {). 3а кого в кат:дидат|в пода}! о к!дьк!сть голос|в, 1иектпу в|д дея кого вад8ного числа п? |0.8 яких ва.селених пунктах перптий к8цдид&т вабрав мак еу!мальву к|льк|еть голос!в? | |. [то з кандидат!в вабрав найб|льп:е голос|в у другому !

17. Блету:енти 1и&сиву' що дор'вн:ототь цул!о' зам|ттити на 1. 3най ти су1иу еле1у[е1тт!в п!д головно1о д|аго1та.'1лк). 18. !}изттачити к!льк|сть в|д'€1ш|{их ! сутшу додатних елепдент|в. 19. Фбчислити добуток тих еле:шент!в, для яких вико}ту1отьс$ Б€р!вност| оьп < _б а6о ар, > 3. Бизначити |:*декси м|н!ш:адьного еле1це}!та.

20. Бизначити !ндекси 1шакси1иа.'1ьного та :ш!н|тшального елеш:ент!в 1шасиву. Ф6чисдити !хн!й до6уток. 21. Фбчислити добуток еле:шент!в над головно1о д!агоналлто :шатриц| та ви3начити ]хнто к|дьк|сть.

22. Ф6чиеухпти середт{е арифтиети.:т*е дод&тних едетцецт!в ]у[асиву. 23. Фбчислити суму тих еле1шент!в масиву, для яких виконуеться нер|вн!сть | < ап'< 5. 3ттайти максимальний еде:шент. 24. Ф6чутслити суму д|агональних елемент!в тшатриц| та к|льк|сть еле:шент|в, 3начоння яких 1шен!ц{, н|хс 3. 25.06числити добуток елемент|в п!д головшото д|агонадл}о на су. 1у{у еле]у[ент|в на головно:о д!аговаллто.

3адача 14. ,(вовим|рн| масиви. 3адача про вибори. Ёехай гп!сть 11аселених пункт!в (Ё) познанен! но:шерами в|д 1 до 6, а п'ять кандидат!в (п) _ номерами в!д 1 до 5. $!льк|сть голос!в' набраних кандидатами у ко)1с11ому пу1|кт|' ви3нача€ться _ номер вар!анта' а сума фортшуло:о 8кп = |&[6оп(10! + 50)' де , голое!в' поданих 3а кандидата' виз1|&чве його рейтинг. Би. вести на екран та6лицто результат!в голосування' де у рядках е дан! 3 населе}тих пун1(т|в' а у стовпцях _ дан| щодо конкретних кандидат!в. Бизначуттп | вивести 31{ачення величин 8 додаткового завда11ня. €творити одновим!рний тт!асив !з штука. ни1ши даниш!и. 1.

2.

8к! п!деумков!

результ&ти ко,)тсного кандидата? ([/!0юазюаз утворити однови:ш!рпий штасив !з су:ш 3н&чекь ус|х стовшцБ таб. лиц|).

8к| номери

перев]!1цила

:!аселених пувкт|в, де к!льк!сть пода.них голос|в 150 (1!0казко: )пгворити одт:овитш!рний тшасив !в

цтпс но:шер|в)?

кашдидат|в набрав м&ксимальЁ}, & хто _ :ш!н|тшальну к!льк!сть голос!в у четвертому шаселе|!ому пункт|? 4. 8ка к!льк|сть годос!в була подана 8а перц|ого ! третьо|о 1{а1{. дидат!в у вс!х н&селе}{их пунктах? 5. Б яких |{аседе1{!1х пу:!ктах другий 1 нетвертий к&ндидат}1 на. брали 1шакои1ш&льну к!льк|сть голос!в? 3.

}то з

134

виборц |в ввяли )в8оть у голосувавв| у ко}|сво1иу

1{аселево!ду шувкт| ?

7

третьо 1шу васеле!{их пушктах? 8 якоттсу населеному пув кт! перший ка|{дидат на5рав :и|н! мальцу к!льк!сть голоо!в, а в якот|гу - птаксимальну? !1]. )(то 3 к&т{дидат!в ш:ао :т[акси1шальний рейтинг? [4. Б якотшу }1аееленопщ/ путкт| щ)о1тэлосувало най6!тгьпте лтодей? 1б.9 кого з-пом')к другого' четвертого ! п'ятого кандидат|в най_ 12.

вищий рейтинг? )(то на6рав }{&ксималь$]|', & хто _ ш:|н!мальну к!дьк|сть го_ лос!в у пер1шо1шу т{&селе1{ош{у пу:ткт|? !?. ]/ яких на'селених 1ту}1ктах перш:ий ! п'ятий кандидат набрали 6|льт::е, н!х* 100 голос]в? ||}. 8к! но1шери }{&оеде,{их пункт1в, де к|льк|сть учаспик|в вибор|в ше перевищила 4б0? [9. ]/ кого в к4}тдидат|в рейтинг 6|льп:ий в{д деякого 3адаттого числа п? 2(). Б яких т*|стах кйьк|сть виборц!в 1![е!{тпа в|д деякого 3адаттого |{!.

чиела?

1]

1. ,{,к| ка.1{дид&ти

набрали м!н!тиаль:ту к!льк|сть голос|в

но:шу !з населе1{их путткт|в? |.}2. ,$,к| капдид&ти на6рали м&ксит'[а.,тьт*у

!

тш|н|ш:адь|{у

голос!в в друго]шу | п'ятотшу н&селених пунктах? ]]1]. 9 кого 3 кандидат!в найментций рейтинг?

!]4'

9 скйькох катц14датБ

яких

рейтта:тг перезитцу€

у

]{о)к-

к!льк|сть

деяке 3адане чуюло п?

:1аселених пунктвх трет!й каттдидат на6рав 1шаксим&льну к!льк|сть голос|в?

21->.в

3адата 15. Робота 3 1шатрицятши. } файл а.ЁхЁ ваписати 3п_ текстового редактора 8начення еле1шент!в ц!лочисель:п<л| :иатриц1 А розм!ротч1 пхп, а у файл Б.1х! _ 3т1ачення е'|емс:птт|в матриц! Б ровти!роти пхп, де п: 4. Ф6числити матри11то ( ] зг!дко з в&р|анто1ш' викориотавтпи функц!! користува!!а. Рс_ 1!у.,]ьтати обчислень 3анести у файл с.!!х!!. |' Фбчислити € : 1а'ат1э - 23 с':<лбп:ши

',|'' Фбчислити

:!.

Фбчислити

с : 2А.в _ в4 с:А2.в- 3в2

135


: (в.А - 5А.в;э : (А + 9в).Ат Фбчислити с : 3(Атв _ в) .в Фбчислитха с : 2А.в + в.А3 Ф6чпсллти с : А3 -в2 Ф6члслпти с : (А-в _ А2.в)3 10. Фбчислити !: 5А3 - 8в2 11. Фбчислити € : (Атв - 3в1 'в |2. 6бчислити 6 : (А.ат;з * 13. @бчислити €:4 '" 3тд: - 3з \4" Ф6числити € : А.в.А - 2в2 15. Фбчислити 6 : (2А + в) .вт 16. Фбчислити € : (23.н _ д+;: 17. Ф6чиелтати € : 8 в.А.в _ А.в4 18. Фбчислити € : (Ат _ 7в2) .А _ 4в 19. @бчислити 6 : 2Ф. Фбчислити € : ^2.^т (6дт - в) .в3 21. Ф6чпслпти 6 : (А)з _ 73: 22. Ф6чтлслити б : (Ат3а - 5в) .в 23. Фбчислити 6 : (4Б.А * 3:;з 24. Фбчислити € : 8.(вт1: * * 2б. 66чтт'слтати € : 3 в.А.в _ 2А.в2 4. 5' 6. 7. 8. 9.

Ф6числити

с

06числитис

3адана 16. 1екстов! дан|' Бвести пр|звище, |м'я та шо батьков| як одне текстове дане. Бизначити дов}кину даного 1 к|льк|сть букв "а'' у ньому. Розв'язати 3адачу в!.дпов|дно до ваш]ого вар!анта дво1ша способа:ши: а) використову|очи функц|| з б|бл|отеки в{г|п9.}:; б) розгляда}очи введений текст як масив си:цвол!в. 1. Бивест'и |:и'я та к|льк1оть букв третьо1иу слов1. 2. 3изна.лити ск!льки букв 'а' е уупр!звищ!'. 3. Бивести три букви - сво| !н|ц!али з крапками. 4. 8ивести дов}кини пр!звища та |мен!. ' 5. Бивести пр|звище та |н|ц|али. 6. Бивести |п:'я та к|льк|сть букв у пр1звищ|. 7, Бизначити ск!льки букв 'о' е в |тшен].. 8. 8ивести найдовтпе слово. 9. Бил1гчц.дц ус| букви 'а' та 'о' з пр|звища. 10. Бивести |тш'я у отовпчик. 11. 9и починаеться хоч би одне слово з букви '1!1'? 12. !ст букви '!' в !мен1 продубл:овати. 1'3. Бивести пр!звище та к|дьк1сть букв у !мен|. 14. Бивести |ш:"я у зворотг1ому порядку. 1б. Бивести пр|звитце у стовпчик. 16. Бивести 1:и'я та по батьков1 та к|льк|сть букв у |мен|. 17' Бцвести найкороттше слово.

!!]. Бивести дане без

п ропуск!в. 6к!льки букв е в

!!). 8ивести дов)кини трьох сл|в.

!пден!?

Бивеоти !м'я та к|льк|сть букв у пр|звищ|. Бивести !.м'я, пр!звище. ||14. Ёо;кну 6укву !мен| продубл:овати. ]|]]. Бивести пр!звище у 3воротнош1у порядку. ]],! . 8изначити ск!льки букв 'а' та'б' о у пр|звищ!. |]]-;.3ивести трето сдово та к|льк|сть букв у пр|звищ|. ||().

]|1

.

3ацаза {)!!исати

\7. 1екстов! дап1.

одовесно

власний

спос|б

1{риптограф!я. ||ридуштати й шифруват{ня

тексту.

€класти

для введення тексту як даного типу в{г|пв (до 255 ('!|мвол|в)' його :пифрування. Результати вивед1ть у файл. 3адача 18. 1{е ра3 про криптограф!го. Бикористову1очи !!|)огра1иу

с|л::{{л,

створений п|д час виконання задан| 17, скласти програ-

му детпифрування тексту. текст вивести на ек'(етпифроват]ий | ;;;п:т у файл.

3адача 19. €труктури. |[ридумати й описатут структуру та програму для створення 1шасиву з 1шести-оеми еле1иен:'!:; ц|е| структури й опрацтованЁя в!дпов|дних даних 3г|дно 3 '/((.'|т{и1ц о}о)т'етом. 9 стоэкет| 3адати ! описати критер|й потпуку ('!(.'гасти

!нформац|!. |!рикладатти структур 1![о'куть бути: датт! про отудент|в (пр|з-

:1,'т;тсо|

!!!|!|{е' !м'я, оц!нки 3 певних предтшет|в)' адреси та телефони дру:!!!!, характеристики автотиоб|л!в, ауд|отехн|ки' комп"1отер|в, :ц,:пз|дки про кра[ни (назва, к|льк|сть площа) то|ц0. населення,

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

3адача 20. 11отшук даних у файл!. ,(ля деяко! предметно[

,г{:.тп:тст|

створити

€клас3асобами текстового редактора. вти|сту файлу на екран та потпуку за деякип{ критер|ем. €тоакет для напов}1е|||!'! файл

|'!| 1|рогра1у[у для виведення

/(1!!|их у файл! с|л:т[|лу

та критер|й потпуку придумати са1шост!йно.

3адана 21. |раф!ка. 1!1оя еплблетиа. ]/ задан|й частитт1 :'1>::<|;1,; екрана нарисувати ф|гуру 1, у середин| с}|гури 1 <|>!;'у1;у ||,:: } середин| ф|гури 2 _ коло. ]['с| елементи рисут|[{1] |]|!|(() п'п':т р|3ними кольора:ши. 3амкнен| област| залити 1{о]| !,( )|)1! м ! . 9астини екрана' типи ф|гур визначак)ть зг|дтто з в:п1>!:ппп'птлм | |'/!!с: п:!% 9-частинаекрана; ь:|% 5 ф|гур:: !, с|>!п'м1;::2. ![()!\)

: г :

11

1

1

;

1

]

136

137


Розд1л 3

воп'1,Аш} с++ в0!],пвв Фтэке' у пиэ*ст*|й пгав|й

;г#

*"рп

Б'о'й# ;;*;;'й{:,

};*. коло' в }{ьому _ квад)ат'_' Ё .'.др*т!' _ знову нарисувати

_*^!'*":" 22. |раф!к :

фупкц|!.

програ1иу

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

дин'.д1чй^;ф";;#;''"

пра]тора на щоглу.

{,

1.

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

1.0сповн1 попяття. 1ехнолог!я роботи у середовищ| €++ базуеться :та 1деях об'ектно-ор!ентованого т& в1зуаль!!()го програмування. 1дея об'ектно-ор!ентованого програму|!!|ння поляг&е в !нкапсуляц|| (о6'еднанн|) даних | засоб|в !х ()|!рац|ова1{ня (:шетод!в) у тип, який назива6ться класом. }(онк|)()тно1о зм|нното певного класу ! е об'ект. |!рикладашти о6'ек':'|в тио:куть 6ути елементи керуван1{я у в!кн!: кнопки' списки' ':т:тсстов! поля тощо. €ередовище в1зуального програ1иуван}{я (;!+ Бш!1ёег ще граф!нна &втомати3ована о6олонка над слб'€ктно_ор|ентовано1о мово1о програмуванття 6**. .[[ктцо у !|ц:110ег

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

'|'!!ко}о |

}1!

2. 1шструтшент!! середовища @** 8ц1|0ег. 3|кно середови|[('| м|стить головне мен]о' панел| !нструмент!в (1оо1Багз), :: ттп|со)к:

. о о .

1

1

11

11

1;

пал!тру ко1ипоне1{т!в (€огпропеп1 Ра1е[{е); в!кт:о властивостей об'ект!в (ФБ]ес{ [пзрес{ог); в!кно форми; редактор коду програми .

|3{ 139


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

г1! г}:1, й;;;, ,]йй"":, 3жЁ;:;:ж;,*"+:,:":::тт: 9а1абаэе, т"':.,_й}й_ -'г с;;;.' \6'д9' ;;":;; у\|''\'' ""'?::::1 ]![енто Ё!!е м|.стить и проекту_

.'

-^-^|]11Рртн!

ко:шаттди для роботи

з

пцп,

фай_

##ъу"'#?{:'.'::"::^?у::;ши1;;;;;;-;;;;#:;;;;"*::: ж;г;ъ ;-( } ?*:* :з;*]ЁтъЁ;?#. # :ж;' ;"^1ъж ъ; ;тг#'к1;г""*'^.""*у]:9ф.Ё,ы;Ё;;;;;:;,;й###;Ё# #;#;;;#?3#1

Ё

!:у;ъ:'::' "^Р:у^ф,;;; |!!е !Ё!!

$еагс}"т

ш#-й

$;

т'_]

#

Б;;;

ъ#;

ч/|еш !га.|вс{ &шп !опропеп1 0а1аБазе |оо!э

й##

*_..]

|1анель

ф. Ё:

|о.:товне

!нсгруменг!в

меню

51впЁат8

!А06!||опа! ]

\,л'з2 ] 5'з:,

1 д шш

[в-гл!гра

компоненг]в

Ршс. 1. !оловне в,кно с++ Бц|!4ег

ЁФ{ тиоакна вир|внтовати ком_ .::у:т т:.:* *й й;;;;й; ;-3#5йБ: #х. вати порядок в!до6ра}кення '' *Бй!]"'*''1в, як! перетиЁта}оться (8г|п9

понег1ти ,';#.##:::: в|дносно с|тки

1о Ёгоп!' $еп01о 8ас&),

""т:*'ъ)";

##"#*'

у

"

.'7'

,й:"й'"]" розм|р ви6раного компо"';;;;;1 _" омпоненти $са!е) тощо. (

6рагтиент/ ;;;;#'|#;г-;н*:'3Ё:.1.Ё###:"*'жъ;ш}; |нтц|' 9 мен}о тйш знаходяться команди в|зуал|зац|| елемент1в середовища. 1![енто Рго]ео1 _3окрема

*

*ъ'"!] ]'й-д-Р$о; файл;в ЁлжЁъ '*''дй 1?1т,""" (6опр!!е Ё"п,

;;н"н}*Ё"#т|

Б1;й А!: вго1ес!).

жБ.ж й;;;'н,' *;"-

1*^тР'1'-р;;;.;й;'н1ж#ж,"':1#&"###"т#"";#} тгент1в' ]!1енто 0а|абаэе *;"'"й]1'{Ё.' !нструтшент!в '"*'ику

'40

ба_

!

3и да1{их. ]/ тцетт:о ]оо!э шл|стяться кош'анди для зада11ня пара]у1етр1в середови1ца.

>

1нструътент|в.

||анель |нстру:иент1в слуэкить для ро3татшування кнопок Ёа н!й штохсуть ти|ститися кнопки вс!х зазначе_

1{их команд.

4. [|ал1тра компонент!в. |{ал|тра компонент!в розта111овау головно:шу в|кн| ! штае вигляд багатостор!нкового блоктто'га. Ёоэкн!й стор|нц1 в|дпов|дас св|й наб|р ко1ипонент|в (див. 1;ис' 1). 1{о6 пом!стити кош{понент у центр! в!кна форшти, дв!н!. !слаца1оть на його ш|ктограшт!. ,{ктцо потр|6но ро3татпувати [та

!{омпонент десь на форти|, клаца}оть один ра3 на його п|ктограти| та один раз у потр!бнотиу м1сц! форми. ,(ля 6агаторазово-

|'о вставляння одного й того }1с ко]цпонента потр|бно натис!1ути на клав|тпу $пш1 ! клацнути на його п|ктограм| - тепер мо}кна клацати у в|кн| форми. 1{о6 в|дмовиту|ся в|д цього ре)!{иму' треба натиснути на кнопку з зобраэкенням стр|лкут.3и(>раний компонент 1шо}кна перем!пцати на форшт|, а такоэк зти|!{товати розм!ри, перетягу|очи його маркери.

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

!

141


тт{о) використову1оть д!алогов! в|кна' наб!р керу}очих т!в як],1х за.'1е'*сить в|д певно| вл&стивост!.

7. $труктура проекту. |{роектош: на3ивак)ть сукул!т1сть фай-

елеш|ен_

.::[в, з яких б** 9й16ег створ1о€ готову дл'{ викона1{ня процра:иу. ,(о скла]п/ ко}кного проекту обов'язково входять так! файли:

.

|Рогп]

файл проекту *.Брг. !'е невеликий файл, якутй }л|стить поси.,1ання на вс! файлпт проекту й |йфал|зу€ црогра]шу; файли опису вс|х фортш, як! входять у проект: файл тексту програ1\[и *.срр ! файл форми *.ё{тп; файл ресурс|в програ1ши *.ге5. ![' ньому описан! рееурси, як! не входять у фортшу' }{априклац, п|ктограма

.

програ1ши;

.

3акладка властивостея

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

3аклпдка под!й

;|л;: [1-тли

Ршс. 2. 81кно [нспекп'орс' об'еютп1в

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

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

г;!:слт1.

!!!!сно мо;1кна в|дкритк

\./:с':ш =+

чи 3акрити

командо1о

головного

1

ме}|}о

6!авэ Ёхр|огег а тако}к командок) !|еш Ёхр!огег контекст0вог0

блокнота. ||1д час створення ново[ у файл 1!п!11.срр, який в!дпов!дао форм| Ёоггп1, редак-

мс:::то багатостор!нкового

''"'*о''

142

створ}о]оться &втотшатично.

с|л<г1>:т|}:1

автоматично

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

'|'()|)

м1! !]ластивостя1ши ста1тдартного в|кна'Р'|пёотшв. Фпис ттасл|ду_ !|!!|!1{я класу користувача ]Роггп1 в|д готового кдасу 1Роггп знд_

ц()/(иться

,|п::11.лх

г:1,.пт|

у

3аголовоч}{ошту файл! {_}п!{1.}ц. |1осилання

на

п1ой

(1пс|шёе), а тако}к опис з:ш|нно| Рогп'| типу }Ёоггп| ро:;м1 у шлодул1 0гп|11 .срр ||!д час дод&вання нових |{ом!|()||()|]

у файл {_}п!1,.ё{гп автом&ти1гно заносят1,с'{ ()][и()1| ::тметр!в цих компонент!в (висота, 1ширина' ро3т&11!у|'|! ! ! ]'['

|'!|! /1о форш:и г г; т

;

]

('|'][.'|ь тощо). 3астосування методу до певного об'ектд в()/((} /{() !|()1!!}и 3аготовки базового :соду в|дпов|дно| функ:'ц!г у п;|:с:г! (тшаблон) складаеться |з заго;л<;:::с:п с};улг:с|'('/\1!](тора. 3аготовка !!!! '!'& ошераторних зат|ов1!|о() |соРи()'!'уду}кок { }. 3аготовку ::;:,:.

(Райл 0п|{1

мае тактай вигляд:

1

\43

1

1

|


//

Ацрекгпцвц препроцеоора

с!а55 тгогп1 !|

: ршб!1о

-ршБ!!э[её: 1БцЁоп 1 Ё0!{

}Ёогп

$ 2. // 7Рогп1 пороёжуегпься в!0 7Роггп

// |{омпоненгпц, //

*8ц1{оп"!

па

вц0цм| в @б!ес[ !пзрес[ог'

|1н! мегпоёц

;

-Ё0!{1

;

|/ |нш! компоненгпц

;

-{аэ|оа||

/| |нсц| |/

рг!уа|е:

е

аль

н

о0осгпу

пн!

оеолоо;ен ня

|{онспрукпор папу }Ёогп1 (16опропеп1" Фшпе0; /|

-{аз|са!!

Файл 0п|11.срр /

мепоёц

1ршвапн! оеоло|/!ення

// 3 а

ршБ|!с:

//

тцае

/,!и ре кгп авс: п ре п роце сор а, 3окрема #!пс!ц6е "|..]п!11'5'' /| Аоёасгпься опцс пц[пу 7Роггп1 #рга9па ге5оцгсе''*.о'п'' // !о0аспься файл з опцсом формш *Ёогп'!; // @пцс зм!нно!'Роггп'| гполу 7Ёоггп1

1Рогп 1 ::1Рогп1 (}€опропеп{- @шпег) // |{онопрукгпор

: }Ёогп(Фшпег) -!аэ1са|!

-{аэ|са!! { //

::8ц{1оп1 Ф!|с&(}Фб!ес1

"$еп0еф

г

8.тае.гшлв1еть

-'а51са!! {

[Рогп"!

::Ё6|11

// 7угп коршспувач 3апцсуе гп!ло функц[[ )

|/------------------

/|

..'

Реал!зац!я

1нсшах мегпо0|в

авдангг.я &кт'{в*

гляньте головне мен{о! цанел| |т*струмент1в, пал|тру котипонент].в, в|кно властивостей об'скт|в, в!кно форми | редактор коду програми. Бивч|ть р|зн! способи актив|зац|! в!кон €** Бш|10ег. 2. ||оекспериментуйте з в!зуальними коп1понентами середовищ8 програп{ування €++ Бш!10ег: почергово долунайте !х на форму а пал|три котттпонент|в' виокремлтойте !х зокрема та разом' вир!вн:ойте ко1!{андами головного менто Ё0!1 та знищуйте (див. пп. 3,4, та 6 цього параграфа).

1,14

аначе}!ь

{|рттклади

"{ля 0б,€кт& ногФ

8ш11оп1, Ё6п2

Ац1о$сго!!

Ё*яатт1сть у форпт! е]и'уг п1}ок0учуванЁя

7гце, Ёа|эе

8ог6ег${у!о

\:\]

!6!}-|, Р!е19!з1

(фо:суса} у форпх|

1\{оэклив|сть

бз$!аеа}|е (в|кно в дов!льт*ими розм|-

в!нн*

бв|ч|опе (в!кно з фйоо-

3м|н:ов&ти розвт{р*т 1{1ирина ! виеота в!к:+а у п1кселях

рами}, бв&|а!о9"

58$, 224 (ниолове вначення} $о:чтплетсон8 вл&!ети-

[-:оп1

[!1рътфт

я!еть, 3ада6ть*я у д|длоговозду в|кх*|

!1ог1а5сго!!8аг

}1араш:етрз* стшуг пт]Фк1}учтЁв.нття

1{оштплексхта

3адаепво г,!ктогра!иу'

(}ч]ог:е)

!еп"1$сго!13аг

Бправи 1. 3апуст|ть систему в|зуального програмування €++ Бш110ег | роз-

0пие влаетивост!

Ас{!уесоп}г0!

]

уо!6

на-

в реаульта'т|

:тост!. форзли:

7уп кориспувач 3апцсус гп!ло функц[{ -5еп0еф Ф}тап9е[Фб]ес{

; ша}оть з'$1влятися

?еоротиин1 вфоттто*т1. 8б'ект Рогтш вик0ри*т0ву}оть дл$1 н0вог0 в|кка. Розэ'ляяем0 тан! власти_

]

]Ёогп1

одну

(]1'}]с}рен!{${ т1р{:}грамс)}о

{

уо1ё

0дна

'|иск&яня !та кшопки (рис' 6)" Фана'т?отшитися 3 т&1{ими об'ектами: форма (Ёоггп), твк*т0в8 :толе (!*аБе!}, зо6раэке}1т{я (|па$в), :сног:ка {8ш{1оп} та |хн1тши ос!!ов1{ими влаетивостя1{}:: п.1дшие {сар!!оп), кол|р {[о:ог), тшрифт (Ёгэп{}, нид1и:ш!еть (?}*!}!е), 1ширин3 (ш!с{п}, в}тсот& (Ёе}9п{) та 1н.

|0нець опцсу !пцпу 7Роггп1

такий загальний вигляд:

]Ёогп1

[1рограшлуван[1я [с[{0!1Фж. Ф6'екти: фор:*яа, те!{стове т1о;!е' 3обра3{сен}{я' кнФп1{Ё} &[ета роботи' [творити форпду "Анкета студента,' 3 дани1ии !тр0 се6е !. двошта фотограф1ями (портретно}о | хуло:кньою)' як; !1ерекрива}0ть

-$еп6ег) уо!ё ! БшЁ1оп 1 €!!с|<([9б.!ес1 уо!ё -'а5|са| Ё0!116бап9е]тоь1ес* -$еп0е|);

3АдАчА шРо Ан}скту

!сс:п

яка 6уде в 3аголФвку форми п1д час вихо}1&н}{я ттрогр8ми

шап'}е

1пт'я с&орми

(;ар!|оп

3агодовок форми [(озт!р фогт]," формш

_ етандартн8

г{'ктогра1ч[& д.п,я

8**Бш!1ёег, вбо 3&в&нт&}}{е!{а 3

д9р9о-{1 фд!д!,

[огш'!

*'.

!,,('

(|"дцетттиф!кдц1

,{ов{льт*ттй

9}:цв.9{1ч-_

о

(;010г

!(}(:!+

вдастив!()ть

;1л)

рлдо!{ _-.

-.

с16гос.:г:, с!!п{о0}<

{перел!иений'г:тдт)'тгт

"

$004525в1

(.т.птс.::<;ттс:

'145


3!1&че11ня

т 6цгэог

Ёпаб!е6

!-е{|,

1ор

Роэ!1!оп \л!!п6ош${а!е

Бигляд вказ!вшика тшитш! ша фортш| п!д час викоЁа}{т{я цроекту .(остушн|сть для д|й об'окт!в у форм| п|д час виконання 1{оординати л!вого верхнього кутка в|кна у п|кселях Розм!щення | розм!ри в!кша у 1шомент запуску прогоа1ши €тан в!ктта у 1шомент запуску програ1![и

- 3адаеться

п|алоговош[у в!кн!)

А!!9п

А!!9ппеп1 Аш{о$!ае

!!э|0!е

сАггош

![ог6\А/гар

200' 1о8 (вислове знакення)

!1риклади значень

в 1ие}{сах подя

1аР!о!'т!.]шэ1!{у

а![ор

8ир!внтован|{я тексту

!асеп|ег, |а!-е[!3шз|![у'

|{риведення ме)к поля

1гце, Ёа|эе

об'екта

6еп1ег Р!с1цге

1шл'я

|4в

поля. тцо його м|стить

граф!нного файлу

2.

[гше, Ёа|эе

[1риклади значень [гше, Ёа!зе

3адаоться у

8ш|10ег.

л|алогово:т:у в!кн|

Ё.

1ше111о $1ап ([1уск)

€++ 8ц!!0ег

х.0' де ;

@ .о' допо1у!огото каскад'|*''"рй: Рго9гапэ (!-1рограми) =э".8ог!ап0 €++ 8ц!|0ег х.0 =+

=+

39р6!д програш[и. Фтримаолшо чотири в|кна.

- актив!зац1! чотирьох в!коп .{осл!д!ть слосо6ц

. головцого в|кпа 6*+

€**

8ш|10ег:

п&недь |нструш:ент|в, пал!тра коу{понент!в | головне 1у[ег{то; о в|кца 1нспектора о6'скт1в ФБ]ес1 1пзрес{{ог з| значення:ци Бш|10ег

х.0

Рго]ес!1, А@ €

властивостей активного об'екта;

. в|кша

фор:ши Роггп1, в яко1шу будуть ро3татшован! ревультати роботи майбутньо[ програми; о в1кша тексту програми (1-тп|11.срр). 3оувоэюення /. 3|кно тексту програми мохсе чаотково перекри_ ватися в!кном форми. Актив!зувати в!кна (а такоэк зм!нтовати |хн! розм|ри чи ро3та1пування) мо)кна 3а допо1\логото :шитп| а6о використовутони функц1ональн! клав|тп! на клав1атур!: Р10 _для актив!зац!! головного мек;о (п|сля цього натисн!ть на клав!тпу Ёэс); Р11 - для актив!зац!! в!кна 1:лспектора об'екта; Р12 _ для переходу ти!э*с в!кнами форми та коду програ1ти.

1гце' Ра!эе

!е6, !-е'1, [ор, !!э!б!е, використову:оть так|: Фпис властивоот!

3авашташсто середовище в1зуальцого програ1шувацпя 8ог1ап0

€**

}{ого

шэ]т:1!п!п!ае0

|[еренесення сл|в тексту у новий рядок

]гце, Ёа!зе

)(|д роботи

}ту1оть кл&ца}1ням

шэ[,,!огпа!, шэ[/ах!п1:е6,

по ппяниттъ тексту

оозти|о|в зобоаэкення

3апуск систе]ши в|вуадьного прогр&щування 6** Бц!10ег вико-

а!8о{|оп, а!Ф!!еп1'

Бир!внтован}{я 1ша.'т1от{_ ка до центру в!дносно

1.

ро5сгееп6еп|ег' ро9еэ!9пе6

а![_е!1, а![х!опе,

[гцо, Ра!эе

оозтш|о|в

Ф6'ект 8ц!1оп викориотову:оть для створення к!{опок на форм|. }{нопки ма1оть так! влаотивост|: !!э!б!е' ш!с|п' Ёе!9[!, Ёоп1' 6о!ог, |,,|апе, 6ар!!оп, 6шгэог, Ёпаб!е6, !-е|{, [ор та !н.

[гше, Ёа!эе

граф|нних Фб'ект !гпа9е використову1оть для вставлян}1я *'тмгп{ у форш!у' *.!со, *.етп{, *.ьтпр, типу об'ект!в |з файл!в $р|м в|домих властивостей А!!9п, \4/!6|!':, Ёе!9Б|, [\*|апе, 6шгэог, Ёпаб' 8ластив|сть

о6'екта |1риведення розм|ру об'екта до реальних

Аш!о$!ае

(перед|чепий тип)

0пис властивост| Бир!.внтовання поля в|днооно об'екта, що його шт!стить (форми)

Рттптлш1сть

них

сг!га9, сг6гоэз, сгЁе!р,

Фб'ект ]-абе! використовук)ть для створення текстових по' л|в (напис!в) у в!кн! програми. Ёр!м аналог!чних до шаведо' них у ви1це3аз}1ачен|й таблиц| властивостей \{!61!т' Ёе!9|1' Ёоп|' €о!ог, \апе, Фар1!оп, 6шгэог, ЁпаБ!е0' !_е{|, 1ор, в|н волод|е ще й та' кими: 8лвстив1сть

||риведення ровшт!ру зобраясення до 3ада-

$1ге1с[:

:|. 3апуст!ть програ1иу Рго]ес11 }|а виконапня 1 ровгляньте в!тстт<> порошспьо[ поки 1цо фортии. ||оекспериптевтуйте з в1кнопт фор1ии.

3апустити шрогра1шу 1цо'*(на дек!лько1ца спосо6атши : . викон&ти ко1шанду Рцп =э.Рцп годовного менто; . клацнути т|а кнопц! пцп Ё] панед! |нстру:иент|в; . натист{ути на футткц!оналъну клав!тпу Ё9. Биконайте так! д!|: штакситш|зуйте в|кно, в|днов|ть його :то:гс;редн!й розпт!р, тш|н!ти!зуйте та знову розгорн!ть в!кно, т:е1>с_ суньте на ро6ототшу стол| та зм|н|ть його роз:ш|ри' ви|{лич1'о систе1цне мецто (л:т * пропуск). Биконайте т| сдпл! д!| зп доп()1,47


команд йоуе, $!ае та |:ттцих | клвв|атц>и. 3шсновок: в|кт*о форми волод!е уе!тша вл&стивостя1ии етандарт_ ного в1нна оператд!йно! систе:ии 1А/!п0о'шв. 4. 3акрия?те з!лсшо програ1|ди Рогхп1., :и|п1пт!зуйте годовпе в1кпо с++ вш'1Ёег 1 створ1ть на ро6ото:шу диску папку в !пхевети групи' а у н1й власпу папку' ваввапу ва1'[и}! пр!звитцепл. 3вову актив|ауйте (** Бш'!!.ёег. 5. 36ереэк|ть етв0решу програ1шу у сво!й папц!. 1и0го[о

6аг6 г:ал!три

:шуйте

1

,

в!кн| вдастивостей форми 0б]ес||

1пврес{{ог

,, '

8ставто у форму текстове поле (об'ект т[!пу [абе!) в "Анкота студеята''.

148

;

,.ь^м::г:,']',

:-'::,.. :. : :.1!.!41.;.,,:: ....:!::,1":::,..

так!

як

1тока]за}тФ на

Ропап €уг;

...;:::1!;.,:;:-;.]12!:!

,.

,',

:::-

|

! :

1'

;

;;. .::.;. ;

.

:...! : :.....:,,:"1'..;. ...:.,.:. :..::.

!--1ьч|[

..: :',

,,,.::,,1'

::. :..

:.:'.

:: :::

:.:.:::.:.|;.-.=-1,

,'й;;",

т |::Ё.,

.;.:];;..:.:.

":.:.:!-:

{;;,!.:'::.'.,',.,].. !- ::,::-. :.;; : форлсш

:::::.,,

;:, ,

-,.:.1;1..11.1

:

..:.

Ап'*ф сфцештл:.

,,се13+313;'"лз,:т:.{|' :т ] :!-1: ]; ;'$:1;-т$;,];][1 !: !]{|' п::! ::' :с:-]:.

,;;

:;

{

г!я++9т"+т"9г.е3ш!оор.6итвт9;

:; ;' ;.!&{.:::,|,1 ;...:..". .' :: : ] ]:'] .:;:::.:.;:'льйв;;;п;;|т*н!хц...

. .:.

|,.;:.:,

..

:: :::::....: :. ..

.. '

.':

] ] :] :

'

:,

.'

. .:

......

;;е:1д9р9ркф:'.1995!.:::, . :. :.: : :

.

1;'ялто6о._т,|!рв!э.,энт,

::.:::

:. -:':

:

,:;..,,.

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

.

::.",. ..,...._

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

:::::::

:

. :::1.::: :: :]

: :

Рцс. 4. |7ршкло0 п!0пше!в

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

;

тексто1|д

,

:::::'::..:..::::::

Рцс. 3. €гпворент+я

.

.[Ф.

'

::..

.:::т1:;

,

рядку €о|ог вибер|ть 3н&чет{т{я кодьору фону 0вольа способау:и: . викл:,1чте в!ктто ви6ору кодьору шодв|йни:ш кла11а!{ня1и }\шшшек} }{& г!0т0ч}1о|шу 3}1ачев}1! властгтвоет! €о!ог' 3ибер!ть одик !з ба.зових кольор|в (3ая!с со1огв) або встат*ов|ть св!й влаений (}е{!пе ёцэЁоп: 6о!огв) кол|р. |{!дтверд!ть

9"

: Ршгр!е.

1-а!а|5:'::.::,: "

:

у

виб1р (ок)' 3& дошом0го1о витт&двк)ч0го |у{ет{1о Ё! поексперимсптуйте в р!зниттти а}:&чет{нями вл0'стивост! со!ог. 3адайте 1]оч&ткове 3н&чечня ко.цьору ; с!81пЁасе. 8шконайте црограР1у ще р&3 (див. п. 3)'

: 16;

:

.:

у в!кн! ФБ]ес{ 1пврее1ог призвод|{ть до вш:!ни розта[шуваш!1я ни роа:и1ру фор:ши. 8вед|т,ь в|дпов|дне 31{ачен1тя у п|кселях | натисн!ть на

у

$|ае

€о!ог

:.аь-пэ] ;:: :, .:1,:::.:: .;;.*;' :: :::;.;:': : ::: цмь'?:: :,:]. .:: . 1:''|;. ,.. ::';... ,,:

.....,;.:

0Б3ес{ |пзрес1ог. 3*т|н!ть ровтш|ри фортши. |{ере:сошайтесь' !цо теше}}] зти|.:*к:тотьоя властивост! ш!с1п (*ширина) та нФ[8п1 (висота) форпти у в!кн| !нспектора о6'ектв. ,{осл{д1ть, як з:и|на 3нач0ць власт|.1востей ]_ег:, тор' ш!с1и чи

,{ля цього

: [!пеэ [1еш : Бо!0;

г"ьчп!:,,;''',,,',',,'',,,., :,.;.. .: ,' . .'.-.-.-.:'.:: . . :;: :'.'.:'. . .:: ::: . . :::: :. '1"11: " ;.

}!е!9[Ё форпп:с

8.

:::. :|

?а тор - координат л!вого верхнього кута форпли у в!кн!

кл&в!тшу вп!ег" 3пд|и!ть кол!р фону фор:ши.

наприкл&д'

1. Атлалог!чпо вставте у фор:шу ще дек!лька текстових шол1в а ва|цип{и б|ограф|нпиР|и дави]ии. Фщ {" вар|а:ттБ розтш!ще:тня текстових шодБ шоказа_:тий на рис. 4.

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

7"

об'ёкт,

3оувоэтсення 9. 9 в!кн! ФБ]ес[ 1пврес{{ог в!до6рая<асться список власт!1востей липте актив!того у певний момент о6'екта"

не|0п|.

!_еп

вотавдений

гоп[ Ёоп{ $1у!е

файли проекту | тексту ттрограм,' повинн| птати р|зн! н&3ви. 8!зуально ознайотитеся 3 властивостя1ши фор:ши !еп' тор' ш!с{ь

та

ко1![!то!тет*т!в головттого

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

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

6.

А на зак.::а.цц1 $1ап_ в!кна ё**8ъч{16ег. Розта-

.{в{я!. клг:цн|ть :шитпело на п!ктогра:и! !.абе!

]}.

че}1ця вдастивост! ['!апе) а6о зати1н!ть |! на св|й розстл. !}:п мовч}гват|няти цей об'окт 1ш&тиме ст8}1дартт{у назву !гпа9о1.

Бставте свок) портретпу фотограф!то за доцоп[огок)

вост1 Р!с!шге (1ллострац1я) об'екта !:па9в1.

:лд:

в.]|дс.|'и_

749


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

[ля цього

виокре1ште

пойреба використати команди 5еп6 Ёгоп1 (перенести налеред), г9лов}1о1шу менто Б0!1.

8г!п9

в

як|

8ас|<

е в'й

уо!6

-'а5|са| {

! 1

Ёогп

1

!па9е1->!!э!б!е |па9е2->!|з!б!е

: :

= =

Бш[1оп

1

6! !с}<(7Фб|ес1

-5еп0е0

1гше;

|/ 11оргпрегпна фопоераф!я сгпас вц0цмою 1а!5е; !/ \уёожня фогпоераф!я сгпас невц0цмою

)

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

!па9е1 3адаешло

(переслати навад) ни контекстових п|ен]о чи

1б. ||оексперитиептуйте з властив!стто [!з!Б!е (в:тди:и1сть) о6ох зоб(див' пункт 3)' рашсет{ь' ко?{сного ра3у викоцуточи програ:шу п|"л" цього вибер{ть 3т1ачення властивоот| у!э|ь!е у га!5е для

кцопки для засв1туван|1я фотограф|й _ два

об'скти типу вц||оп з на3ва1ши 8ц{1оп1 ! вшшоп2' ''.;';:#?ЁБ}, (кттопка) знаходиться 1!а зак-

|{!ктограма Б1 об'екта тишу вц11оп ладц! Б1апёаг6 пал|три коштпонент!в годовного в]ктта 8+* 8ц!16ег. |{ом|няйте п|дписи Ёа кнопках (зм|н|ть властив|сть €ар{!оп) на "|,{ортретна фотограф!я', та "[удоэкня фотограф|я'' в|дцов|дно. 8ибер!ть найкращий, т{а ва1п розоуд' кирил!зова_ ний тлрифт для п{дпис!в. 8кщо використано картиЁки |з стан-

Ршс. 5. Роз;п1щення молюнкс[ |[|. 3апрограптуйте к}топку (')(удоэкпя

уо!6

{а51са!| ]Рогп1::8ц11оп1Ф[!с((10б]ес{

-$еп6е4

{

)

)[' заготовкт необх|дно вставити текст програ1![и реакц11 :тод!то. |{роцедура матиме такий вигдяд:

! 1-:$

на

ц1о

фор][|а

фотограф|я'' в1дпов1дно до

признанення (див. л. 17). 1['екст функц|! для ц!е| кт|опки 1шати1ше такий вигляд:

!1

уо!а {

п|дписи. дартно| б|.бл!отеки Бог1апё, вибер|ть для кнопок ц|кав1 6' на показаний кт{опок рис' 0дин !з вар|алтт|в розм!щення

17. 3апрогратшуйте }спо11ку "||ортретна фотограф1я'' так,_ш1об п|сля |] натискання у фор:ш1 3'являлась портрет|та фотограф!я' ,{ля програш[уват{ня кноттки 8ц11оп1 шеобх!дно дв|ч! клацнути на н!й д|вото кдав|тшето миш:|. } результат! актив!зуоться в|кно тексту програ1у|и |з заготовкото функш1| 8о1!оп'16!!о[' яка опе'11'!1 : рацьовуватитше под|то кдаца1{ня *а к19.ц!

Ршс.6. [отпова

-{а5|са!!

]Рогп1

|па9е1_>!!з!0!е !па9е2_>!|э!б!е

= =

::8ц1{оп2Ф!!с1<(|@б]ес{

1а[5е;

1гце;

// //

-$еп0ег)

1орпрепна фогпоераф]я спас невц0цмою

\у0ожня фоспоераф!я сгпас вцёцмою

)

!{о6 створити таку функц|:о тшвидко' ш!ош(на скоп|товати

71:;!

!соманди присвоення 3 поцеред!{ьо| функц|! у нову | пом!:п:;т'г.: |}ира3и цраворуч.

!!)

Биконайте програ1иу 1 переконайтесь, що к!|опки ви|(()||у|(гг!' функц|1. 3акрийте в1кно програпди "Анкета студепп.:':п''. }}береэтс|ть створепу програ1}1у у сво!й папц1. |}ибер|ть елеш[ент годовного п1ецю г!|е э 5ауе А!! (3берс::.т,г.т :гс:с') :тбо натисн|ть на кнопку 5ауеА!! ф *а п'н"'1 |гтстртмс:;,:'|:;. ()твор1ть ехе_файл програ1ши. !]иконайте ко1ианду головного 1иен{о Рго.|ес1 э |т:!а[с [,гс;;с;т;| ( )конструтовати все). <:во?

1()

1

(

151


22.3акр*тйте €++ Бш!18ег, витсошат}то створену пр0гр&1шу периу{е!!туйте з по6удФван1!!н11 кп0пшами" 3ашуст!ть ехе_файл в !менетш проекту

свос! влас:то] папки.

23. |{родетиоттструйге 0гворещ/

!

1

шоекс'

п|ктограшзо:о [Ё! з!

фор:шу ви'с.||адачев|. 3ахс|пч!тъ ро6оту-

Б:травн

1. Ёставте у форму третто фотограф|*о (фото ва:пого бул*:нку 'гг: матшини) | ще одну кнопку з в1дпов|двим п!дписом, яка 11 висв!тл1овати" ме. .{кщо файлу 3 тако!о фотограф!ето Ё1еп1ае' скориота}"1тееь 6удь-яким файлом з б!бл!отеки 16со1ог (див" п. 13)" 2. |{ом{няйте т\дписа до к!{опок на так1: "3*т!нитт: фотограф!.то'' т:: "3абрати фотограф1то'', перепрограмувавтпи кнопки в!дпов1дно до новог()

призначення. 3апи:п!ть фрагменти зш!неното програмного коду 8таконайте програп{у | перекоттайтесь у правидьност! |! роботи. 17!0козюа' ][' текст1 функц!й, що опису}оть ро6оту кттопок! скористатися т&кими команда.ми: !{

(|па9е1->!|э|ь|е

=

тгце)

а6о р!вноеильно1о командо1о !{ (!па9е1 '!!э1б1е)

'.'

.".

/|

8кщо вц0цм|спь

у

зв!т'.

мо}|{]|8

= 7гце

||7уп умова |сгпшнна, якщо вц0цм!спь ув|мкнена

3. |1ом|няйте сценар!й ро6оти програми з п. 2 на такий: о в!дразу п!сля зат:уску програми фотограф|й не видно" е дв! кнопки "!{ортретна фотограф!я'' | "3абрати фотограф!то'' , до-

$ 3.

11рогра:кування ровгадуэ{сень. Фб'екти: поля редагува!|ня, пероп{икач! та ?хн1 властивост; 1!!!ета роботи. €творити форму 3 на3во|о "Фб:ч!н вал1оти''? як!й мо}кн8 ам0дел1овати операц!| обм|ну вал}оти в об:и1н}10му пу1{кт!. 3аотосуват[1 поля редагування (всп) та переш|и:сат| (Ёа0!о8ш|!оп, досл'вно ра.д|ок:*опка), а тако}к кнопки для ви1{онання обчислень ! зак|нчення роботи г{рогра]у|и (див. зрагга

зок формтт на рис. 8). ?еоретикн! в|до:шоет|. 0б'ект Ё6!! викортаст0ву1оть для введення користувачем рядка символ'в |а клав{атури. т.' раз! лтеобх|дност! ддя перетворент{я одер}1са}10го ряд}са (властив!сть |еп) у число | навпаки використову1оть функц!т €** Бш!16ег 5{г[оР!оа{ та Ё!оа{1о5{г. Фкр!тш в!до}дих вам властивоотей' ттоля |)едагування Бс;| вол0д!тоть такими: 8.шастив!еть

п|сля клацання на кнопц! ")(удохсня фотограф!я'' фотограф!:: у форм! зм1н:оетъся на худо}1сню, а п!дпис тта ц!й кнопц| зм1н|о€ться на "1ретя фотограф!я''; п!сля клацан11я н& кхтопц! "?ретя фотограф!я'' фотограф!я у форм! зм!н:оеться на трет1о' в п1дпис на ц|й кнопц! зм|нтоеться на "|{ортретна фотограф!я''; п!сля клацання 1{а кнопц| "3абрати фотограф!то'' фотограф!я 3|{ика€ 1 ця кнопка ста€ недоступно}о. о 3апиц:!ть фрагменти програ|у1ного коду у вв|т. Ёиконайто

прогр8му ! переконайтесь у правильност! !1 роботи. [10юозка. } текст! функц!й' як| опису:оть роботу кнопок' мо)кна скористатися командами' п1о зм1нтототь властивост! кнопок €ар!|оп (п|дпис), !!з|б|е (видим|сть), ЁпФ!Ф (доступн!сть). 4. 8 умовах задат! п. 3 п!сля клацання на кпопц! "3абрати фотограф|то'' ця кнопк& отао не ли1пе недоступно}о' але ! невидимо:о. 5. 8м{н!ть програмний код розв'язув&нг{я задав! з л. 4 так, щоб п|сля вимкнення фотограф!й напис на ттертш1й кнопц! 3авэ{сди в!дпов!дав фотограф!!, яка повинна з'явитися п!сдя !! натиекання. 6. 8иходяни з умови задан! 8 п. 5, до6ийтеся того, щоб посл|довтт|сть перемикання фотогра'ф!й не пору1шувалася внаол1док 1х вимкнення' а тако'1{ додайте текстовий п|дпис 8 назво}о фотограф!1, видимо1о у :тоточний момент.

|

г'2

Фпис в:хастивост!

11риклади 3начень еошоггпа!

(звинайн!),

€}:агёаэе

Бигляд ситшвол|в, як! на6ира1имуться в п0л! редат'уван}!я

Разэигогё€}аг

6итшвол для введе:{1{я т1арол.я

1у[еться з!ронка:ши), 0

]!1оэ*слив|сть зм!т{ити

1у[еться нуля1|ди) ?гше (текст не 1у|охсца

ступнок) € лиш1е пер1па кног|ка; п|сля клацання на кнопф "|[ортретна фототраф!я'' у форм| з'являеться портретне фото, п!дпис на першт|й кнопф зм|нтоеться нп ")(удоэкня фотограф!я''' стао досц.пно}о кнопка "3а6рати фотограф!*о'';

3АдАчА шРо 0Бмпн вАл1оти

8еаёФп!у }{|п1

$}тош}!|п|

1ех!

текст (дост1гпн|сть поля) ?екст п!дкавки, яка висв|т.тпоеться, якщо

!{авести ку(юоо 1у[и1ц| 8исв1т'тповати / Ае в*т св{тлтовати пйказку 1екст у пол! редагу_

ес[|ррег6азе (велик!. л|тери), ес!-ошегса5е (мал]. д!тери) #0 (пряме в1до6ра}кен1{я

тексту),

*

(текст в!добраэ*сати(текст в|дображсати-

з1ш|нити), Ёа!эе (текст

1шо}|св& 31ш!нити)

*8вед!ть

суту'у''

(дов|льний рядок ситшвол!в)

1гше, Ёа!эе 0,000'|

'' (дов|льний

ядок сиш|вол1в) Фб'окти Ра6!о8ц1{оп використову1оть для створення у ;лпсобу д]!я вт16т1рання одн!е1 альтернативнот 1иохсливос'г! /{ек!лькох. Розглянемо так! влаотивост! перетшикан|в: Блдстив!сть

6[ес[её

в&}{т{я

Фпис властивост!

€тан шерешхик&ча

<}о;;м! <:с..

;>п:71

[1риклади з!|||чо||ь [гше (вибраний), Ёа!эе

(це вибраний)

153


об'екта клач|дцето }аб

0 (пертций| 1гше (буде

до цевного

'(ост1гп об'екта та6улятором

.;.|(чп!впя : '.=>.:.''6

доотиг

ним), Ёа!ое (не

[ап

{|д роботи 1. 3авантаэште се 2.Ёий'|!"?;1!?#,#"|1|{1Ё-"'}13#{#Ё#|#"'!*"#;'*"; 1ши' шадав|ци

властивост! форгти 8огёег$:}!е ьэ9!а|о9. ,""й*й'" програму ""Ё""""? | перекоттайтеся,

1тчт"*ж}!3начення'

й| ;'*::|т#1.-,###,

сутн: систе1\{ного в |д

3.

ж*т;'' 5ть #

"Р*тъ* 3авер:ш|ть програми. 3ставте у фортиу два об,ектироботу тип ту Раё!о8ш1!оп (пере:иикан!) як це пока3ацо йа 7. *т'.

,{ля цього кл

й

;

рис.

жъ;"#

!!Ё]#

;:н" "р" ко]шцонент!в головттого в|кна с++. н1ть на с

й

йй

*

"'',''::у|_ч1"ц| вити другу рад|окнопку.

. 4.3адайтепочат]

-11}1ът

-;н:. вш]а;;; ;;;;;;ого

". о",*'.

" ;1

клац-

|{овтор|ть ц| д||, щоб вста-

д'"ць'г! ;;ц:!.Ёц"ъЁ*у:1ъж*'#;1т?#.1,3#]}"Ё3;. властивост1 €[ес&е0 (контроль *'6"ру) ;";"-. 5. 8ставте у фор:иу-дв^-1''т редагувац'пя "'д*й'" _ об,екти

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

ня,

запуска1ии

збер|гайте файли програш[и файл!в в}ке не потр!бно). 1

г'4

[г;п"

проекту

1{а викот{атт-

= 5ауе А!!, вводити ]'мена

га!е!|

:;:|:афо|с:.:"]Ё]1|7-;

.,

Рцс.

:

] :

1Б--

.*цр'..1

п,одй

..

191.ц11,{[Б7-

;

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

7.

€птворення фор1'ц

Ршс. 8. [оптово форма

!1. 3пх!н1ть пазву форпти з "Роггп1'' па "Фб:ш|н вад1оти''.

.{ля цього вшт|н|ть 3начення вдастивост|

сар1!оп фортши.

$лацн|ть

фортш! ! на рядку €ар1!оп у в|кн| Фб]ес1 1пзрес!!ог. 8вед|ть тта3ву фортии без дапок. 3верн|ть увагу ша те' що для об'ект|в 6агатьох тип1в (зокретша, !-абе!, 8ш[|оп, Ёоггп, Ра0!о8ц11оп, сьесквох та |втпих) зт{ачет{ня вдастивостей 6ар1!оп т'а \апе зб|гатоться. 12.3пт!в1ть п|дписи €ар{|оп на об'сктах типу Раё!о8шпоп, !аье! та вцпоп так' як пока3апо на рис. 8.

на

.(ля цього по нерз| вибирайте об'екти (клацайте на них) |

нтойте 3наче1{ня вдастивост1 13.3адайте однаков! розпл|ри

зм!_

€ар1[оп.

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

. обвед!ть навколо цих об'ект|в контур' утри1иу1очи . 11атиснутото л|ву клав|шту митд!. 9 в|кн| ФБ]ес{ 1пврес1ог задайте сц|дьн| для цих об'ект|в 3наче}{ня властивостей

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

л|во]

птеатс|

ш!6*п

в|кна)

у п|кселях.

р!внтовання правого стовпця об'окт!в. 8ир|вняйте встпв.:гс::л! поля шопарно у гори3о1{тадьт{о}ду т{апрямку. Аля цього зм1::!':':, вдастив!сть тор (в!дотуп в!д верхньо! тшеак| в!кна у п!кселлх) 71.:::т в!дпов|дних гр1тл об'окт|в. 3береэк|ть роботу

($аме А!!).

14.3адайте 3начепня курс!в куп1вл! та прода}|су валк)ти' !! '|':!!с())!с к|льк|сть вал|оти' яку ка||тор купус чи прода€. ,(ля цього введ!ть потр|бне чисдо' наприклад 5, [т:{ ;]лл::,;с:л::::: властивост! тех1 об'€кта во!{1 . |[овтор|ть це дл'1 об'с|('!'1! гс||2 (знанення 5.2) та Ёс!{3 (3н&чешня 20). ,(ля набору сим!}о.,!!! /((}155


сятково| кр8пки використайте ц|йното систе]у{о1о комп'тотера.

си1цвод' передбачений

0пер!!'

й7*т"":""|!

{_

;;;

ж!!

.{ля цього вилун1ть 3наче1{ня властивост! теп для об'екта Ё0!!4, Ре сплутайте авачет{ня в./[&стивостей }.'|апе та тек цих о6'ект!в.

{1Фа|

!-6' 3аблокуйте :иожсл:лв!сть введешня дапих для подя во,14, вад&п. хци його вдастив1сть неасоп|у як тгце' остс!лькй це поде :ш!сти-

ре3ультат. 3ти|нтовати 3наче!тня певтто| властивост! тчтоакна подв|йг:им кла11&11няу: на н!й д!вото клав1плето :цитп|" 3береэк1тъ роботу (5ате А|1). Биконайте програму | шереконайтеся, що не 1ио}тсн!! ввести чи редагувати дан| у пол! во!*+' 1?. 3апрограткуйте рад|оккопки так' що6 шапря:шок етр!лт*14 по|с&з}.вав па вид операц!{: куп1вля чи прода}{с. 3роб1ть активвим

/!

-{аз1са!1

:

]Ёогп1 ::Ра0!о8ц{|оп26!!с((тоь]ео1

!-аье!3_>сар||оп

=

"=>";

Акгпов|зуемо попе Ёё|!3 в6!{з _> $е1Ёосшз();

//

-$еп0еф

3м!нюемо напрямок сгпр!лка

// )

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

-|аэ|са!1

|Ёогп1

ех!1(1); {

: :

БцЁоп26!!с&(|Фб!ес| //

*$еп6ег)

3ак|ннуемо робопу проерамо

)

2Ф. 3апрогра:шуйте кпопку "06чпелптп' . у г:ол|' редагув&н|{я - це 3н8чення

властивост' тех1 об'ек_ та ти|ту рядок. ,(ля перетворення цього да!1ого у ииеловий д!йсний тип (|!оа:) скористайтесь функц!€ю $гтог!оа|()' а навпаки -- функц1е:о Ё!оа1}о5|г(). опитц!ть основн! (}сшгэ, эшпа) | додат'(атте

ков!' (со6, е0) з::л{нн!.

8ш{оп1 €!!с[([Фб!ес1

=

+а =

6|,тБг:оа{(во::а

ы;+;ьБ;;(Ёо!*з

'4;

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

-' йй|;

''

теп!!

6бес[е6) {4

т.т'

!!ёо*усм2

курсу прооаху

1'н.ачення3на'|ення

!!:'ж:';уБчцспове

// 5м!нна = {1 {з ;

0ля сумо в ерцвнях

формагп

!

ре3ульпап

|

|. 3берепс!ть роботу ($ате А!!)' 22. Б*пкоттаа** ,,р,"рйу ! пр'експерип[еп'туйте

2

з р!зви]ии

гро1цо-

3акрийте

й ','*р*ц|**' куп|вл[ '" ''р'д**'у' в!кпо програ1ии "Ф6тш|в вадк}т|{''' у випадку веттравильвого .{ля шерерив&н}тя ро6оти програми 1тункт годовт{ого ш[ен}о вшп введен!{я вх|дних даних виконайте

вими суш[ами

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

,,,.

#;;:;у,}ж!ри

''"#';;й;;;"

-'

шдшки.

2в.;;;;;*ох*струйто роботу.

3оувоэлсемня

д^* створе1{у фор:шу викдадачев!''

1алс!г:.п1т':,

{(()м'1 [!}1 7' 3верн!ть увагу на використа];|!'! '"'"'' '"' д**'*' й."'"'''*' як! стос^]лто'г']]-11 |{р1|г1!{и в!1!(о-

кр&пки у "*:д""" л!оти' гривнево! чи доларово! сум ристайте ;;;;;;'

156

*$еп0еф

1

$лат1т*|ть 0в!ч[ т*'а правому г{еремикач1 Ёа6!о8ш!1оп2 ([|родаэк).

{

: :

Ёй[+ -, ]ех1 = Ё!оа{[о51г(!4); у [пексповцц /! @ёержане чцсло сумц'в 2рцвнях перепворюсмо т"'[ поля Ёё!!4 ъ;1ь;;й;ь';;'аБй,вос'1

п(}дс в0!|з.

Фтримаете 38готовку функц|! Ра6!о8ц[!оп2Ф!|с|. } т!д| ц|е! функц|{ опитш!ть д||, як! 1ца1оть в!дбутися у ревудьтат| клацання тлп

;,

:{1Ё"с1|'в,ш''1 -> е|зе 14 =12" 13;

ти1}де

уо!0

1

}тоат {'1 = ${г[оР[оа{(Ё0|11

15. Фчист1ть поле редагувапня Бё![4.

право]уту пере1!тикач! пао!овц1{оп2

1Ёогп

;;едбачений

д]1я десятково! операц!йно:о систсмо!()

!}1}|||()г()

\57


э

5е[1!п9з (Ёалаштовування) + 6оп1го! Рапе! ([1анель керування) Ре9!опа! 5е1{!п9э (]!|!сцев! параметри) -: закладка [ч|цпбег (числа), рядок оео!па! эупбо| (6имвол десятково! крапки)).

комп'ютера (див' $!а(

(|_1уск)

э

Бправи 1. ||ередбачте у створен!й програм! ш]е од1!у к!1опку для очищенн'| пол|в гротпових сум. 3иконайте програ]иу { переконайтесь у правильнос_ т| !| роботи. 1]0козка' [ля об'ект!в Ё6|13, Ёо!|4 у функц!! опрац1овання под|! на_

тиокання на ц1о кцопку використайте команду присвоення 1хн|м властивостям [ех1 пороэкнього рядка ('') . 2. 3абезпечте появу п|дказки "8вед!ть курс куп|вл|'' та "Бвед|ть куро прода}ку'' п|сля перем|щення вказ!вника митш! до пол!в Б6!11 та Ё0!12

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

;;;;;;";;'ей'-поле р"д'гу"''ня

в|дпов!дно (див,. п. 24|. 3. 1!1одис!!куйте програму' передбанивтпи додаткову :иохслив|сть

лент{я фрагмента тексту у мо1!1е}{т

монслив!сть. 3иконайте програму.

|1|0казка.,(ля цього дв!н| клацн|ть на текстовому пол| стр|лки. !з 3аготовкото фувкц!{ !-абе!36!!с[ (опис д!й у випадку клацання на об'ект! |-абе!3). } т!л| ц|е| функц!й Б1дкриеться в1кно програ1иного коду

мо)кна скористатися командами вигляду:

|' (вао!овц|1оп 1 .6['тес&е6=1гше) // 8сгпановлюемо перемцкач у праве поло)кення, зм!нюючц / / значення власгпцвосгп! €Аес|<её об'екгпа Ра6!о8ц||оп2 /| //

4. €прост!ть форму (вилун!ть зайв| об'екти) та зтт!н|ть код кнопки "Фбчислити'' так' п1об 1! моэкна було використати для переведе[1ня миль у к|лометри чи навпаки залех(но в|д полохсення г{еремикана (1 миля 1'609344 км). 5. ||/ створену для задач1 уп. 4. форму вставте групу перемикач|в з11ачень:

морсько| чи звичайно! (1 морська ]!1иля : 1,852 км). [!]0казюо',(ля задання п!дпис!в до перемикан!в викориотайте влас_ тив1сть 1{егпв групи перемикат|в Ра6|о€гошр, а для ко!ттрол|о вибору певного перемикача скористайтесь влаотив|стто !1еп|п0ех (дор1внтое _1, якщо }коден не вибрано, 0 _ якщо вибрано пертпий перемикач групи, 1 - якщо другий ! т. д.)

$ 4.

3АдАчА тАБул!овАння Функц1!

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

не 3бер!гаеться), Ёа!зе (збер!гаеться)

в|сть (задаеться у

1!1акситшальна

Ёапри*л'д, 50 -

Ёаявн!сть смуг црокрг{увант{я

значення власгпцвоогп! ё!лес*е6 об'ектпа Ра6|оБц![оп1

[гше (виокремлет{т{я

3адання початкового тексту у пол! п[о}клива к!льк|сть их си1швол|в

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

(о6'ект Ра0!о6гошр) для ви6ору типу мил! 3 двох 1\{о}кливих

|[ркклади з}|ачень

3береакення виокрешт_

типу операц|й (куп!вля, продаэ+с) унасл!док клацання ми1пе1о н{! стр|лц1' 3апитп1ть у зв|т фрагмент програмного коду' який реал!зуе ц1о зти!ни

е!эе

мегпо

л|алоговотиу в!ктт!

п'ятдесят символ!в, 0 "

5$шопе (в!дсутн!)'

не3але}1(}1оФ6'ект 6!тес(8ох використову1оть для створення го дво- чу! трипо3иц!йного прапорця: ув!тшкнено/вимкнено ви3начеш! так| дв| нов! д""-ц""""

1Б&."'уй""и). властивост1:

Бластив1сть

'б|екта

Фпис властивост! Ёаявн!сть третьо1

А!!отш€гауеё

позиц!| (с!рий ув|тшкнеттий)

5|а|е

€тан шрапорця

тБ

3на:9ч ('р"".зиц|йний

11риклади

прапорець), Ёа!эе (дво-

иц!йв ий пр949!9 ц ь]сб6гауео (с1рии'' с0(-,;[!с[ес[е6 (вимкнеттий), сб6!'тес[е0 (ув!мкне гти !|

п оз

-

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

159 |{->8


8ластив|еть ||егпз

1а9

Фпис влаетивост|

$отианди

||риклади 3начень

$омплексн& вдастив|сть (вадаеться у

1у[еЁ}о

в

ви1{ористовуеться

текст| поогва}ди

А|!9пгпеп|

Фпис власт:лвост!

8ир|внтовання 1шен]о в!дносно точки кла._ 1{ання правото

3берепс1ть викопапу па дапий мо:т|епт фортшу у сво!й власц!й папц! (н:е + $ате А!). Роататш5йте у форпл! поля редагувацця вё|!1' вё!е' Ёа!|3 ! в1дпо_ в|дн! !:ш текстов1 поля ,,.}!!ва 1шо}|{а'', ..|!рава 1иеэка'', .,$рок'', а

5"

гра1у{ото

+

0реп

=+

ок.

тако?1с текстове поле для вигляду задапо! фупкц!! 1 (див. рис. 9, читай за5гвапсепня).

|[риклади 3}1ачень ра9еп{ег (по

у : 5!п'

+

центру), ра[е{1 (зл!ва), раР|9}т{ (спвава)

клав!тпето митш|

Аш[оРоршр

4.

0; 8 {ц!ле нисло)

3а дог:отиого}о об'ёкта Роршр!ъ4епш створ1о}оть ко}1текст0ве ш!ен}о деякого компонента. .{ля "г'лрив'язування'' ко}ттекстового мен1о до конкретного о6'екта нео6х|дно його властивост1 Роршр_ [:/!епш надати 3начення |'мен| (|х!апе) конкрет}{ого контекстового [у!енто. Розглянемо дея:с{ властивост| контекстового 1иен10: Бластив!сть

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

д!алоговотиу в|кв!}

.{опотш|.хсна з:и!нна,

дьпо1}т)[ напря1ику.

3.

Автоматични:? виклик ко1!текстового 1у[е}11о

[гше (викликаеться клацавня1![ правохо кдав1тцето), Ра!зе

(викликаеться 3а допо1\1ого1о тшетоду Рорцр)

1{онкретна

команда

меЁ1]о

мож{е мат!! так1 властивост|: Бластив|сть

(головного чи ко1{текстового)

Фпис властивост!

||риклади 3начень гпб[х|опе

Роз6иття

8геа]<

$попсш|

ме}{}о

напр'гмку

к&ль}1о!о 1эискохо),

$отк6!нац{я

вертикадь1{о| риски) (!'.|опе - в1дсутпя),

2.

Бц!1ёег.

п08геа}<

''гарячих' кдав!:ш ддя викдику ком&нди 1шен}о

Ёй 1. 3аванта:кте

у

гори3онтальному

(без роа6ит-

тя), пбБаг8геа}с (розбиття 3 верти-

Ршс. 9. [отпово фор,]''о

(роз6иття бев

61г!+А, Р8' 61г!+Р10' $[!{1+Ё3, $!:!{1+6|г| +Р1 61г!+0е!

3оувоэ:сешня.1.

,(ля того, що6 ц|видко вставити у форлиу де_ к!лька однотипних об'ект|в, клацн1ть на п!ктограм| цього об'екта, утримук)чи натиснуток) клав1тцу 5||{|. ?епе! вставл'||[ ня у форму вс!х об'ект|в цього типу в!дбуватимет1"я без г:о втор11ого вибору п!ктограми. ,$тсщо вшпа0юово встпавшгпе

1

вцй об'ектп, тпо вцлуч,/пь йооо зо 0опомоаою клов|тл! 9в!в|о-

зсл!л \|\с>(>

в!дмовитися в!д такого ре)*симу' клацн!ть н& зобраэп<<:::л:| стр|лки на пал|'тр| компонент!в. Розм|р, стиль | кол|р шгрис|гг|пл вибер|ть на власний розсуд так, щоб ф'р*' *:гс:тпй.

роботи

серед0ви|це в|зуальхого програму|}а|1ж': с++

кра|це. $ауе

а!!"

"""'"дй,

(;- 8ир1впяйте вставлеп! подя редац[вацпя до л!вого [сра|о !|орлцого об'екта та в!дцептруйте текстове поле вигляду фуптпс:ц!|,

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

!60

Ршс. 10.0б'ектпц но Форм'

скористав1|!ись в1кшо:и вир1вп:овапь А1!3пгпепЁ.

!

!

!

гт с++

161


п!дписи до них ], вико8иокрептте груг{у пол|в редагува1{ня. та л::9п (вир|в(редагувати) Ё6:* найте коп1анду _ л!в| шлеэ*с!) э уеп!гыт э;оеэ (горизонталь1{о :э ног!5оп1а!"'"''!Бй-1"нто

э

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

14.8вед1ть 11азви ко1!|анд годовного

рис.12).

1утенк) фортши

(див. рис. 11

|

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

1,1 !

ворення ?оловно?о меню

5. Бвед|ть на3ви коп[анд коптекстового п[е|{1о форпти.

(об'спст [;!егпо)' 1Ф. Бставте у форпц багаторядкове поде ййа'у,*"дя ме1о-.3 !з.закладки $1апкош{шоне}1ту використайте [ля цього 6++Бц!1ёег. 3б|льтш|ть розшт|ри шо-

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

без лапок

Ршс. 13. €тпворення

тсонт!'екст[ово2о меню

"Фчие!ити

як значення

властивос_

т1 €ар{!оп (рис.13). 3а 6аакання1ш мо}кете приду1у|ати ще якусь ко1у'анду' 3акрийте в|кно Роггп1 .Роршр}1епш1" 3берехс|ть фор_

0аг6 шал|ф, ,''й,'*"нт|в цього дя. власти';",' Б|.'ц:вагэ (наявн!сть сш!уг ттрокручування) вертикадь}1а еу!уги обидв| (будуть $$во1п як о6'окта задайте -

тшу (5аме А!!).

| горизонтальна). Ё!!е э 5ауе А[!' 11.3адайтепочатков!зиачет]|1ядляпол!вредагуванпял1во11 аргу_ зтш!пи

цього аргуптепта -функц!] та для кроку 9' |1а як так|, рис' наприклад, п|ента' обект!в' {ля набору ,[ля цього зпшн:ть властив!ст{ тех{ цих си1\[воладесятково|крат[кивикориотайтеси1цвод'передбавений операц|йното систе1цо10 коштп'тотера' 12.8итр1ть елово 1!1етпо1 у 6агаторядково1иу пол! редагуваншя (див. пояснення пишсне)' 0}]ес1 1пврес1ог зшт!н!ть 3:1ачення^в:::].1 ['* ц''", у в!кн! о6'скта [|епо1" Ёатиснувш:и на кнопку '::'' Б!ст{ г;пеэ (рядки) викличтев|кноредагуванняц1е1властивост|(в|кно$|г|п81|в! 8итр!ть сдово мепо'| е0|!!ог - редактор 6агаторядкового т1одя)' ца кнопц! ок' клацнув1пи з ций в!кнотш' та вак1нч|т' р'йу ""''',"" п1еп1о (об'скти типу | коцтекстове 13. Бставте у форш1у ]!1а|п]!1епц ! Роршр1\{епш)' е-*! ы -ь+ йа!п[ч:1епц Ё] ! ! Роршр|м!епш .0,ля шього використайте-кош|поненти в дов|льношлу ш|ктогра1ши Б "*й''д'." в|Ё!!"'а' Ровтатпуйте про?рц'мш вонш бу0упа'ь нена ептап1 вшкот[с!ння право!

1}|е}1с

ти!сц! фортши'

1(|.

{3апрогра:шуйте ко1шанду ''0ч*тст*\т|{ поле виведення'' !-().,|()!!|!ого 1шен}о' скористав1цись п[етодо:ш 6!еаг о6'окта !\]!епо1 . !![етоди об'екта _ це тта6|р функц|й, як|, аналог|нтто .г1с; :г.::::<:

т'ивостей, застосову|оть до об'скта. '[к ! у випадку

|].'!11()'г!'|!!()(]

'г|, |тш'я об'екта в|д {ш:ен| його метода в|докрем.'|1ос1'|,(:'! !с|)1!|| :сото. Биконайте поле 1}1{!]()/цс:т!:птт'', коп{анду птет{|о "Фчцстити |1е запуска1очи шрограму }1а виконання. 3'явитт,с.*{ :}1!|'(}'!'()|!!(1! т|;ункц1| реакц|| на под|то виклику ц|е! котиандтт. :;||| :;::::п: лпт[ть команду

/(сг1ня

}

виклику

об'екта мепо1:

}детоду

€!еаг

для

о!1ище}!!['|

!!().]!5! !|!!!!('

ва:.0ц:шшлтш.

!

(;2

163


уо!6

-'а.1са|!

|Ёогп

1

: :

}'.36''т[3##ж

{ [\:!епо'1 -> ё!еа();

(рядок си:швол|в). Биконайте ко1ианду "|[рота6ул:овати'' 3 годовт{ого ме}{|о' кл&цт{ув1ши на н|й один раз" 3'явиться 3а"готовка функц!!' яку в&повн!ть так:

7,"!3/)'""[{{'!,!;''у':##:::"

!ншлшй номер, йоео не вс;правляйгпе 8цклцкаемо мегпо0 о6'скгпа йегпо1 , якцй очцщас бааапоря0кове поле реёаеування // 7епер клацн!гпь на форм!

// 6угпо || // //

уо!0 {

{

-{аэ1са!! ех!1('|

\

]Богп1::}{5Ф!!с&([Фб!ес1 -$еп0ег) /| || "|(|нець"

);

[уп [х|5-|м'я

5аме А!!)"

3акршваемо в!кно проарамо |/7епер клацн|пь на форм|

-'Фнистити

(Ё|!е

подету1 редагування

?ех!);

|/ @Фрэкуемо нцс!1фе 3начення л!во'[ меж! // па правб[ меж| // Фёержуемо чцслове 3начення кроку !/ 8 о6'скгп Ау1егпо1

5|п(х);

_>

6!.тео[е6)

// Фбчцслюемо 3начення функц[:'

//

)

22.8пкотт'айте програ:шу | поексперип|ептуйте ня:ши л1во[ право[ :иезк!

з

р1зпитии зпачен-

та кроку аргу1шепту. 3акрийте в1кпо

програ}у!и "!абултовання фувкц!!''"

створепу програп{у у сво!й папц1. 24. 6твор|ть ехе-файл ватцо{ црогра1ши. 25.3акрийте €++ Бш|[0ег, загцет!ть створеву програ1шу пайте обчисдешпя для р1аних початкових дапих. 2!}. 3борепс!ть

13).

ме-

по'!, вводячи та коректу}очи у г:ьому будь_який текст. 3верн|ть увагу на те' що в цьому в|кя! !:о}кна вико1!увати так! ак д!| з текстом' 8к | в текстовош!у редактор|: виокре]у1лювати фрагш:ент тексту' коп!товати, пере}1осити чи видутати тдей фраг:шент. Битр!ть текст 3& допомого1о ко1![&}{ди годовного 1иен10 "Фчистити поле виведення''. 11['е раз введ|ть текст ! вит_ р|ть його 3а доцо:т1ого1о ко}{текстового мен1о (для виклику контекстового ш|е!11о фортии потр!бно кл&цнути право:о клав|тцето митц! на в!льно:шу м!сц! форми). 3ах!ттч!ть ро6оту програ1\1и'

]ех!);

1!кщо сгпо|пь прапорець',!.!а екран,' Формуемо | мпвтюмю у гюгю йатр1 сшмвольн! ря0кц 3 ареуменгпу // па значення функц[[ [т:'!епо1 -> |_!пев _> Арреп0(Ё!оа||о$|гЁ(х, 1|Ё!хе0, 2, 2) + ,\1,+ г!оа1то31гг( у' [1Ё1хеё, 2, 2));

3аувоэсентт:с.2. 3начегтл*я вдастивост! (Фрми йепц автоллати![но вста-

з багаторядкови]и

{ех|);

|/

Роршрйепш1

|{оексперитшентуйте

_>

->

= $1г}оР|оа1(Ёё!13 _>

у = 1{ (6Бес}<8ох1

.(в!в| клацн|ть на команд| контекстового тшен1о "Фчистити поде виведення'' у в|ктт1 Роггп1.Роршр}1епт:1 (виклик цього в|кна див. у п. 14). 1екот фунтсц!| очищен1{я такий са:иий, як | у команди головного мет{1о' а са}!е: йепо1 _> €|еа(}; (див. п. 16). 19. ''||рив'япс!ть'" контекстове 1иенк) Роршр|!/!епш1 до фор:ши Ёогп1. Ёасоцн1гпь но фор;п! | задайте вдастив!сть фор:шш Роршрйепш як як йа!п[чл1епц1 у момент створення гюловног0 менто (п. 20. 3апуст|ть створешу програ1цу та досл|д!ть !} ро6оту.

[

{

поде виведенпя'' коцтекс-

новл1о€ться

:

[т:1епо1->!-!пев_>Арр?п0(''А1|"); // вспавляемо ряёок з п!ёлцсамц сгповпц!в ареуменпу \ ! 3начення // функцй'{ нерез па6уляпор \[. 8очцнаомо гпабулювагпш з л!во|'меж!, / / гю;<ш арут'мнгп х ге гРрвцц4]!пь пщву мех<у 3 пе внц м 0опуском : {ог (х= а; х < 0 + б/2; х+= }т)

//

18. 3апрограп:уйте копланду

тового }|опк).

|!оа1

коман0са

3береэк|ть в!'ко!{ану на даний моме1!т фортцу у сво|й папц|

э

1Рогп'! :},!3Ф!!ск(тоь,ео{ -$епсег)

|!оа| х, у; {|оа| а = 51г[оР|оа1(Ё6!11 !!оа{ б = 51гтог!оа{(Ёс!12

' ко:иавду ,'1{|пець'' годовпого ]шепк)' скористав17. 3апрограплуйте 1цись стапдартпок) фушшц!ето ех!((). уо!ё

-|аэ|са1!

!

вико-

26. |1роде:шопстр1йте спворещ/ фортшу ви|{тдадачев!' 3ак|шч|тъ ро6оту.

8прави 1. ,(одайте до ко1{текстовотю менк) команду ,,!{йе"т!!ъ'' ! зашротра:шуйте !!.

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

::<г;;ц|'''

клацнув1пи на котшанд! менто "$|1тець''.

г':тбултовання функц|1 !. 1! пох1дно!' Биб!р вар!анта та6ултовплг::от (:; :;т;х|дно:о чи без не|) зд!йсн|ть 3а допомогок) додаткового прапор!('(. 110казка. 8иконайте так! д!|: . вставте у форму об'ект типу €[:ео&8ох (прапорепць), пл:п7ц::[!,п.с.

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

його властивост|

6ар1!оп

зг!ачення "||ох1дна'', вибс-'р1тт,

пису один |з кирил|зованих тприфт!в 12-го розм1ру,

те вст&влений об'ект.

,:1..:::: :г1;1

п;г.т1>1тз::.ял[.!

о з:ш!н!ть програмний код команди,,||ротабуллолз::ти''; 4. Бизначте к].льк!оть елемент|в м&сиву б|льт::их, ::1;гс 0,5,

;::т:х,

164

н|]к 1.

!

мс:п:_

165 !

|


б. |!ередбанте

у створен|й

$ 5.

для визначен_

програти! додаткову:шох<лив|сть

ня максимальног0 та мй|:шального значень футткц|!.

Бивчае:шо англ1йську пдову. Фб'екти: ф1гура, таймер' 1}|ульти1}!ед[йний програвач' подв[й|{| к!{опки та |[1дитсатор стану

|!!0казюа. ]|' т!л! функц!! Бш{1оп1€!!с[, що описуе програмний код кнопки "|{рота6улховатц", скористайтеся кома1{да1[и: 1а]=э!п(а)*':; 11 (пах < у) пах

// 11а

//

= у;

|

понагпку функц!1':

1!1ета роботи. Розробити програму для перев1рки внань англ!йських сл|в 1шляхом тестування. Ёористувач 1у!ае 3а о6ме-

ццкл! спа6улювання'.

6. 3м!н!ть функц!! комат{ди "|[ротабултовати'' так, шдо6 для ув!тшкне_ ного прапорця ''у штасив'' виведення результат!в виконувалось в однови_ м|рний масив. 7. 8ставте у форму об'ект €!таг{ !з закладки А0!{|опа1 дт:я побудови

}тсений час ш!етодош| перетягування

1.00 '!.10

'*Ё;а у 0.84

пч1

1.40

0.99 1.00

'1.50

1.60 1.70 1.80 1.90 2.00 2.10

2з0

8йпф9ф1сЁ:'1'1';'1:5'

#. н|ъ,|Ё!з

'

,'г,,,1'.9'ё!5

0.96

льЁ:йах3]|];|

г**ф

1пп

]|

,1.

й.опФ

..:.]..].-

г н!фъй:1:

0.89

1.20

'!.э0

три мал}онки

8ин|А '

н

розтатпувати

п|д в|дпов|дними англ|йськими словами (див. рис. 14). 3астосувати |ндикатор часу викона11ня 3авдання' 3вуков! ефекти та навести анал!з-п|дсумок тестування.

граф|ка функц!|: пРф

ствоРвння нАвчАльно! шРогРАми

|"!!

,

'\

1: ,,.!

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

....

!]

:

!

!

:!,.

..?: /

0.99 0.97

] ,оо

0.91

,

1

!' . -{:,1:: 1.. .-:1,

:'::

|ш|

:::

.

0.95

.,.'

------:\ /-: ,$'[.!Ф,,,. [ жу.ь ! ;!$:з' .':,

п

"]#

Р}ЁЁ|{п'й$6 $,08 $.в0 в.в6{Ф 6!?9!9;00!9,в0|

0.86 0.81

075

,{в|н1 клацн{ть на ньому ! на закладц! $ег!ев, клацнув|пи на кнопц1 А06, у в|кн| ?ее6}таг! 6а11егу, ви6ер!ть п!ктограму потр|6ного граф|ка. Бабору даних' що в|дпов!датиме цьо1иу типу граф!ка' присво€ться стандартне |м'я Бег1ез1. |1оставте ни забер|ть прапорець 39 за вдасни:ц ба}кат{ням + Ф&. ||оекспериментуйте з р!зними закладками в|кна Б0|[|п6 6}таг11. Фтвор|ть додатковий пункт менто або вставте кнопку "$амалтовати граф|к'' дл'я отримання граф|ка | запрограмуйте (наприклад, кнопку) так: уо!6 {

-{а5|са|!

]Ёогп'| ::|х!3Ф!!с[([@б!ес{ -$епёег)

{!оа| а = $1г[оР!оа1(Ё0!11 _>1ех1); // Ф0ер>кусмо чцслов] значення л!во[ меж| {!оа| б = $1г}оР!оа1(Ё6!12->1ех|); // гпа право[ меж [!оа| [': = ${гтог|оа1(Ё6!|3->[ех1); |/ @0ержуемо чцслове 3начення кроку {ог ( !!оа| х = а; х < б; х += [':) {5ег!еэ1 ->Аё6( з|п(х)' Ё!оа{}о5{гЁ(х'1{Р1хеё'2'2)'

с!

Ре6

)

Ёабути

навичк|в

роботи

з таки1ши об'ектами:

геош1отри|!!|||

ф|гура (5баре), таймер ([!пег), мультимед1йний прогрпвп.: ([\:'!с; 6!аР!ауег), спарена кнопка 3 полем редагування (65р!пЁ0!|), !пг71:: катори стану (€аш9е та Рго9геээ8аг).

;}

}

|[оексперитиентуйте з р!зними закладками в!кна Б0!{1п9 €}тат{1' ш1ора3у запуска1очи програму на виконання 3абер!ть легенду (!-е9еп0), мар_ кери (Ро1п{э) ! п|дписи до них (1!1аг[з). |1ридумайте та вставте 3аголовок ([!1!е) та л1длие (Роо{) до граф1ка. 8. €у:ш!ст|ть побудову граф!ка з табултовання:и функф!.

1еоретинп! в1до:иоет|. Розглянемо деяк1 нов1 об'ц:пст'в.;. !аймер ([!пег, п|ктограм'' Ф, ,,а закладц1 $ув{сгт:) !]}!|с()|)[4()

1'ову}оть для

повторення

фрагшлента

коду

прогрд1ии

3 !!()||!|()!()

:тер|одивн|стто. Б!дпов|дший фрагмент розта|||о8}|01'!т у

т'1.:п!

167

!66 1{


|1ер!одинн!сть функц!! опрац|ова|1ня под|! Фп[!пег таймера' !п1еша!. власзив!стто 3ада1оть м|л!секундах Ёй***, *" у '.йм.ра Ё закладщ1 на |еометринна ф!гура ($}:аре, п|ктограма Аё6||!опа1) признанена для зобрахсення елементар}1их геометричних ф!гур | мае, 8окрема' так1 властивост1: 3ластив1еть 8гцз}:

$Баре Реп

бпис влдстивост| )(арактеристики

.

[1риклади 3пачень с!магооп

8гцэ[-€о!ог:

|п:!е0!аР!ауег1 ->Ё|!е!.!апе="повне !м'я в!део_ ни

\:!е6!аР!ауег'| ->9реп(); 1т:!е6!аР!ауег1 ->Р!ау()

;

€ арена кнопка 3 поле1ш редагув&ння (€$р!пЁ6!|, п!ктогра:ша п !{Б цд закладц| $атпр1ев) при3начена для введення та корекщ!| ц!лоиислового 3начення деяко| величини п|д нас ро6оти програми. Бластивост! кнопки: Бластив!сть

($!у!е) заливки

Форма ф|гури

(прямокутник з! скру}леними краятии),

Ёпаб|её

1!1оэтслив!сть будь-

е!Б!!1пзе^ в|3ошаге

!псгегпеп|

)(арактеристики

йах!а|це

}{оок зти!ни

1{омплексна властив!сть

м|пуа!це

гпдниш| ф!гури

Ё6!|огЁпаБ|е{

э1Роцп0Рес!

[1риклади 3пачень

Фпис властивост1 п1]я мого оелагування

о 8гшз[_$1у!е: бз$о|!6 /стгтт!льний). бэ!е(!са!

кольору (6о!ог) | стилто

ауд!офайлу'''

[!1охслив!сть

оедагування

йаксимальне

1гце" Ёа!зе

якого

[гше, Ёа!эе 1: 4 (ц1ле число) [{!ле число

3т!ачення

1[|ле число

1!1!н|мальне значецня

1ндикатор отану (66аш9е, п!ктогратшв к на закладц! Багпр,щ на закладц| \А/!п32) використову1оть для наочно! демонстрац|[ етану виконання деякого шр0цесу. Розглянемо три вл&стивост| |ндикатора €6аш9е: [ез, Рго9геэ$ваг, п!ктограма

3ластив!сть

[|риклади значень

Фппс властивост|

(горизонтальний рядок), 9&Р!е (кругова д!агра_ ма), 9[1ех1 (процентне 91<Р{ог!:оп|а|8?г

(!п6

[ип |ндикатора

Рго9гезэ

8!добра+кае стан

в|лобоа:кеттття)

5Ботш[ех!

[{|ле висло м!атс [т4ах!а!це | [ту1!п!а!це

[ндикатора ,{одатково в!добраэкае стан у поопентах

1гце, Ра!эе

)(!д роботи

|.

3аваптапсте еередовшще в|зуальпого програ]иувапшя €++

.,

3апп!ц!ть 3агодовок (Фар*!оп) фортии 1шова _ тест5гваппя''.

:1.

Бц110ег.

з "Рогтп1'' ва "Апгл1йсьхса

8йпдовтесь в!д ус1х систе]ивих квопок фор:ии' задав1пи :}|!ачеппя га.5е в ус1х поаиц|ях властивост1 8ог6ег|сопз: Б|5уэ|о:п_ [!!!епш' Б!1!/|!п!тп!:о'

Роботу

б|йах!п1ае

та

б|}!е|р.

з 11рограмото вавер1цувати:![емо

ку ''8их|д".

Розта:ш5йте па форти! об'окти так, йто так| властивост! о6'ект|в:

}{атиск&!{ця1и !!{1

як пока3а||о

]с|!()!|

ппа ри<:. | 5

1

168

!69


!

меё|аР]ауег1

!!з!б!е

Рго9геэз8аг1

[йах ]т4!п

0

во!1огЁпаь!ео

г а!5е

5р!пБё!|1

[ч:|ах!а!ше

10

]т/!п!а!це

1

!а[ше

|-отово

(!пё

0яп}!оп

5паре1

8гцэ['т-6о|ог

$]':аре2.' 5!':аре3

$Баое

]па9е1' !па9е2' |:паое3

!гше

6ар1!оп

Фбов'язково т:атисн!ть

б.

}1а

кноп_

1

[|

-{аэ|са!!

Ёогп

1 : :1

!пег1 1!пе([Ф5.!ео{ .. _

11-аье!'':_'м!з;ь!е1 |-абе!1 -> у!5!ь|е 1а!5е;

е!зе

=

!-а0е!1 ->

9!э!б!е

)

3апуст1ть програму

|

=

|гце;

-5еп0ег}

'

// |/

9кщо поле св][пцгпься

||

!накше 'поле засв!нусгпься

попе аасцгпься,

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

|/

7.

*Ёогп1

вх<е е в заеогповц| мо0уля Ёаявн!огпь клацання масл| // !{оор0анагпо мшш! всере0он| малюнка !п| зп!'{х, /| 1очагпков| коор0шнагпш малюнк|в !п1 х1, х2' х3, епцтп !п|о {г!0п|, шгоп9, поге) Резульгпагпц пес[пу

ьоо| с|!ск

=

|/

Р!1еэ \€огпхпоп

Р!1еэ \ 3ог1ап0 51паге0

_> Ё!|е},!апе = "1а0а.шау"; -> |т:|е0!аР!ауег1 -> Ё!|е[,]апе = ''0!п9.тдау";

8|ёкршвасмо плеер _> йе6!аР!ауег1 _> Фреп(); // Б|0гпворюсмо звук Рогп'| -> !т:1е0!аР!ауег'| _> Р|ау(); // 3!6кривасмо в!кно пов|0омлення !!

(пз9

!'

(пэ9

!{

(пэ9

Ёоггп1

Рогп1

== г!9!.:1) Арр|!са1!оп -> [/!езэа9е8ох(''[1равильно!",

"[ов|домлення"' йБ_Ф(); [!!езза9еБох("Ёеправильно!", ''[ов!домлення"' йБ_Ф(); == поге) Арр!!са1!оп -> [/!еэза9е8ох(''6пробуйте ще раз!", ''[ов!домлення"' [т:'|Б_Ф() -> |!пег1 -> Ёпаб!е6 = |гце; |/ 3апускасмо гпаймеро _> 1!пег2 _> впаь|ео = |гце; _> Рго9гезз8аг1_>Роз!1!оп = 1б6: // !н0окагпор с!пану - на почапок _> == шгоп9) Арр!|са1!оп

_> !па9е1 Рогп1 _> !па9е2 Рогп1 -> !па9е3 Рогп1 _> [па9е1 Ёогп] _> !па9е2 Ёогп1 _> !па9е3

;

_> 1911 = -> |_е{| = _> [-е1| = _> }ор = _> |ор = _> }ор =

х1; х2; х3;

|/ |/

1оверпасмо малюнкц у вцх|ёне положення

у' у; у;

)

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

тиад1опки [ас{огу.Бтпр, э}п|рр1п9.Бгпр ! [1папсе.Бгпр з

8ставте папки €:\ Рго9тагп

'70

!/ !!ей ряёок

5п!{{у 'а|5е у

/| 3бер|еаемо понагпков1 коор0цнапц // л!вцх верхн!х куп!в |/ тпрьох малюнк!в у форм!

Рогп1

Богп1

переконайтесь' що т{апис на форти! бли-

Ёогп1

//

Ёогп1

1иае.

]Ёогп1

1Ёогп (Фшпег)

3упаняемо паймери: Богп1 _> [!пег1 -> Ёпаб|е6 = {а!зе; Ёогп1 -> 1!пег2 _> Ёпаб|е0 = [а!зе; // 3нипусмо 3вуковцй файл: !{ (пэ9 == г!0|1) Ёогп1 -> йе0!аР!ауег1

е!9е

гше

шя повиоп[ле||ня ''Фбов"язково натисп!ть ша квопку ''|отово'' п1сля розпх1щевпя рисушк1в!!!'' так; 1

:

{

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

!

:1Ёогп'1 (тсопропеп1- Фшпег)

//

оисунк!в!!!

уо!ё

:

мо!ё Реэш!1(!п{о пэ9)

ку "[отово" п!сля розм!щення

\:!огё\л!гар

1

)

б&€!оэе 8их!л с|!п{о8[ э1Роцп0Рес1

51ге1сб

!-аБе]1

[Рогп

х1 = !па9е1 -> !-е1|; х2 = !па9е2 -> !_е{1; х3 = !па9е3 -> !-е{{; у = !па9е1 -> [ор;

ькок

6ао1!оп

8118!п2

-'аэ|са!| {

5

(|п0

8||8{п1

8.

10о

Роз!1!оп

$р1аэ}п \ 2б6€о1ог у об'окти !па9е1' !па9е2 | ]па9е3 в|дпов|дтто. Бставте п!дписи до цих :шалтонк|в (див. рис. 15). 3апрогра:шуйте конструктор фор:ши 1Ёоггп1::1Рогп1 | функц1то пе5ш!{() пов|до:илепвя ре3ультат|в тесту:

\

Ра!зе рбЁог!:оп1а! 10о

Фг!еп{а1!оп

\ 1гпа9ез

(5|:с:./[.тп::

заповпеппя 3аготовок цаведепих фупкц|й спсорис:т'::!!'г(|(:|' :!:|_ кладкохо' !уепЁо в|кпа 1пспектора об'скт1в пер|[[ог() м]!.,!|()|||с!!.

\7\


уо|6

7Рогп1 ::!па9е1 [т4ошзе9ошп(7Фб|ес1'5еп0ег, -_[а5|са|! [[т:|оцзевц{!оп 8ш1!оп, 1$[т11|5{а1е 5Б!{1, |п| х' !п| у)

|гце; з||!{| = !; {

// с||с* -

с|!ск =

з[!{!{

=

/|

};

це !н0шкапор напцскання на

клав!сшу мшш|

12. 3апрогра:шуйте

кпопку''|отово'', яка перев!ряе правильв!сть

ровта!цува1|пя }|адк)пк1в усередив| ф1гур: уо!0

3апам'ягповуемо коорёцнагпу (\;у) [почкц

/! клацання мц!1!ею всереацн! ма!1юнка

тРогп 1 в11в1п 1 Ф!|с[(}Фб|ео| *5епс@0 -_!аэ|са!! // Ё!кщо: перьшой малюнок у 0руе1й ф1аур| { $[аре2) && [{ (!па9е!п$баре(!па9е1' : :

/! ёруешй ма!1юнок у п'ретп|й ф|еур|

)

//

уо]6 __'а5|са!] }Ёогп1 ::!па9е'! [т:!ошзейоме(}@Б]ес: -$еп0ег, т$п!'{5{а{е $|!{|'

{

1п|

{'

!па9е!п9}'таре(!па9е3' 5[аре1 ) )

Резш!1(г!9[!);

1п1

{

[

)

уо!ё

\

-'а5|са|!

[Ёогп'1 ::!па9е'| |1;|оцэе1]р(1@б!ес{ *$еп0ег, [}:|оцэе8ц|1оп 8ц{!оп, |$[т!!|51а1е $п|'!' |п! !,' !п1 1)

{

// 3апам'ятповусмо, о!!с& = |а|зе;

що клав|сца мшсл| в!0пущена

)

3верн!ть увагу' що програма не шерев|ряе' на яку саш:е клав|-

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

типу.

10. Ацадог|чпо 3апрогра:шуйте в!дпов1дп! под!!

|!я двох !птцих

1}1а]тк}пк1в.

для перетягувап-

11. €твор1ть фувкц1:о !па9е!п5Баре дл8 перев!рки розта!шувапня ш|а]!к)шка (об'скта |гпа9е) в середип! деяко[ гео1иетр!8[по! ф|гури (об'скта 5[аро). Боо| !гпа9е!п5баре([!па9е- !,|$[таре" $) {

!' ( (! -> !-е|Б (! ->

ге|цгп

(| _> (| ->

=

1_е11

[ор [ор

|гце;

172

!_е|{)

&&

+ ! -> \А/!0|[| <=

5

_> [_е'{ +

>= $ _> 1ор) && + ! _> Ёе!9[| <= 5 ->

е!зе

ге|цгп

)

5 ->

'а|9е;

1ор

$

+

$

-> ш!с1п) && _>

Ёе!9}:{)

/! !|]алюнок о в сере0он| ф|еурш

!! А/!апюнок е поза ф|аурою

)

е!зе

1)

|/ 9кщо нагпс;снупа клав!сда мцш], зм|нюомо // коор0с;нагпо малюнка на велцчцну // зм!нц коор0шнапо !па9е1_>!-е[1 = !па9е1_>[-е1! + _ з|:!!|!; |/ вказ!внцка мош! (\;!) з !па9е1_>1ор = !па9е1_>[ор + 1 _ о[!$}; // урахуванням йоао // зм!щень у сере0о;н| // ма!1юнка э!'т!|!\' э|т!{!{

!| (с!!ск)

$!таре3) && прегп!й малюнок у перш|й ф!еур!

|па9е!п$[аре(1па9е2'

8еьц!1(шгоп9); )

13.3апрогра:шуйте другий таймер' який 3абе8печ/€ !ядикац1то часу викопашшя в{д 100 до Фо/о з| 11|видк!ст1о, оберпево про_ порц1йпото до ч!!сда в 6$р!пБ6!|1. )[' випадку' коли користувач не встиг ро3тат11)|вати мал1о!{ки у пря1у1окут!{иках | н&тис!{ути на к}|о!тку "[отово'' у в!дведений час' ттод&€ться ввук 'д1нг" | в|дкриваеться !нформац1йше в|кт{о 3 пов|доп1лец1{ям "6пробуйте :це раз!''. уо!6

]Ёогп1 ::|!пеР1!пе([Фб!ес1 *$еп6еф

-{а51са!| { // 3а0асмо

у'цвцёк!сгпь

руу

!нёшкапора:

1!пег2 -> !п1еша! = 6$р!пЁ0[11 -> !а!це " 50; /| Брацюе |нас;капор насу: Рго9гезэ8аг1 _> Роэ!1!оп = Рго9гозэ8аг1 -> Ров!1!оп _ 1 //

9кщо час вцчерпано "ёпро6уйгпе ще раз!''

;

|| (Рго9геэвЁаг'| -> Ров!1!оп == 0)

Резц11(поге);

)

14.3берешс!ть програтшу та проокт у робот!й папц|. 15. €коп|тойте :иувлтин! файли йп9"тшат та {а(а.туау

у

роботу папку а папки :€ \'1{}[}Ф}у$\мво1А. 16. 3апуст!ть програ1иу. перетягуйте ми|шек) 1шалк)пки в серодину в|дповйпих ф!гур. 3ак!н"л1ть роботу.

свок)

Бправ:: 1. 3абезпечте мохслив|сть перетягування мал1онк|в лиц:е л1воп() пс.:п:п в!тшето миш:| (див. п. 9). 2. 3бйьп:!ть удв!в! вастоту 6лимад:ня т€ксту "Ф6ов'язково нати<::д|'г:, :г::

кнопку''|отово'' Ёсля ровм!п4ення рису:тк{в!|!". 3. 3ам!н|ть у програм| !пдикатор стану типу Рго9гезз8аг }:а !::7цг::с:птт;;> типу 6аш9е. 4. |||д6ер!ть найвда'л!тпу :пвидк!сть руху |ндикатора |[!)(;у | :т;;<>(:!'гг, о6'ект $р!пЁ0!{1 недоотупним для внесення зм!н. б. Билул|ть об'ект $р!пБ0!{1 ! задайте найвдал1тпу тпви,:1:с1с:т':' 1:уху !:: дикатора тасу безпосередт{ьо в проект!.

173


$ 6"

оБ'ектно-оР1снтовАнв пРогРАмувАння у

с++ вш11,опп, т€ ворегтня власних клас[в. Ёасл|дування

| в|ртуальн! вираз!в. мате1иатич}!их |нтерпретатор функц[!. 1!1ета роботи. Ёавчитися створ}овати та використовувати власн! клаеи, нащадки' в|ртуальн| функц||, програмно реал!-

3овувати деревопод|бн! графи. Розро6ити |нтерпретатор для обчислення значент{я математичних вираз|в, заданих як рядки сипдвол].в. } виразах об1ше)китись операц|ятли додавання ! мноэкення' як| 3астосову}оться до операнд!в чисел | зшт!нних. !еоретичн! в|доугост! й анал!з задан!. Розглянемо вираз ^ 2х + 4. (ей вира3 мо'т{е 6ути зо6раэкений у вигляд1 дерех'* вопод!бно! структури - графа (див. рис. 76 а).,(ля обнислення виразу' поданого графопл, наприклад для х:1, необх!дно, почина1очи 3 ни}кнього р|вня, обнисл:овати значення у вер_ 1шинах | поступово п!дн|матися до кореня (див. рис. |6 ь-а\.

_,/\. /\. /"

" 7\{

/

,*

,/\

/\

21

ь

,' Ршс' 16.3обраэюення аршфмепъшнно?о вшра3у у вшеля01 арафа-0ерево 3ведешто 3адачу до двох п!дзадан:

. по6удова

дерева 3а 3адани1ц виразом;

о обчислення з}1ачення вира3у зг!дно з побудовани}д дере-

вом. 3азначитцо' що опера{|| ,,-'' |& ,,/'', а тако'к диференц1товання вира3у розглядатимуться у 5 7. ,(ля реал|зац|! пертпо| п|дзадан| опи111емо новий тип даних 6азовий (батьк1вський) клас Ёазветшо цей ''вертттина дерева". тип 1е!егпеп1 - тип ,'еле1иент дерева". \акий 6азовий тип воло.тц|т'ипте сп!льнитии для ус|х вер1шин дерева властивостями, а 174

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

саш|е: вказ|вникашти

с|а55 те!епеп1

{

рго|ес!ео:

// 8каз!внцкц на л!ву ! праву те!егпеп1 *!е{,

-г!0!т1;

а|лкс.;

п!0ёерева

!{онспрукпор - с[пворюс об'вкгп за вказ!внцкамц ]е!епеп1 (1е!епеп{- !,]е!епеп{- г)/| на л!ву ! праву вер!1]цнц

//

{

!е11 = !;

г!9п{ =

г;

)

ршБ|!с:

-}е!епеп{(мо!ё) у!г|ца| ];

{0е!е{е

'!оа1

//

!еспрукпор -

!е11;

0е!е1е

ге:ц!{(уо!0)

3нцщус вказ!внцкц на л!ву | праву // версшшнш п!00ерева

г!9Б1;}

{}

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


,/!\ /'! [е1нттат[

$тшпБш Р1шн

\

ь&й

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

Ршс. ]7. |ерорх1нне 0ерево юлас|в

с|азэ [.,!цпбег: ршб[!с [е!епеп{(

Розгляда:очи дерево 1шате]шатичного вираау на ртс' 16 о,

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

176

11оа1!; // ё1йсне чцсло знахо0цгпься в привагпн!й зм!нн|й

{

ршб[!с:

|х|шпбе(|!оа[ Р):[е!епеп1(!х!ш!-!-'ш!,|-!-) // конс!прук[пор - прцсвоюо ншслу / певне 3начення, а { { = // вказ|внцкц на п!0поря0кован! версшшнш занулен|

Ё;

)

{!оа| ге:ш|1(шо16) {ге|цгп {;}

//

функц|я резуль/па!пу повер[пас чцсло [

];

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

}оться

|х] 1.|

!-!--вказ|вники.

Функц!я геаш!1() повертао значення числа. 1[е раз 3верне}до увагу на квал!ф|катор у1Ёца! в опис| ц|е! функц|! у базовотиу клас|. Б|н означае: якщо доступ до об'екта пох|дного класу \цпбег виконувати1\(еться через вказ!вник на 6азовий клас' то викликати1шеться функц|я ге:ш|1() пох|дного, а не базового класу. ||ро|лтоструетио це на приклад|.: ]е!епеп1- А = пеш ]ц!цп0ег(3);

// 7угп А

А ->

-

вказ!внцк на гпцп 7е|егпеп!,

ге:ш!1();

|/ 8цклцкаогпься

мегпоё гезш![() класу

-

об'окгп

[х!цгпбег,

класу

[х!огпёег

а не кпасу те!е[пеп[.

// 7ому повергпае[пься чцсло 3, а не вцконуо/пься поро)кня заео[повка // в!рлпуальноео мегпоёу ге7ц!|() оасу те!егпеп[.

фрагмент! викону€ться виклик функц!! \цпбег::ге,{,кщо 6 у базово:шу клас1 в опис| функц![ геаш!|() не було сдова и1Ёша!, то в цьош|у приклад| викликалась 6и функц!*п )|' щьотлу

аш!1().

[е!епеп1::ге:ш||().

Фпи:ше:цо

класи' що реал|зу1оть операц!|. Фпирати1иемос'[

на сфортиульован|. вище правила.

з|гцс1 Р!цэ: ршБ!|с |е!епеп|{ Р!шэ([е!епеп{* !, |е!епеп1- г):[е!епеп|(!, т) // консгпрукпор - вцклцкас // конс[прук!пор базовоео класу { {1оа| геаш!1(мо!6) || Резульгпапом е оума резульгпагп!в л!во[ | п!эаво1' {ге|шгп !е[1_>геаш|{() + г|9б1->геац!1();} //п!0поря0кованцх вор!1]цн

1;

|2 с++

\'17


Б"ББББ!ББ''т пцБ|]с:

(!' Ё!,".с?"'".''"','!, 1е!епеп1- 0 1е!епеп:

'!оа|

те|еп9п1* {огп(Апз!$1г1п9 в) // э _за0анс;й ряёок сцмвол!в |/ Резульгпагп - вказ|внцк на верц!цну 6ерева побу0ованоео вцра3у

|! Альперна!пцвнцйопцскласуР|ц9 :

{

1е!епеп|* [;

г) {};

|п| р;

!"*,',

:"п

_>

ге:ш!1$ + й9Б!

_> ге;ц!1();

{

в1 э2

[

1'1,овотрукт", *:": :;;;;'*-.,.7"'''". правил 3ового кл&су зг!дт1о 3 11ертпиу[

Функц!я ге2ц!{() обчис_ ! прав!й г|лках' а тод! 1х п!дсуштовуе' л1о€ значенЁя на ";*;* клаоу {т:|ш!| (резульАнадог!чв' "*"'*!*'/ футт_кц!я !'е7шп() для 5!гшс| мц!{:рцБ]!с ]е!опеп|{

"""'"

й;;[6Б:Бй"'*"

!,

]ейпеп:'

- _);

= э.5цб91г|пз(1 ' р = э.$цб$1г|п9Ф + 1'

)

е!зе || ((р

}е|цгп !еЁ'>

//

{);

геаш!{()

"

знахо0цмо п|ёря0ко 31 | 32, операноц аперац[{,,+".

1) -

в.5цБ$1г!п9ф + 1,

//

ёпворюемо о6'скп Р!шэ з

Аналое|зно роз6швасмо ря0ок на

1)]/ операфю !

-

,,"" !

0ва операнёа в1 ! в2

р);

мц!1({оггп($1)' |огп(э2}); // Фпворюсмо об'екгп йц!{ !

= [€1л'

рецрсивно вцклцкаемо функфю

}! =

!/ |/

футтк-

"и"";!ддереватши'',' :1*''аеться |7'1 8м1н] ге:ш!1() ддя вер1тт']4э* *'::_: :_-:::х;:;-;; о т я чи ц!!ге:ш[()ддявер;;;!"*":_":_:1*-'::т;"1;":."**""#.'а:: ц!! вш:|нно!. 1оп0верта€ значе}1ня чу!с][а геашг:()

,*''ййти

геаш:*()

д'" ,''й"я'

!оггп 0ля знайёена;х операн0!в

9кщо ря0ок о зм]нною х: спворюомо об'екгп йоао чцсловцм 3наченням зм]нно1'х з поля Ё6!13:

пёш шцпьег($!гтог!оа{(Рогп1->Ё0!|3_>]ех|));

п(&а' &ь); Ёй;й:а"';

|'

мц!{

а

=2

9

!!п+с

0икликав]т;и функц||

Б= | ! 6

геаш[()

одер)кимо так! ре3ультат!1:

|! поверпас значення 14

9кщо вшраз заёано правцльно, в резульгпагп! в!0с!ювання

//

/|

п|сля того 6уде об_

всього дерева' числено 311ачет1ня вира3у ддя вир&3у 3 * 4 * 2: }'р""' ств!рий 1' |ршкло0 !!,91:":', класу ['!шгп0ег: 2 = 3' |.|цпбег а(3), ь(4},о(2);

ге|шгп

операпор|в

,,+'', ,,*" | зм|ннцх ,,х" в ряёку $ 3алцц]аспься коногпангпа. 6п'лворюемо о6'екп,,чцсло'' ! !н!ц!ал!зусмо

йоеочцсловцм 3наченням ря0ка в:

}! = пе|ш

[т;

/!

!х|шпбе($1г1оЁ!оа{(з));

1оверпасмо вка31внцк на сгпвореншй о6'екп

)

3цсновотс. 3а допо:шогото засо6!в ФФ|{ створено врут:тий та роз1пирення на6!р програ1шних засоб!в, ;;:*:! ро3в'явують 3адачу побудови |нтершретатора мате1шатич!!!|х вира3!в. |[родемонстрован| прийотии використання клас!в

/{,|': використантт}т ;!!|()'!'осову}оться

,,(!!!!}{х'

для

..

')' :!

побудови

й опрац:овання

таких

структур

як дерева' етеки' черги' динам1нн| списки та |н.

!! ёор1внюс 1? '/с7с!''р''ао -..^.''' 3 значення

об'екташхи яких 8ру{но Фтэке, ми отримали наб!р клас!в' на 6ав! математич1{ого вира3у' реал!вуват* .*р'*!,_'обудовапе пертпо! п!дзадав| ро3гля}'е1!1о функ_ ,[,ля завер:пе1{ня ;;'й; си1шво_ 3а' 3адани}д у вигдяд! рядка ц|1о, яка будуе таке дерево 1!1аяко1шу зтш!вна х по811ач&еться л!в математични1ш вира8ом' у у по_ 31!ачет1'ня зшх|ттно! х внах0диться ло1о д8тивськок) букво:о', {огп() формуе 19)' Фу:ткц!я л! редагув***" ео|*з 6;;' рис' 18' [початку фувкц!я ву!к]\у!к!в' у!х дерево внасл|док рекурсивг1 яа тт1яо}*{3 розкладае вид!ляс д0да}{ки' !ал! коэ*сет{ д0да11к!в *'''*", пот!м о6ро6ляс зм!нв! та числа'

|78

р):

е|$е

ъ;

й.}!,й}(|; а,ге7ц!1();

=

е!эе !| (в ==''х'') || || ,,чцсло'' й |н|ц!ал!3усмо

г!9}т[ _> геаш!1();

виклик

р.гв:ш!|();

э.Роз("-'')) >

о1 = в.9цб5{г!п9(1' р

в2

)

му достатн"'

=

{

)

{

// //

1

1

= !1€|л/ Р!шэ(|оггп(э1)' !огп(з2)); //

[

ф:1е!епеп1(!' ф

-

// п|ёверьшинамц - знай0енцмш операнёамо операцг{ "+'', // як} анал!зувапцму1пься рещрсцвнцмц в.}клцкамц функц|[ {оггп

||оа| геаш!1(мо!6)

нього р|вкя, де

// !

!| ((р = 5.р651"+'')) > 1)

]

- позцц!я опера[пора

чц "+'' ""'' ёов>кцна 3аоаноео ряака сцмвол|в !| слукан! операнён версшшно ,+" чц ,,*" /| 1кщо в ря0щ е операФя ,,+'' !/ р

!п: ! = э.!-еп91|(); Апз!$1г!п9 э1, э2;

ге7ц!|(уо!6)

)Ёд роботи ]}авацташсте ё** 8ц|10ег. ]}ати!ц1тъ 3аголов0|{ (€ар{!оп)

:гиразу''.

фор:ши

з "Рог|п1" на

"Фб.лис.л[с|||!']

||!дпяовтось в|д еистеп:пих [{попо:с фор:ии, 3ада:з|ши 3||1|!|о||||'! }:а!5е в ус1х повиц|ях власт1|вост| 8ог6ег|сопэ: ь!$у$|огпмопш, Б[!|,г!!п!гп!:е,

б|!1/|ах!п[е

та ь!не|Р.

1'оботу а прогр&1\4о!0 з&вер1]]ува.тир!еш!о н&тис|{д11]|'{м |:!!

! 0

:см

"Бих|д".

г1!{!

вад:вв!.

!{!{()г]_

|'<;зта:шуйте па форм! об'ектш так' як пока3ашо на рис. |.8. .!пед1ть описи кдас!в | функц|й, як! використовув&тип[утьс'| у

179


! п!сля рядка д-тя цього в!дкрийте в!к}то тексту програми

уо|6

тг''п1 -Ёогп1; // |]ей ря0ок уже е у проерам! 1 ] |1|1ц!| ! Р!цэ, ["!шпбег, Б'*'"-" ,р'.р.*""й *'д Б,""у клао!в те!епёп1, в|до(див-' 1оггп текст функц!| 6'рф"{в" д'р""* "1еоретитн| проект та 3береэк!ть

{

-1ав!оа|!

1

Ёогп

1

:

:8ц11оп

1

€!!с&(1Фб'!ес|

-5еп0ег)

тех1) : // 3нак!в п!сля ёесягп. крапкц |/ х - вказ!внцк на верйшну // 0ерева, побуёованоео 3а вцра3ом у пол; Рё;с] !| Ре3уль!па!п оочцслення х 3апцсуемо 1к ря0ок сомвол!в_ у пол! Ё6!!3 Ё6'13 _> тех{ = Ё!оа1то5{гЁ(х _> ге:1::1;, 25, //'* - вказ|внцк на вершс;г)у ёерева, '1Ё!хъс' !! пооуоованоео 3а вцра3ом у Ёё!!2 Р_1_ч.__=^.5',т''!п1(€ опбо8ох1 _> !е!епеп{'

ш''ст; й-анал!з1адач;'' цього шарагра6а). текст 1трограми.

->

[е}!);

х = {огп€6!11

'

о;'-

теьпеп1-

{х =

191'15',',

_>

|еп);

Резульгпап обниёленн2.-{(х) з'апшсуемо як ря0ок сшмвол!в _- ' ' вс!|4 -> 7ех| = Ё!оа!7о$гг(', _> геаш:[(), пг;хе3, аэ, оь;,;- -- - у ' Ё6!14

// )

+21*3 |,'.. -. '", ,, ,. .: :; .;.1т' ;_':;:+::]|]:,':-:;;;- ; *| ::

!). ,;

,.:

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

7

Ёогп

1

-'а5!са|! в ц1!оп1 Ф!!с[(8ц1|оп'!

::€опбоБох'!

6}-тап9е(тоь,ес{'$еп0ег)

{

);

// !ощсгпам| гпакож 3апцсц: 8ш!!оп1ё!!с*(€отпбо8ох1);

8о![оп1€!|с*([:!0!-!-);

)

3оувооюення.[. Фактичним параметром функц!1 Бц11оп1€!!с}< моаке бути вказ!вник на будь_який в|зуальний о6'ект ад;ке в опис| ц!е! функц|! формальним параметром сфортии, вказ.|вник на 6азовий тип 1@б!ес1 середовип{а в|зуального програ1иування

€*+ 8ц!!6ег (див. п-8). ?акипл аргу]иенто1\( *'*" бу'' тако'*с нуль-вказ!вник |т]!..!|-!-. !![' складн!:пих програмах цей пара1!|етр мо'*{ца використовувати для передан!. певно| !нформац!! у

функщ!хо.

Рцс' 19.

3ауваэсення 2. ||овторн1 ву!клу!ки функц!| 8ш1!оп16!!с&() п!сля кох{ного виконання под!| 6опбо8ох161'тап9е п{оразу т|риводит|\муть до створення дерев математичних вираз1в для х та |(х)' Ад;ке вказ!вт{ики на ц! дерева о локальвими зм|нними функц|! 8ш1|оп16!!с}<(). 1о-му побудован| дерева 3виц]уватимуться п!сля

[7ршюло0 роботпш прооромш

3авер|цення роботи ц|е! функц|! тцляхом неявного виклику

деструктор!в об'ект!в х та х

_>

точц1сть

обнислевь,

що дор!ввк)€

дво1и

тек об'екта €опбо8ох1 задайте числом

1х _>

-|е!епеп{();

Бправи

[.

пока-

|х:

-?е!епеп1();

||обудуйте дерево виразу 3 * 4 + 2, скористав1пись приклп71<;м !:г цього парагр:п4:л. ||!.0юозюо..(ля цього вставте у форму ",д'*'' ще одну к"опку ! 1,1>и 71с,71::т, |!оля ред8гування для значень фухткц|! геаш!|() об'ект;'{р, й ! а..|(.:::: '!!)!|! !!!!!!('',(()|!]:|я результат1в у полях Ё0!| скористайтеся функц|сю Ё1оа||о5!г: ;;,п::7ц!.пу,,?еоретинних в1домостей та анал1зу

|

Ёс!15_>[ех| = г!оа1то$1гг(р.ге:ш!1()'

,',

||Р|хе0' 25,

8);

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

!.!!!!!/(!!(! :толе Ё0!{ на форму.

180

<[:у:*кл1!|

! !

!огп()

.п':т :з|71.

181


$ 7.

Р03виток Ё[Ави(!ок оог! Р [++ вш!!,)ш1.

9;цосконалення 1нтерпретатор8 1}!ато1}!атичних вираз!в. Фбчислення пер1шо[ та друго! похйно! 1}1ета роботи. Розвивути навички об'ектно_ор!ентованого програмування' вик0ристав1пи для реал|вац!! задан! про |н_

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

пол!_

динам!тного зв'яаування ! в|ртуальних функц!й. )/досконалити !нтерпретатор математичних вираз|в (див. $ 6) з мет01о зна'ход)кення 3начення вира3у та його пох!дних дов!льного порядку. 3астосувати |нтерпретатор для роав'яаування задат! про пол!т ракети. 0бчислити !цлях' тшвидк!сть 1 прискоренг1я ракети' рух яко! опису€ться математични1и вирааом, який вводять у комп'тотер п!д нас ро6оти програми. 9 вирааах об:ие_ операц!я:ши дод8ва}тня, в1дн|мання' 1у[но}1{ет*вя ! д!лен'*ситись ня, як| застосов)|вати1шуться до д!йсних чисел ! зти1нних. :иорф|зтшу,

у|Ёца] уо!о 5е1-уаг(6ошь]е х) {

|{

0е'|)

!е{| ->

|' (п9п1) г!9[1

_>

ве1-маг(|); эе{*маг(|);

)

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

Апал!з задан1. 3адану розв'явуватиме1шо 3а схемо:о' аналог!чното до описатто| у $ 6. ,(ля цього створимо наб!р клас|в, зв'язаних м!яс собо:о такими в|днотпення1ии спадковост1:

с!аэз

Р!еа!: ршБ!!с

ЁоцБ!е ршБ|1с:

1е|епоп|{

!;

8еа!(0ошБ|е

Р) :1е|епеп|(|т|0!-!_,}.{ !)!-!-){1=Р;}

6оцБ]е геаи!1(то!ё) {

:е{цтп

?е1н:те:т[

{;

)

1е!епоп|'сору (то16)

Реа!(|);}

(]е|ц]п пош 1е|епеп{* ё!{!е(шо!0)

)

{ге1цгп пеш Реа!(0);}

);

&еп1

Р1цтн

й|пшв

Рце. 20. !ерорх1нне 0ерево

1\{ш1| }[у

де клас Реа! реал!зуе число, !аг _ зшт!нну, Р!шэ, й!пшэ, йш||, 8!м _ ариф:иетинн| операц!! ,'*'', ,'_'', ,'*'', ,,/'' в!дпов!дно. ,{о опису базового класу ]е!епеп! !з $ 6 додамо три в|ртуальн| функц!1

сору()' 6!1[е() | ве|_та(): с]а35 те|опеп|

!е{{ =

рш6!!с:

[; Ё9Б| = Р;

)

у!Ёца! то!епеп1* у|Ёца! 1е!епеп1*

\82

соРу() робить коп!:о об'екта ! повертае вказ!вник коп!то. Функц!я 6;1!е() шовертае вкаа!вник на створений <;б'ект класу Реа| з! 3пачен]|яу[ нуля для поля !, оск!льки гтох|,дц;ло:о будь-якого д!йсного числа е число 0. Аяалойчно реал!зуеться клас !аг: с!а93 уаг:рць|.с те!опеп1 {

{

Р]о|ес!ес: |е!епеп{'!е{{, -г{9|1; те|епеп| пе!епеп1- !-,[е!епеп!' Р) {

Фувкц!я

}!а ц1о

6оцБ|о х; рш6!!с:

!аг(ёошБ!е )(

=

0):1о|впеп(шш[[-, ш0!-|-) |;}

{х =

6оцБ|е геаш|!(то!6)

{:е|ш:п х;)

то[епеп!' сору(то!ё)

{г€|цгп пеш !а(х);}

1е!епеп!' 6!{{е(то!6)

{ге|цгп п9ш Роа!(1 .0);) то16 зе|-маг(6оц!!в |) {х = |;}

188


Реал!зац|я цього класу под!6на до попереднього. Функц1я перевизнанае в!ртуальну функц|:о з базового класу" 1_1ей механ|з:ш визначення ам|.нно1 е досить 3ручним: викликаетьоя функц|я эе|_маг() 3 аргу1\[ентош! _ 3наченням зм!нно[ для вер1шини дерева' ! по ц!ло:шу дереву во| верптини типу [ч,!цгпбег будуть наповнет1! цим 3начення1\[ ( див. опис !аг;:эе1_маг() ). Берштини |нш:их тип!в ли11:е передавати1цуть виклик 5е|_уаг() вниз по п!дпорядкованих ребрах ( див. опис [е!егпеп1::эе!_уа() ). за замовчуванням зм|нна |н|ц!ал!зуеться нудем' 1цо видно |з заголовка конструктора !аг::!аг(). Фпи:шемо клас Р!цэ:

е!епеп1

!аг::зе|_таг()

9|гцс| Р!ц5:рцБ!

{

йш!1([е!епеп1' { );

ёоц!!е {

ге|ш]п пеш Р!шв(петш йш!{( !е1!->6!#е()' г|о[1->сору() )' пеш 1т{ш!1( !е|1->сору()' г!9[1->0!#е() ) ); ) );

//

з!гшс| Р!м:ршб|!с [е!епеп{ {

9|м([е!епеп1- !-,]е!епеп!- Р):[е!епеп1(!-' Р)

ёошБ|е геаш!!(мо!ё)

Р|шэ([е!егпеп|' [,те!епеп1* Р):[е|епеп!(!-' Р)

[е!епеп1' сору(мо16)

{

ге|шгп !еп -> ге:ш!|() +

{ге|шгп пеш 9|м(!е{1->сору(), г!9п!->оору());} [е!опеп{- 6![1е(то3ё) {]е[цгп пеш 9!м( пеш й!пшэ(пеш йш!!(!е!1->6!!|е()' г|9п|->сору())' пеш [т:|ш[(!е|1->сору()' г!9|!->0!''е() ))' пеш мц!{( г!9!т|->сору()' г!9п|->сору()));

г!9}:1 -> ге:ш!1();

)

]е!епеп{* оору(то!ё) (

ге|цгп пеш Р|шв(!о1! -> сору()' г!9б! -> сору());

) );

)

]е!епеп{- ё!1{е(то!0) ге.цгп пе1ш Р!шз(!е{[

1епер розглянемо функц|то {огп(), яка 3а 3адани1и у|атематичним вира3ом будуе дерево об'ект!в.

-> 0!#ег()'г!9}:1 -> 6!|{ег());

) );

)/ функц!!

ня суш|и:

(ц +

Р!шз::6||!ег()

у)'= ц' +

+

використа11о правило диференц!тован-

у'. Фтатсе, диференц!1овання дерева

/'\ ш"

,/\

\''/

[т:!!пшэ([е!епеп!, !-'те!епеп1" Р):[е!епеп|(!-' Р) };

)

!е{1_>ге:ш!1()

-

г!9}т|->геац!1();

1е!епеп1* сору(то1{) { ге|цгп пеш й1пшв(!е||->сору()' г!чб1->оору());

184

51

= =

РоэЁгопЁп0(в'

э.$ц591';,9(1' р

"+")) > 1)

-

е!эе {

|| ( (р =

э1 э2

РовЁгопЁп6(з' "_"))

-

> 1)

1); = з.$цб$1г!по(1 'р = з'$цб5{г!п9ф + 1' ! р);

[| = )

!/

9кщо нагпрапляомо на

//

€пворюсмо

/|

9кщо нагпраплясмо на ''*'

"+"

1);

з.5ц09{Ёпо(р + 1' | _ р); = пе|л, Р!шз(!огп(з1)' |огп(з2));

э2

-

п€ш 1т4!пшэ({огп(э'|)' !огп(э2));

е|зе !| ((р = РоэРгопЁп6(з'

"-'))'

!/ €гпворюсмо 1)

версшслну Р|шз

версошну А/!!пшз

//

9кщо нагпрапляемо на '''''

//

ёгпворюсмо вврш.;шну

{

9.$ц691'1'о(1' р - 1); з.$ц651';'о(р + 1' | - р); } = пош йш!|(|огп(з1)' !огп(э2)); 51 52

)

)

||-----);

(

)

1е!епеп1' ё!#ег(то10) { ге|ц'п пеш й!пшэ(!е{|->0!11е()' п9п1->0!1|е());

|'т;

Анал|зуемо справа нал|во:

!! ( (р =

)

{

ге|цгп

|/

[

э|гшс| й1пшэ:рцБ!!с ]е!епеп1

(

{

!п! !' р' ! = э.!-еп91Б(); Апэ!5{г!п9 в'!, э2;

да€ дерево: &алог!чно створиш|о класи !нплих ариф:шетинних операц!й:

{

!п[ РоэЁгопЁп0(Апэ!51г!п9 з' Апэ151г!п9 вшб); ]е!егпеп1' 1оггп(Апэ!$!г!п9 э)

|е!опеп|-

+

|"1

6оц0!е геаш|!(мо!6)

{ );

{ге|шгп !е|!->гоаш!|() / г!0б!->ге:ц!1();}

{};

0ошб|е геаш!{(мо16)

}

геаш!1(то!0)

]е|цгп !е[!->геаш!|()-г!9п1->геац!|();}

{

{

!

}е!епеп{' Р):[е!епеп1(|-' Р)

[е!епеп!* сору(то!0) { ге|цгп пеш мш!1(!е11->сору()'г!9|ъ>сору());} }е!епеп|- 6!{{е(мо!6)

1е!епеп{

{

[-.

= =

е|зе !| ((р = РоьРгопЁп6(э' "/"))' 1||/ 9кщо нагпраплясмо

Ат1о|!

на

'/''

185


5'| = 5'!!ц05|г!п9(1' р

в2

=

[| = )

-

в.$цб$1г!п9ф + 1'

р);

пеш 9!т({оггп(э1)' {огп(з2)); |/ ёгпворюемо вершцну о|у

е!5е !' (5 == ''х") п = пеш !аг(); !{ €гпворюемо е!5е

[

ге1цгп п;

вставтё |1рогра]у{ний код опису кдас|в ! ф1'нкц!й, поданий у ,,?еоретинних в!дотшостях та' дттад!а]. 3адач1" цього :тараграфа36ереэк!ть цроект ! те;сст протр8]ши.

1);

|-

=

верц'цну уа{

пеш Реа!(91г1оЁ|оа{{з)); г: ёгпворюсмо Реа|

)

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

'т;

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

!1

::

:::;,:. . . ;

:. нцях ::.:,.' .... ::.:: .:

шлях];

!'

,!1:

-... .:

.'

11-..;49д9$:,;, ::]::;{:а!\!..:{:11

швшк|с{!'''''''''''''''',

1-;:::;:::!:: :::

:1]

р057йй0 : 1

::

..;]:1!1|р..:.1+'9:Р+!!}!1:'

|Ё!:

*

:

+!;

ы*;!з*ф*: и'!

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

'!1':

||2751в.в721

!:,:

]::::::..].:

:..::::::::

:::

' )-*

:|],}+..,:.1:

.

:::':]:.:::.,:::::-:::::::::,,

!п| РоэБгопЁпо(Ап$!5{г!п9 з' Апэ1$1г!п9 зшб) {

!п| != э.1-еп9!Б(); Апз!$1г|п9 р; р.$е{!_еп9|[(!);

|ог(!п!!=1;!<=!;!++) р[|

-

! + 1] =

5[!];

(р.Роз(зшб) > 0) ге|цгп ! - р.Роз(эшб) + е]эе ге|цгп 0; !1

!/ Ф6ергпасмо ря0ок 1

4.

;

)

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

)(!д ро6оти &вацта:ппв оередов]цце в1зуалъпого п[х)ц)а1|т}загвя 8** Бц|1ёег. , €твор!ть фор:шу' пока:запу п'а рпе.21. 3. Рвед1ть оп1!си клае|в | фувкцй, як1 в:шсористовувати11{)ггься у ц|й задат1. ,(ля цього в!дкрийте в!кцо тексту г]рогра1\ди ! п|сля рядка 1.

]Рогп1 -Рогп1;

!в6

Рцс' 22- !есптовц!2 ршкло0

Ршс. 2!.Формо "'{1ол1тп ра,сеп[ц'' ра|сепц''

5.

вщ)а3и у поля Ёс1!1 1 Ёа1Р й о!{1!ст|тъ поля в6!в' Ё6]14' е6.Б та ва]16. 3алгротра:шуйте кпо|пс).'в|оф". резулътатБ 3верв|ть увагу 1'а те' щ,о у виразах допуска}оться ли1пе опера''*' * , / , д\'.1сн\ числа та з1\[1}1т{а задана мало1о ц!: , ' '' латинсько1о л|терото. )[' вираз! дл"я. х не використовуйте ам1гтну *. ,[ля набору сиш{волу десятково! крапки у д|йсних вислах використовуйте си1!|вол' перед6анений операц!йното систе}'о1о комп'тотера. [естовий прикдад ! результати о6числепь показан1 х'а рэте. 22. !|'вед1тъ 1шате1у|ати[[п!

,1 та[сип1 !!ипо1у|:

уо!6

-|аэ!са]!

{

[е!егпеп1*

1 Роггп1 ::8ш|!оп'|

€!1с[(}Фб!ео|'5оп6ег)

х

= {огп(Ё0!1'|_>[еЁ); = |огп(Ё6!Р->]ех|); = -> с!''е(); '1 = ' _> с!'1ог();

[е!епеп1* { 1е|епеп1"

[е!епеп{*

ёоцб]е|=х->ге:ш!|(); '2 ''| зе{-уа( )( );

{ ->

1'| ->

Р

_>

зе|_таг(

эе|-таг(

[ [

); );

|п1 ргес!з!оп = 15;

!п| с!0;|5 = 5|гтог!оа1(оопбо8ох'| ->]ех[); Ё6!|3 -> [ех! = Р!оа!1оБ!гЁ(х -> геаш!{(), (|Ё!хе6, ргес!5!оп, 6'0!!$); Ё0||4 -> ]ох[ = Р!оа|1оБ1гг(' -> геаш!!()' #Ё!хо0' ргос!з!оп, 0.0!|$); Ё0!15 -> [ех[ = Р!оа|1о$|гЁ(!1 -> ге:ш!|(), {Ё|хо0, ргос|э!ог':, с!!0!!з); Ёо!{6 -> 1ех! = Ё!оа!1о8!гг('2 -> геаш!1(), {{Ё|хос], ргос!э!сш:, с!!р!!:;), )

187


6.

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

-'аэ|са||

|Ёогп1 ::6опбо8ох1 @бап9е0оь'ес! -$еп0ег)

{

8ш(|оп'| Ф!|с!<(8ц11оп1 ); )

Бправи

1. 9бчисл!ть значення третьо! пох!'дно!. .(ля цього введ1ть у форму додаткове поле для виведення третьо! пох1дно! та зм1н!ть прогр!мний

код функц|!

8ц||оп1Ф!!с&.

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

раз.

|8',{

''р,"у

список л]твРАтуРи [лушлаков ё.Б., 1{оволь А.Б., (лошрнов €.3. 8зьтк програмш1ироваттия б**. - )(.: Фолио, 2оо2. 2. !ьюхарстп €., €тпарк -[0. |{рограммирование на с++. Ё.: .(иа6офт' 1993. 3. [€ерншеан Б., Ршчш !., Фьюэр А. 8зьтк €и: задани по язь1ку ёи. _ 1!1.: йир, 1985. 4. 1[ороблев 8.( ут с++. _ 1(.: 8Ё!, 2оо2. 5. [{алсшотп.(. Фсновнь:е осо6енности язь1ка програмирования €**. Реализация язь1ка 1цгБо с++. _ м., 1991. 6. [!ратпа 6. ,$,зьтк программирования с++. _ }1._6|!б.-}{.: }!аво{!, 2оо3. 7. €шмоновшч €., Бвсеев [., 3аништательное программирова[{ие: с++. _ }1.: А€!-|{РБФ€: 1,1нфоком-|{ресс, 2001. (п1р10онов 8. Б.[., 8ойтпюов Б.[. Фбчисл}овальна техн!ка | програмуван!тя. - )(мельницький: хт1' 1992. 9. €тпэнлш Б. }!шппмон. Фсновьт программирования ||а с++. - м.-спб._}€.: 8ильяме,2ФФ2. |!.€тпроус7пруп Б. ,{,зьтк программирования 6**. _ 1\4.: и.в.к._соФт' 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. 1.

189


с!АР',,уЁт

ж

Розд|л 3.

вовьАш} с++ вш1[}вв

139

189

|90


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.