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