Seek(FileInput, 2);
немесе
Seek(FileInput, 3-1);
ПОҼК 042-11.1.20/03-2014
Баспа №1 кҥні 11.09.2014 ж. 121 беттің 79-сі
79
10.2 Әртҥрлі базалық типтерді біріктіру. Жазба типі
Массив анықтамасында айтылғандай, массив дегеніміз қҧрылымына
жҽне қолдану тҽсіліне байланысты, бір типті нҿмірленген тізімдідер. Егер
ҽртҥрлі типтегі мҽліметтер берілген болсын. Осы тізімнен белгілі бір жлыдар
аралығында туған оқушыларды сҧрыптап бҿліп алу керек болсын.
Мҽліметтерді сақтау ҥшін оған екі массмвке орын бҿлуімізге болатын еді.
Бірінші массив (snring типті) оқушылардың аты жҿнін сақтауға, екіншісі
сақтауға арналған. Егер бізге қосымша мҽліметтер (мысалы: сыныбы, ҧлты,
т.б.) енгізу керек болса, онда енгізуге тура келеді. Бір мезгілде бірнеше
массивпен жҧмыс істеу жҽне оларды смпаттамалары бойынша сҧрыптауға,
ҽрине болады, бірақ ҥлкен жҧмысты талап етеді. Сонымен қатар бҧл
мҽліметтерді файлда сақтау керек болса не істейміз?
Файлдар туралы сҧрақтарды талдағанда айтылғандай, файл элементтері
тек бір типті элементтер болып келеді. Олай болса ҽр тҥрлі типтегі
элементтерді ҽрбір типке – жолдық типке айналдырып, мҽтіндік файлдармен
жҧмыс істеуіміз керек.
Мҽліметтерді сақтай аламыз, бірақ болашақта бҧл мҽліметтермен жҧмыс
істеу жеткілікті қиындық туғызады.
Бҧл қиындықтан шығу ҥшін мҽліметтердің қҧрама типі қолданады.
Мҽліметтердің бҧл типі жазба деп аталады. Жазбалар ҽр тҥрлі типтегі
элементтер жиынтығынан тҧрады. Жазба элелменттерін қҧраушыларды өріс
деп атайды да, ҽрбір ҿрістің ҿзіндік атауы болады. Ҽрбір жазбаның бірегей
атауы болады.
Жазба атауы
Тізім
Ҿрістің атауы
Фамилия
Аты
Туған жылы
Ҿрістер мҽні
Маратов
Шынгыс
1980
Жазбаны ҿңдеу элементар объектҽ тҥрінде шығады. Мҧндай объект типі –
record (жазба) деп аталады. Олай болса, мҽліметтердің типтеріне байланысты
шектеулер алынып тасталады.
Жазбаларды сипаттау ҥшін, оның атауы, берілген ҿрісте сақталатын
мҽліметтердің атауы жҽне типі кҿрсетілуі керек. Жазбалардың жалпы тҥрде
сипатталуы келесідегідей:
Type<жазба атауы>=Record
<1 өріс>:<1 тип>;
<2 өріс>:<2 тип>;
……………………
:;
end;
ПОҼК 042-11.1.20/03-2014
Баспа №1 кҥні 11.09.2014 ж. 121 беттің 80-сі
80
10.3 Сыртқы кітапханалар. Модульдер
Модульдер жҽне олардың қолданылуы туралы айтпастан бҧрын, Люйс
Кэроллдың "Алиса Ғажайып жлемінде" ертегісінен ҥзінді оқиық. Алисаның Ақ
Серімен ҽңгімесі:
Иҽ бҧл ҿте жақсы ара ҧясы, - деп Сері еріксіз келісті. – Ең жақсы
сапалы! Бірақ ол араларға бір себептен ҧнамайды! Менде бҧнда тағы тышқан
қақпаны бар. Тышқандар араларды қуатын кҿрінеді. Немесе аралар –
тышқандарды. Білмеймін…
Ал мен сізге тышқан қақпаны не ҥшін керек екенін ойлап тҧрғам –
деді Алиса. – Аттарда тышқанның ҿмір сҥруін елестету қиын…
Қиын, бірақ болады, - деп Сері жауап берді. – Мен олардың менің
денемде жҥгіріп жҥргенін қаламаушы едім.
Білесің бе, - деп жалғастырды ол, ҥндемей тҧрып, - бҽріне дайын болу
керек! Міне неліктен менің атымның аяғында білезіктер тағылған.
Ал ол не ҥшін? – деп қызықты Алиса.
Акулалар тістеп алмауы ҥшін, - деді Ақ Сері.
Бҧны мен ҿзім ойлап таптым. Атқа шығуға кҿмектесші. Мен сені
шетке шығарамын. Ал мына ыдыс неге арналған?
Бҽлішке арналған, - деді Алиса.
Онда оны ҿзімізбен бірге ала кетейік, - деп ҧсынды Сері. – Егер біз
бҽліш тауып алсақ, ол бізге қажет болады. Дорбаны ҧстай тҧр, - мен оны осыған
салайын…
Бҧл оңай болмады. Алиса дорбаны қатты ҧстап тҧрды, бірақ Ақ Сері
ҿте икемсіз болды: ол дорбаға ыдысты салудың орнына, оған ҿзі қҧлай берді.
Ақырында ыдыс ҽрең салынады.
-
Ҽрине онда оған орын аз, - деп ескерді Сері. – Дорба шам қоайғыштарға
лық толы, бірақ басқа не істейсің!
Ол дорбаны ер тоқымға іліп қойды, одан сҽбіздің сабақтары, пештің
қықыштары жҽне ҽр тҥрлі нҽрселер салбырап тҧрды.
Ақ Серінің аты жҽне қаруы қалай кҿрінгенін елестете аласыздар ма?
Borland Pascal сізге, ҥлкен саннан қҧралған тҧрақтыларға, мҽліметтер
типіне, айнымалыларға, процедураларға жҽне функцияларға қатынауды
қамтамасыз етеалады. Олардың ішіндегі кейбіреулері Borland Pascal ҥшін
ерекше, ал кейбіреулері Windows немесе Dos орталары ҥшін қолданбалы
есептерді программалауда ерекше. Олардың саны ҿте кҿп, дегенмен, ҿз
программаңызда олардың бҽрін бір мезетте аз қолданасыз. Сондықтан олар
модульдер деп аталатын ҿзара байланысты топтарға бҿлінген. Бҧл жағдайда
тек программаға қажетті модульдерді қолдануға болады.
Программалық модуль (Unit) тҧрақтылар, мҽліметтер типі, айнымалылар,
процедуралар жҽне функциялар жиынтығы болып табылады. Ҽр модуль
Паскальдағы жекеленген программаға ҧқсас: сіз программаңызды орындаңға
ПОҼК 042-11.1.20/03-2014
Баспа №1 кҥні 11.09.2014 ж. 121 беттің 81-сі
81
жіберместен бҧрын, оның шақырылатын жҽне қажетті инициализацияны жҥзеге
асыратын негізгі денесі болуы мҥмкін. Қысқаша айтқанда модуль, программаға
қоюға болатын жҽне программаны жеке компилиаланатын бҿлшектерге бҿлуге
болатын, сипаттамалар кітапханасы болып табылады.
Модуль қҧрамына кіретін, процедуралар жҽне функциялар, мҽліметтер
типін жҽне айнымалылар арасындағы тҽсілдер жиынтығын қамтамасыз етеді.
Бірақ та бҧл тҽсілдерді нақтылы жҥзеге асыру интерфейс жҽне жҥзеге асыру
(реализация). Егер программа модуьді пайдаланса, модульдің барлық
сипттамалары бҧл программаға, оның ҿзінде анықталғандай ашық болады.
Модуль қҧрылымы программа қҧрылымына ҧқсас. Модульдің ішіндегі
барлық сипаттамалар бір-бірімен байланысты. Мысалығы, Strings модулі
нҿлдік белгімен аяқталатын жолдарды ҿңдейтін ішкі программаларға қажетті
сипаттамалардан тҧрады. Сонымен қатар іщкі программалар сияқты, модульдер
де стандартты жҽне стандартты емес немесе қолданушының модулі, яғни,
програмалаушылар ҿздері қҧрастыратын бола алады. Стандартты жҽне
стандартты емес модульдер қҧрылымы бірдей болғандықтан, олардың
сипатталуы бірдей ережеде қҧрылған.
Модульдер программаға оның атын uses компилятор нҧсқауында
сипаттаудың кҿмегімен қосылады. Мысалы, былай сипатталғанда:
Uses Dos, Crt;
Аталған модульдердің қҧрамындағы барлық ішкі программалар,
айнымалылар, типтер жҽне тҧрақтыларды программада қолдануға болады.
Ескерту. Модульдердің аттары оларды хабарлағанда ҥтірмен бҿлінеді, ал
соңғы модульден кейін ҥтірлі нҥкте қойылады!
10.4 System модулі
System модулі барлық қҧралдар ҥшін, тҿменгі деңгейлі ішкі
программаларды
жҥзеге
асырады,
мысалы:
енгізу-шығу,
жолдық
айнымалылармен жҧмыс, ауыспалы нҥктемен жасалынатын операциялар жҽне
жадыны динамикалық бҿлу.
System модулі Borland Pascal-дың барлық стандартты жҽне қҧрылған
процедураларынан жҽне функцияларынан тҧрады. Стандартты Паскальдің
бҿлігі болмайтын жҽне басқа модульдерде орналаспаған Borland Pascal-дың кез-
келегн ішкі программасы System модулінің қҧрамында орналасқан.
Ескерту. System модулі программаға автоматты қосылады (ҥнсіз келісім
бойынша) жҽне оны Uses операторында кҿрсету қажетті емес.
Стандартты емес модуьдерді пайдалану программаларды стандарттау мен
қҧрылымдылығының деңгейін жоғарылатады, бҧл программаларды ҿңдеуді
жылдамдатады, олардың тҥсініктілігін жҽне жетілдірудің қарапаймдылығын
ПОҼК 042-11.1.20/03-2014
Баспа №1 кҥні 11.09.2014 ж. 121 беттің 82-сі
82
қамтамасыз етеді. Мҧндай кітапханада, мысалға, жиі пайдаланылатын
массивтерді (енгізу процедуралары, матрицаларды шығару, массивтерді
сорттау жҽне т.б.) ҿңдегендегі операцияларды сипаттағандай, бҿлек
программаға кҿп кҿңілді тек берліген есепке тҽн сҧрақтарды шешуге бҿледі,
сондықтан стандартты жҽне стандартты емес модульдерде іске асырылмайды.
Бҧл тек программаны ҿңдеу уақытын қысқартып қана қоймай, оның кҿлемін де
азайтады. Жоғарыда айтылғанда, программалар арнайы сегментте орналасады,
оның кҿлемі компьютердің оперативті жадысын қҧрайтын басқа сегменттер
сияқты 64 Кбайттан аса алмайд. Ҽрине, бҧл ҥшін оны ҥлкейтуге қажеттілік
туады. Бҧл мақсатқа жетуде модульдер бағаланбайтын қызмет кҿрсетеді. Ҽр
модуль бҿлек сегментте орналасады, сондықтан модульдеррі жҽне
программалары бар барлық сегменттердің қосындысы, компьютердің
оперативті жадысының кҿлемін ғана шектелген (640 Кбайт).
Осындай алғы сҿзден кейін, оқушының стандартты емес модульдерді
пайдалануда пайдасы жайлы ешқандай кҥмҽні жоқ екеніне сенімдіміз. Оларды
ҿңдеудің ҿнеріне ҥйренуде жеңе алмайтын алдымен модуьдің қҧрылымымен,
оның бҿлімдерінің міндеттімен жҽне ҿңдеу технологиясымен танысайық.
10.4.1 Модуль құрылымы
Модуль (unit) келесі бөліктерден тұрады:
-
аты немесе тақырыбы (мысалы, unit Мy_Мodyl);
-
интерфейс немесе хабарламалар бҿлімі (Interfase);
-
орындаушы бҿлігі немесе іске асыру бҿлімі (Implementation);
Бҧнда кҿрсетілген модуль бҿлімдерінің тізбегі міндетті болып
табылады, дегенмен осы бҿлімді қҧрайтын блоктар (немес тек денелері)
жарым-жартылай немесе толығымен болмауы мҥмкін (бҧрынғыдай осындай
элементтерді сипаттағанда тік жақшалар пайдаланылады). Одан кейін модуль
ішіндегі бҿлімдерін сипаттаймыз.
Модуль тақырыбы
Модуль тақырыбы unit тҥйінді сҿзінен жҽне бірегей атаудан (модуль
ішінде қайталанбауы керек) тҧрады, оның кез-келеген атау сияқты 64-ке дейін
белгісі бола алады.
Модуль интерфейсі
Interface {бҧл бҿлімнің Uses-тен басқа барлық объектілері, мҽліметтер
сегментінде орналасады}
[Uses … {Берілген модуль пайдаланатын, модульдердің ататры
тҥгенделеді}]
[Cons … {Осы модуль қосқан программаға немесе басқа
модульдерге, рҧқсат етілуі тиіс тҧрақтылар сипатталады}]
[Var … {Программада кҿрінетін немесе басқа модульдерде
ПОҼК 042-11.1.20/03-2014
Баспа №1 кҥні 11.09.2014 ж. 121 беттің 83-сі
83
қолданатын айнымалылар сипатталады}]
[Procedure…{Формальды
параметрлер
сипаттамасымен
толық
процедураның атауы келтіріледі}]
…{Осы моудьді іске қосқан программа немесе басқа модуьдерден қол
жеткізе алатын барлық басқа процедуралар мен модульдер функцияларының
толық тақырыптары сипатталады}
Модульдің орындаушы бҿлігі
[Uses … {Берілген орындау бҿлігінде пайдаланылған жҽне интерфейс
кҿрсетілмеген модуьдер атауы кҿрсетіледу}]
[Lаbel…
{Берілген
модуль
бҿліміндегі,
ішкі
программаларда
пайдаланылған таңбалар аттары кҿрсетіледі}]
[Сonst…
{Берілген
модуль
бҿліміндегі
ішкі
программаларда
пайдаланылған жҽне интерфейс аталмаған тҧрақтылар сипатталады}]
[Var … {Берілген модуль бҿліміндегі ішкі программаларда
пайдаланылған жҽне интерфейсте аталмаған айнымалылар сиптталады}]
[Procedure…{Interface-те сипатталған процедураның қысқаша немесе
толық аты келтіріледі}]
{Процедура денесі}
[Function{Interface-те сипатталған функцияның қысқаша немесе толық
аты келтіріледі}]
{Функция денесі}
Кҿріп отырғаныңыздай, бҧл бҿлімде интерфейсте сипатталған модульдің
барлық ішкі программаларын сипаттау берілген. Онда сонымен қатар,
модульдің берілген бҿлімнің ішкі программаларында пайдаланылатын жҽне
интерфейсте сипатталмаған типтер мен айнымалылар сипатталуы мҥмкін, онда
пайдаланылатын, жергілікті таңбалар тізімі болуы мҥмкін. Implementation
бҿлімінде сонымен қатар, интерфейсте сипатталған процедуралар мен
функциялардың жҧмысына қатынасушы, бірақ ҿздері онда сипатталмаған іщкі
программалар сипатталуы мҥмкін. Программада қосушы модуль олар ашуға
болмайтын программаларға жатады (олар программада кҿрінбейді). Бҧл
бҿлімде сипатталған модульдер, таңбалар, тҧрақтылар, типтер жҽне
айнымалылар программа ҥшін жабық. Бҧл объектілерде барлығы, соns-дан
басқасы стек сегментінде орналасқан. Тҧрақтылар мҽні мҽліметтер сегментінде
болады бірақ та олар кҿрінбейді.
10.5 Инициализация бөлімі
Бҧл бҿлім, Assign процедурасының кҿмегімен сол немесе басқа
файлдардың байланысын іске асыруды қамтамасыз етеді, қандай да бір
айнымалылар байланысын (мысалы, S:=0; Р:=1; қою), тҧрақты-айнымалылар
(типті тҧрақтылар), ҽрқашан программаның басында орындалатын қандай да
бір реттік ҽрекетті орындау, мысалы, Writeln("Салем!") процедурасының
кҿмегімен экранда хабарды басу.
ПОҼК 042-11.1.20/03-2014
Баспа №1 кҥні 11.09.2014 ж. 121 беттің 84-сі
84
Бҿлім Веgin сҿзімен басталып, одан кейін атқарушы операторлар тҧрауы
мҥмкін, ал соңы end. (нҥктемен) сҿзімен аяқталады.
Егер программада да жҽне оның модулінде де айнымалы бір атпен
сипатталатын
болса,
онда
модульдегі
ондай
айнымалы
программада
кҿрінбейді.
Оған
программада
қатынауды,
осындай
айнымалының
алдына
нҥкте
арқылы
ажыратылып
жазылатын
квалификатордың кҿмегімен жҥзеге асуруға болады. Квалификатор ретінде
модуль атауын алуға болады. Мысалы, программа денесінде My_Model
модулімен операторлар болуы мҥмкін.
Егер модуль айнымалыса мен ішкі программаның жергілкті айнымалысы
мен сҽйкес келсе, модуль айнымалысын оның кез-келген кшкі программада
кҿрінуін қамтамасыз етуді программада кҿрінуін қамтамасыз етуді ҧқсастық
тҥрінде қҧруға болады.
Сонымен қатар, квалификатор кҿмегімен ішкі программалардың ауқымды
айнымалыларын Кҿрінетін етуге болады. Аттас айнымалылы ішкі
программалар, программасы..
Егер сіздің программаңызға модуль қосылған, ал интерфейсте басқа
модуль хабарланған болса, онда модульдің барлық объектілері программада
қамтамасыз ету ҥшін, олардың барлық атауларын тікелей uses компилятор
нҧсқауында сипаттау керек.
ПОҼК 042-11.1.20/03-2014
Баспа №1 кҥні 11.09.2014 ж. 121 беттің 85-сі
85
2 Практикалық сабақтар
1. Ҥш натурал сан берілген. Олардың арасында тең сандар болмаса, «жоқ» деп,
егер олардың екеуі бір-біріне тең болса, «иҽ» деп, ал ҥшеуі де бірдей сан
болса, бҽрі тең деп жазу керек.
2. Екі ҥшбҧрыш қабырғалары a, b, c жҽне d, e, f берілген. Қайсы ҥшбҧрыштың
ауданы ҥлкен екенін анықтау қажет.
3. a, b, c жҽне d тҿрт тҥзу сызығының ҧзындықтары берілген. Осылар
квадраттың немесе тікбҧрышты тҿртбҧрыштың қабырғалары бола алады ма?
Соны тексеріңдер.
4. Ҥшбҧрыштың қабырғалары x, y жҽне z берілген. Осы ҥшбҧрыштың
тікбҧрышты ҥшбҧрыш екенін анақтау керек. Егер солай болып шықса, онда
оның қай қабырғасы гипотенуза болатынын табыңдар.
5. P натурал сан болғанда, a
p
ҿрнегін есептейтін программа қҧрыңдар
(программаны while, repeat, for операторларының ҽрқайсысын пайдаланып,
шығаруға тырысыңдар)
6. Тҿмендегі ҿрнектердің мҽнін табу қажет:
a)
2
,
1
...
3
1
2
1
1
n
n
ҽ)
2
,
)
1
(
1
...
3
*
2
1
2
*
1
1
n
n
n
б)
2
,
)
1
(
...
4
1
3
1
2
1
1
n
n
n
7. 1-ден 100-ге дейінгі тақ сандардың жҽне жҧп сандардың қосындыларын
табатын программа қҧрыңдар.
8. Ҽрбір бактерия бір минутта екіге бҿлінеді. Басында бір бактерия
берілген деп, 5, 7, 9, ... 15 минуттан кейін неше бактерия пайда болатынын
табыңдар. Жаңа пайда болған бактериялар да минут сайын кҿбейіп отырады.
Массивтер
9. Бірҿлшемді массивтің ішіндегі индексі жҧп болатын ең кіші элементті
анықтау.
10. Бірҿлшемді массивтің ішіндегі ең ҥлкен элементті анықтау.
11. Бірҿлшемді массивтің элементтерін ҿсу реті бойынша сҧрыптау.
12. Бірҿлшемді массивтің ішіндегі ең ҥлкен элементті алып тастау.
13. Екіҿлшемді 5х4 массив берілген. Екінші жолдың бойынан ең кіші
ПОҼК 042-11.1.20/03-2014
Баспа №1 кҥні 11.09.2014 ж. 121 беттің 86-сі
86
элементті анықтау.
14. Екіҿлшемді 5х4 массив берілген. Тҿртінші бағанда орналасқан
элементтердің кҿбейтіндісін анықтау
15. Екіҿлшемді 3х3 массив берілген. Осы массивтің индекстерінің
қосындысы тақ болатын элементтерді экранға шығару.
16. Екіҿлшемді 4х5 массив берілген. Осы массивтің жҧп элементтерін 0-ге,
тақ элементтерін 1-ге айналдыру қажет.
17. Екіҿлшемді 5х5 матрица берілген. Осы массивтің негізгі диагональ
элементтерінің қосындысын табу.
18. Екіҿлшемді 4х4 матрица берілген. Осы массивтің кері диагоналінің
астыңғы бҿлігіндегі теріс элементтердің санын табу.
19. Екіҿлшемді 5х5 матрица берілген. Осы массивтің негізгі диагоналінің
ҥстіңгі бҿлігіндегі нҿлдердің санын анықтау.
20. 20 элементтен тҧратын бҥтін сандар массиві берілген. Осы массивтің
ҽрбір тҿртінші орында тҧрған элементтерін нҿлге айналдыру.
21. 4х5 матрица берілген. Матрицаның ҽрбір жолын ҿсу реті бойынша
сҧрыптаңыз.
22. Алмаста N алма бар. Сыныптағы M бала одан ҽрқайсысы 1 алма
беруден сҧрады. Алмасқа ҽр алманың салмағы қанша грамм екені белгілі. M
баланың ҽрқайсысына бір алмадан бере отырып, Алмас ҿзінде қалған
алмалардың (N-M) жалпы салмағы максимум болуын басты назарда ҧстауы
керек.
Мысал:
Берілгені:
N=10
M=7
25 85 1 6 9 23 41 2 6 10
Нҽтиже: 151
Процедуралар мен функциялар
23. Тҿмендегі ҿрнекті есептеу:
Z=(a
n
+b
m
)c
r
-d
k
Сөз тіркестері
ПОҼК 042-11.1.20/03-2014
Баспа №1 кҥні 11.09.2014 ж. 121 беттің 87-сі
87
24. Берілген жолдың ішіндегі сҿздердің санын анықтау.
25. Берілген жолдың ішіндегі 3 символдан тҧратын сҿздерді экранға шығару.
Есептердің шығарылуы
1.
program
esep1;
var
a,b,c:integer;
begin
writeln(‘ҥш сан енгіз‘);
read(a,b,c);
if
(a<>b)
and
(b<>c)
and
(a<>c)
then
writeln(‗жоқ‘)
else
if
(a=b)
and
(b=c)
and
(a=c)
then
writeln(‗бҽрі тең‘)
else
writeln(‗екеуі тең‘);
end
.
2.
program
esep2;
var
a,b,c,d,e,f,p1,p2,S1,S2:real;
begin
writeln(‘1-ші ҥшбҧрыш қабырғаларын енгіз:‘);
readln(a,b,c);
writeln(‘2-ші ҥшбҧрыш қабырғаларын енгіз:‘);
readln(d,e,f);
p1:=(a+b+c)/2;
p2:=(d+e+f)/2;
S1:=sqrt(p1*(p1-a)*(p1-b)*(p1-c));
S2:= sqrt(p2*(p2-d)*(p2-e)*(p2-f));
if
S1>S2
then
writeln(‗Ҥлкені 1-ҥшбҧрыш, ауданы =‘, S1:8:2)
else
writeln(‗Ҥлкені 2-ҥшбҧрыш, ауданы =‘, S2:8:2)
end
.
3.
program
esep3;
var
a,b,c,d:integer;
begin
writeln(‘Ҧзындықтарды енгіз:‘);
write(‘a=‘); read(a);
write(‘b=‘); read(b);
write(‘c=‘); read(c);
write(‘d=‘); read(d);
if
(a=b)
and
(a=c)
and
(a=d)
and
(b=c)
and
(b=d)
and
(c=d)
then
writeln(‗Квадрат қабырғалары бола алады‘);
ПОҼК 042-11.1.20/03-2014
Баспа №1 кҥні 11.09.2014 ж. 121 беттің 88-сі
88
if
(a=c)
and
(b=d)
then
writeln(‗Тікбҧрышты тҿртбҧрыштың қабырғалары
бола алады‘)
else
writeln(‗Тікбҧрышты тҿртбҧрыштың да,
квадраттың да қабырғалары бола алмайды‘)
end
.
4.
program
ushburish;
uses
crt;
var
x, y, z:real;
begin
clrscr;
writeln;
writeln('Ҥшбҧрыш қабырғаларын енгіз:');
write('x='); readln(x);
write('y='); readln(y);
write('z='); readln(z);
if
(z<>sqrt(sqr(x)+sqr(y)))
and
(x<>sqrt(sqr(z)+sqr(y)))
and
(y<>sqrt(sqr(x)+sqr(z)))
then
writeln('тік бҧрышты ҥшбҧрыш бола алмайды');
if
(z=sqrt(sqr(x)+sqr(y)))
then
writeln('тік бҧрышты ҥшбҧрыш бола алады, гипотенузасы
z=',z:6:2);
if
(x=sqrt(sqr(z)+sqr(y)))
then
writeln('тік бҧрышты ҥшбҧрыш бола алады, гипотенузасы
x=',x:6:2);
if
(y=sqrt(sqr(x)+sqr(z)))
then
writeln('тік бҧрышты ҥшбҧрыш бола алады, гипотенузасы
y=',y:6:2);
end
.
2>2>1>1> Достарыңызбен бөлісу: |