Бүтін санды айнымалыларды өңдеу
Кирнос В.Н.
Паскаль программалау тілінің
негіздері
орыс тілінен аударған М.Бексарыұлы
ЖОО-ның техникалық мамандықтары бойынша және арнаулы орта, орта оқу
орындарының студенттері мен оқушыларына арналған оқу құралы
Қызылорда 2011
УДК004.43(07)
ББК 32.97-018.1я7
Б40
Қызылорда облыстық білім беру қызметкерлерінің біліктілігін арттыру және
қайта даярлау институтының Ғылыми Кеңесінде 2010 жылғы 26 желтоқсанда (№4
хаттама) қаралып, таратылуға ұсынылған.
Дайындаған:
Мұратбек Бексарыұлы - №114 орта мектептің информатика пәнінің жоғары
санатты мұғалімі.
“Қызылорда-Қанағаты”, 2011 – 132 бет
ISBN 978-7102-22-7
Пікір жазғандар:
Шералы Ибраев – Болашақ университетінің кафедра меңгерушісі, физика-
математика ғылымдарының кандидаты, доцент
Оразбай Орманов - Қызылорда облыстық білім беру қызметкерлерінің
біліктілігін арттыру және қайта даярлау институтының жаратылыстану-
математикалық білім беру кафедрасының оқытушысы
Аударма оқулық жоғары техникалық оқу орындарының студенттеріне
арналғанымен, ол мектептер мен колледж оқытушылары мен оқушыларының Паскаль
программалау тілін терең меңгеруіне жол ашатын өте құнды оқу құралы.
Оқулық өз тілімізге информатика саласындағы терминологияны ескере отырып,
сапалы аударылған және ондағы есептер қазақы ұғымдармен сәтті берілген.
Оқулықта есептердің шешулері пайдаланушыларға қолайлы болу үшін әрбір
параграфтың соңында бірден келтірілген.
УДК004.43(07)
ББК
32.97-018.1я7
ISBN 978-7102-22-7 © М.Бексарыұлы, 2011
Мазмұны
1 – тарау. Паскаль программалау тілінің негіздері ... ... ... ... ... 4
Кіріспе
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... .. 4
§1. Паскаль алфавиті
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . 6
§2. Паскальдағы сызықтық программа
... ... ... ... ... ... ... ... ... ... ..10 Паскальдағы сызықтық
программа. Есептердің шешуі ... ... ... ... 13
§3. Тармақталу программасы
... ... ... ... ... ... ... ... ... ... ... ... ... ... ..19
Тармақталу программасы. Есептердің шешуі ... ... ... ... ... ... 22
§4. Циклдік программа
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. .28
Циклдік программа. Есептердің шешуі ... ... ... ... ... ... ... ... .
31
§5. Бүтін санды айнымалыларды өңдеу ... ... ... ... ... ... ... ... ... ...
35
Бүтін санды айнымалыларды өңдеу.Есептердің шешуі ... ... 38
§6. Циклдік программа (параметрлі)
... ... ... ... ... ... ... ... ... ... ... ..43
Циклдік программа (параметрлі).Есептердің шешуі ... ... ... .46
§7. Көшу операторы. Бос оператор
... ... ... ... ... ... ... ... ... ... ... ... .50
Көшу операторы. Бос оператор.Есептердің шешуі ... ... ... ... 52
§8. Бір өлшемді жиымдар
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .58
Бір өлшемді жиымдар. Есептердің шешуі
... ... ... ... ... ... ... ...62
§9. Екі өлшемді жиымдар
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .71
Екі өлшемді жиымдар.Есептердің шешуі
... ... ... ... ... ... ... ... 75
§10. Процедуралар мен функциялар
... ... ... ... ... ... ... ... ... ... ... ... 87
Рекурсиялар
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
...91
Процедуралар мен функциялар. Есептердің шешуі ... ... ... ..93
§11. Символдық ақпараттарды өңдеу
... ... ... ... ... ... ... ... ... . ... ..102
Символдық ақпараттарды өңдеу. Есептердің шешуі ... ... ..106
§12. Есептер шығару
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . ... ..109
Есептердің шешуі. Бүтін
сандар ... ... ... ... ... ... ... ... ... ... ... .116
Аудармашының түсіндірмесі
... ... ... ... ... ... ... ... ... ... ... ... ... ...128
1 – тарау. Паскаль программалау тілінің негіздері
Кіріспе. Программалау тілдері туралы
Мектеп курсында сіз программалау тілінің бірі-Бейсикті оқып үйрендіңіз.
Алайда қазір ондай тілдер өте көп, олар ондап саналады. Барынша кең
таралған(Бейсикпен қатар) тілдерге: Си және Паскаль (Pascal) жатады.
Соңғысын толығырақ оқып-үйренуге осы оқу құралында кірісетін боламыз.
Алдымен тілдердің жіктелуі жайлы бірер сөз. Компьютер алго-ритмді
орындаушы ретінде барынша қарапайым бұйрықтар тіліне (оны әдетте машиналық
тіл деп атайды) ие. Біршама күрделі алго-ритм жүздеген, мыңдаған және он
мыңдаған машиналық тілдегі бұйрықтардан тұруы мүмкін. Сондықтан да
компьютерлік тілді төмен деңгейлі программалау тілі деп санайды.
Төмен деңгейлі тілдерде программалау ауыр жұмыс, ол оны құрастырушыдан
жоғары кәсіби білікті талап етеді. Міне содан да программалаушы еңбегінің
жұмыс өнімділігі төмен. Осы қиындық-тарды жеңу мақсатында жоғары деңгейлі
программалау тілдері ойлап табылған.
Жоғары деңгейлі программалау тілдері көрнекілігі мен жинақы-лығы жағынан
математика тілі сияқты. Оны жай адам тілі мен маш-иналық тілдің арасындағы
қандай да бір аралық тіл деуге болады. Бұл адамның компьютермен қатынасын
жеңілдетеді, алайда прог-раммалау тілі арнайы үйренуді қажет етеді. Осы
тілдердің бұйрық-тары операторлар деп аталады.
Жоғары деңгейлі программалау тілінің күрделі операторларын ком-пьютер
тікелей орындай алмайтыны анық.. Сол себептен де осын-дай операторларды
машиналық бұйрық тіліне аудармашы қажет. Жоғары деңгейлі тілде жазылған
программаны орындаудың екі түр-лі тәсілі бар. Бірінші тәсіл бойынша
компилятор деп аталатын арн-айы қызметтік программа берілген программаның
барлық оператор-ларын машиналық тілге аударады да, сонан соң осы алынған
маши-налық программа компьтерде орындалады.
Екінші тәсіл бойынша интерпретатор деп аталатын арнайы қызметтік
программа қолданылады.Интерпретатор тиісті програм-маның операторларын
біртіндеп(бірінен соң бірін) машина тіліне аударады, ал компьютер оны
бірден орындайды. Компилятор да, интерпретатордың өзі де машиналық тілдегі
программа болып табылады. Олардың әрқайсысын қолданудың өзінше артықшылығы
мен кемістіктері де бар.
Компилятор программаны машиналық тілге тұтас түрде оның жекелеген
операторларының дұрыстығын ғана емес, олардың өзара үйлесімділігін де
тексере отырып аударады. Бұл уақытты біршама көп алады, бірақ программадағы
қателерді компиляциялау кезінің өзінде-ақ анықтауға мүмкіндік береді.
Интерпретатормен жұмыс әлдеқайда жеңілдеу. Ол аяқталып бітпеген
программаның да орындалуына мүмкіндік жасайды, ал оның алгоритмді құрастыру
мен жөндеу кезінде пайдасы көп. Алайда интерпретатор программаның барлық
бөлігінің өзара үйлесімін тексере алмайды. Оған қоса программаның
интерпретация режиміндегі жұмысы алдынала компиляцияланған программадан
бірнеше есе баяу жүреді.
Бейсик тіліндегі программалар интерпретация режимінде орындала-тын болса,
ал мысалы, Паскаль үшін программаны компиляциялау қолданылады. Сонымен,
есіңізде болсын: Бейсик-интерпретатор, ал Паскаль-компилятор болып
табылады.
Паскальдың екінші бір ерекшелігі, оның құрылымдық прог-раммалау
ұстанымын есепке алып құрастырылуы. Құрылымдық программаларға оларды өңдеу
мен түзетудің жеңілдігі, қателердің аз жіберілуі тән. Паскальда құрылымдық
берілгендер типінің жай айнымалылар, жиымдар, файлдар, жиындар, жазбалар,
сілтемелі айнымалылар сияқты толық тізбесі бар.
Паскаль-программаның кейде барынша толық жазылуы есебі-нен,
мыс,айнымалылар мен олардың типтерін сипаттаудың міндет-тілігі арқасында
оның сенімділігін ерекше атау керек.
Паскальдың тағы бір ерекшелігі, оның модульдік программалау екендігі. Ол
алдынала қосалқы процедуралардың тұтас кітапхана-сын жасап алып, оларды
қажетті программаға модуль ретінде жал-ғауды белсенді түрде қолдана
алатындығы.
Борланд фирмасы жасаған(5.5 версиясынан бастап) Турбо-Паскаль-дың соңғы
ерекшелігі, оның обьектілі-бағдарлы программалау (ОБП) деп аталатын
мүмкіндігінің барлығы. Мұнда берілгендерді оларды өңдеуші процедуралармен
біртұтас-обьект ретінде байлан-ыстырып қарастырады. Соның нәтижесінде
берілгендер де, проце-дуралар да жеке мәнін жоғалтады. Шынында ОБП-ны
берілгендер мен процедуралардың кездейсоқ бірігуінің орнына оларды мазмұн-
дық жағынан байланыстырушы жаңа деңгейлі модульдік програм-малау деп
қарастыруға болады. ОБП-ның артықшылығы тек күрделі программаларды,
программалаудың біртұтас кітапханасын құрасты-ру кезінде көрінетіндігін
атап өту керек. Күрделі емес алгоритмдер-ді құрастыруда Паскальдың кәдімгі
тәсілдерімен жұмыс істеу әлде-қайда жеңіл және тиімді.
Паскаль тілін 1970 жылы швейцариялық ғалым Н.Вирт ойлап тауып, оны
атақты математик, физик және философ Блезь Паскаль-дың(1623-1662) құрметіне
соның атымен атады. Б.Паскаль тарихта алғашқы механикалық есептеу
машинасын(1642 ж.) жасауымен де белгілі.
Паскаль мен Бейсик программалау тілдерінің бір-бірінен айыр-машылығы,
Паскаль-транслятор(ал Бейсик-интерпретатор), яғни Паскальда программа толық
талданады және ол компьютерде өңд-еудің үш кезеңінен өтеді:
трансляцияланады(программа машина тіліне аударылады),
компоновкаланады(алынған программаға стандартты функциялар мен процедуралар
жалғанады) және прог-рамма тікелей орындалады. Біз қарастырып отырған Турбо-
Пас-кальда жұмыста қолайлы болуы ескеріліп, осы үш кезең жұмысы
программалаушыдан жасырылған.
Паскаль барынша мәдени тілге жатады: мұнда программада пайдаланылатын
айнымалылар алдынала сипатталады, олардың мәні көрсетілген типте ғана бола
алады және т.с.с.
Біз осы кітапта Паскальдың Борланд фирмасы дайындаған Турбо-Паскальдың 7.0
версиясын қарастырамыз. Алайда 1-тарауда келті-рілген мәліметтер Паскальдың
кезкелген диалектісі үшін жарамды.
§1. Паскаль алфавиті
Паскальдың, басқа да тілдер сияқты осы тілде қолданылатын әріп-терден
(символдардан) тұратын өз алфавиті бар. Паскаль алфавиті құрамына:
1) латынның a –дан z-ке дейінгі әріптері(бас әріптері де);
2) а-дан я-ға дейінгі орыс әріптері(бас әріптері де);
3) 0-ден 9-ға дейінгі цифрлар;
4) арнайы символдар: +, -, , *, ; , : , =, , және басқалар енеді.
Паскальда тұрақтылардың (константа) үш түрі бар: сандық (немесе жай
ғана-сандар), символдық және логикалық .
Символдық және логикалық тұрақтылармен жұмысты кейінірек қарастырамыз.
Сандар Паскальда әдеттегідей ондық санау жүйесінде жазыла-ды. Мұнда да
Бейсиктегі сияқты, ондық үтір орнына нүкте қолдан-ылады. Дәрежелі сандар
экспонентті түрде жазылады, мыс: 6,25·10-23 саны 6.25Е-23 түрінде. Сандар
Паскальда да, Бейсиктеде бүтін және нақты (бөлшек бөлікті) түрде болатынын
ескертеміз.
Айнымалылар латын әріптері мен цифрлардың кезкелген тір-кесі түрінде
белгіленеді, бірақ бірінші символы әріп болады. Мыс: a, b1, summa, alfa21
және т.б . Паскальда айнымалының нақты типі болуы керек. Ондай тип төртеу:
бүтін, нақты, символдық және
логикалық.. Айнымалы типі программа мәтінінің басында арнайы сипатталады(§2-
ні қараңыз).
Тұрақтылар мен айнымалыларды қоса алғанда мәліметтер деп атау қабылданған.
тұрақты мәндер аралығы мысал
типі
бүтін -32768 – 32767 5 -256
нақты 2.9·10-39 – 1.7·1038 12.5
6.03Е-23
символдық апострофқа алынып ‘мен Паскаль
жазылған 256 символғатілін
дейін үйренемін’
логикалық екі мәнге ие false, true
айн-лы типімәндер аралығы сипатталуы
бүтін -32768 – 32767 integer
нақты 2.9·10-39 – 1.7·1038 real
символдық бір символ char
логикалық екі мәнге ие boolean
Паскальда мәліметтерді ұйымдастырудың жалпы схемасы 1-кестеде келтірілген:
1-
кесте
Ескерту.Паскальдың қарастырылып отырған Турбо-Паскаль 7.0 вер-сиясында
тұрақтылар мен айнымалылардың қосымша типтері бар (олардың кейбіреуі 2-
кестеде келтірілген). Олар жеке жағдайда есептеуді үлкен дәлдікпен
жүргізуге мүмкіндік береді. Мыс: double арқылы нақты 15-16 мәнді цифр(real
-дағы 11-12 цифр орнына) алуға болады. Алайда алғашқы кезде оларды өте
қажет болмаса, пайдалана бермеген жөн ( ол программа жұмысын баяулатады,
жадыдан артық орын алады т.с.с).
Турбо-Паскальдағы айнымалылардың қосымша типтері
2-кесте
айнымалы типі мәндер аралығы сипатталуы
ұзын бүтін -2147483648 longint
2147483647
нақты екі есе 5·10-324 - Double
дәлдікпен 1.7·10308
символдық 255 символға дейін String
Паскальда, Бейсиктегі сияқты өрнектердің үш типі бар: сандық(ол өзінше
бүтін, нақты болып бөлінеді), логикалық (§3-ті қараңыз) және символдық
(мұны тарау соңында қарастырамыз).
Сандық (не математикалық) өрнектерді жазу тура Бейсиктегідей. Мыс, мына
бөлшек: былай жазылады: (alfa*alfa+beta)(a*x*x+b*x+c).
Оның Бейсиктен бір айырмашылығы – дәрежелеу амалының жоқтығы. Паскальда
математикалық функцияларды жазудың Бейсиктен біршама өзгерісі бар. Ол 3-
кестеде келтірілген.
Паскальдың математикалық функциялары 3-кесте
математика- Паскаль Ескерту
лық жазбасы тіліндегі
жазылуы
sinx sin(x) аргумент радианмен
cosx cos(x) аргумент радианмен
arctgx arctan(x) тангенсі х-ке тең
бұрыш
lnx ln(x) натурал логарифм
ех exp(x) lnx-ке кері функция
х abs(x) х-санының абсолют
шамасы
sqrt(x) х санының квадрат
түбірі
х2 sqr(x) х санының квадраты
Кезкелген дәрежеге шығару үшін экспонента мен натурал логарифмді қолданады.
Себебі тең. Сонда Паскаль тілінде ab былай жазылады:
exp(b*ln(a)).
Паскальда бүтін сандармен(бүтін сандық айнымалылармен де) жұмыс істеуге
арналған бірнеше арнайы функциялар бар екенін ескеріңіз. Оларды 5 §-та
қарастырамыз.
1.1-мысал.
Өрнекті Паскаль ережесі бойынша жазыңыз:
Жауабы: (-b+sqrt(sqr(b)-4*a*c))(2*a) .
1.2-мысал. Өрнектің айнымалының берілген мәніндегі мәнін есептеңіз: x=1,
y=2 болғанда (sin(sqrt(x) – 1) + 2*abs(y))cos(2-y).
Жауабы: 4.
Бақылау сұрақтары
1.Паскальдың Бейсиктен негізгі айырмашылығын атаңыз.
2.Паскаль альфавитіне нелер енеді?
3.Сандарды жазу ережесі қандай?. Паскальда сандардың қандай типтері бар?
4.Паскальда айнымалылар қалай белгіленеді? Сіз айнымалылардың қандай
типтерін білесіз?
5.Паскальда дәрежеге шығару қалай орындалады?
Практикалық тапсырмалар
1. Формулаларды Паскаль ережесі бойынша жазыңыз:
a) (1+x)2; б) ; в) a + bx ; г) sin8°; д) cos2x3; e) tgx.
Шешуі: а) sqr(1+x); б) sqrt(1+sqr(x)); в) abs(a+b*x); г)
sin(8*3.1415180); д) sqr(cos(x*x*x)); е) sin(x)cos(x).
1.2. x0 үшін Паскаль ережесімен жазыңыз:
a) х -1; б) х 4; в) х -2; г) х 5; д) х 100; е) 2 1+х ; ж) х;
з) .
Шешуі: а) 1x; б) sqr(sqr(x)); в) 1sqr(x); г) sqr(sqr(x))*x; д)
exp(100*ln(x)); е) exp((1+x)*ln2); ж) x*sqrt(2); з) exp(13*(1+x)).
1.3. Паскаль ережесі бойынша жазыңыз:
а) б) в)
г) д) 6,673·10-8·
Шешуі:
а) exp(18*sqr(sqr(sqr(x)))+8*x);
б) (x*y*z+3.3*abs(x+sqrt(sqrt(y))))(1 E-7+sqrt(sin(24)cos(24)) );
в) (bet+sqr(sin(sqr(sqr(pi)))))(sqr(c os(gam))+abs(cos(gam)sin(gam)));
г) 1+x+sqr(x)2+sqr(x)*x6+sqr(sqr(x)) 24;
д) 6.673E-8*(m1*m2) sqr(r).
§2. Паскальдағы сызықтық программа
Паскальда да сызықтық программа жазу үшін үш: меншіктеу, енгізу және
шығару операторлары талап етіледі.
Меншіктеу операторының түрі: айнымалы : = өрнек
Мұнда, айнымалы – Паскальдың кезкелген айнымалысы, өрнек – айнымалы типіне
сәйкес келетін Паскаль өрнегі. Меншіктеу таңба-сы, Бейсиктегіден бөлек, ол
тек теңдік таңбасы емес, қос нүкте мен теңдік таңбасы екендігіне назар
аударыңыз.
Мыс, а:=0, x:=x+1; alfa:=sqr(x).
Бұл оператордың орындалу реті Бейсиктегі меншіктеу опера-торының
орындалуына ұқсас. Тек бір айырмашылығы, ол айныма-лылар мен өрнектердің
типтерінің сәйкес болуын қатаң қадағалау қажеттігі(мыс, бүтін санды
айнымалыға нақты типті өрнекті мен-шіктеуге болмайды).
Енгізу операторы былай жазылады: read (тізім)
мұндағы тізім - өзара үтірмен ажыратылған Паскаль айнымалы-ларының тізбесі.
Мыс, read(x); read(x1,x2,alfa) . read сөзі ағылшын тілінен оқу деп
аударылады.
1-ескерту. Енгізу операторының орындалуы кезінде (Бейсиктен өзгеше) 1-ден,
? белгісі түріндегі сұрау пайда болмайды және
2-ден, айнымалы мәндерін бір-бірінен бос орын арқылы ажыратып
(Бейсиктегідей үтір арқылы емес) енгізеді.
Шығару операторының түрі: write ( тізім)
Мұнда тізім-бір-бірінен үтір арқылы ажыратылған(тек үтір арқылы)
тұрақтылар, айнымалылар немесе өрнектер тізбесі. write ағылшын-ша жазу
дегенді білдіреді. Паскальда берілгендерді енгізу және шығару аяқталған соң
экранның келесі жолына автоматты түрде ауысу жүрмейтіндігін ескертеміз.
Ондай ауысуды (қажет кезде) қамтамасыз ету үшін readln және writeln(ln-
ағылшынның line-жол сөзінің қысқа түрі) операторларын қолданған жөн.
writeln бос опер-аторын қолдану (яғни тізімсіз) жай ғана экранның келесі
жолына ауысумен барабар.
Осы операторлар сызықтық программаны жазуға жеткілікті. Алайда
Паскальдағы программада операторлардан (орындалатын бөліктен) басқа тағы да
мынадай элементтер болады:
• программа тақырыбы: program аты; мұнда аты - латынның 6 әрпі мен
цифрлардан тұратын кезкелген тіркес;
• айнымалыларды сипаттау: var : тізім : типі; мұнда тізім- программада
қолданылатын айнымалылар тізбесі; ал типі- осы айнымалылар типінің
көрсетілуі. Біз негізінен, мына типтерді ғана қолданамыз: real(нақты),
integer (бүтін), char (символдық), string(жолдық), boolean(логикалық).
Осы тарауда негізінен нақты және бүтін типтерді қарастырамыз.
• begin қызметші сөзі(программаның орындалатын бөлігі осы сөзден кейін
жазылады);
• end.(нүктемен) қызметші сөзі.Паскальдағы программа осы сөзбен
аяқталады
2.1-мысал. Үшбұрыш a,b,c қабырғаларының ұзындығы бойынша берілген. Осы
үшбұрышты іштей және сырттай сызылған шеңбер-лердің радиустарын есептеу
программасын мына формулаларды пайдаланып, құрыңыз.
r1=(abc)4s іштей сызылған шеңбер радиусы,
r2=2s(a+b+c) сырттай сызылған шеңбер радиусы,
p=(a+b+c)2 жарты периметр,
s =үшбұрыш ауданы.
program mys2_1;
var a,b,c,p,s,r1,r2:real;
begin
write('a,b,c-ны енгіз:'); read(a,b,c);
p:=(a+b+c)2; s:=sqrt(p*(p-a)*(p-b)*(p-c));
r1:=2*s(a+b+c); r2:=a*b*c(4*s);
writeln; writeln('сырттай сызылған шеңбер радиусы=’,r2);
write('іштей сызылған шеңбер радиусы=’,r1)
end.
Осы программаны a,b,c-ға 3 4 5 мәндерін беріп, орындауға жібер-
генімізде мына нәтижені аламыз:
сырттай сызылған шеңбердің радиусы = 2.5
іштей сызылған шеңбердің радиусы = 1.
2-ескерту. Паскальдағы программа операторлары бірінен-бірі нүктелі үтір
арқылы ажыратылады және бір жолға бірнеше оператор жазуға болады.
3-ескерту. Ненің және қандай ретпен енгізудің(енгізу операторы
орындалғанда) анық болуы үшін, әрбір енгізу операторына тиісті
түсініктемемен шығару операторын сәйкестеуді ұсынады.
Бақылау сұрақтары
1. Паскальдағы меншіктеу операторының жазылу ерекшелігі неде?
2. Енгізу операторы қалай жазылады және ол қалай орындалады?
3. Шығару операторының жазылуы мен орындалу ережесі қандай?
4. Паскальда программа жазу қалай жүргізіледі?
Практикалық тапсырмалар
2.1. d айнымалысына :
а) x,y,z сандарының арифметикалық орта шамасын;
б) жазықтықтағы координаталары (х1,у1), (х2,у2) болатын нүкте-лердің
арақашықтығын меншіктеу операторларын жазыңыз.
2.2. х және у айнымалыларының мәндерінің орнын ауыстыратын меншіктеу
операторын жазыңыз.
а) қосымша айнымалыны пайдаланып;
б)* қосымша айнымалыны пайдаланбай.
2.3. x,y,z айнымалыларының мәндерін х айнымалысында у айны-малысының мәні,
у-те z айнымалысының мәні, ал z-те x айнымалы-сының бұрынғы мәні болатындай
етіп меншіктеу операторларын жазыңыз.
а) қосымша айнымалыны пайдаланып;
б)* қосымша айнымалыны пайдаланбай.
2.4. Берілген а үшін көбейтуден басқа амал қолданбай мыналарды алуға
болатын меншіктеу операторын жазыңыз:
а) а9-ды 4 амал арқылы; б) а10-ды 4 амал арқылы;
в) а13-ті 5 амал арқылы; г) а21-ді 6 амал арқылы;
д) а64-ті 6 амал арқылы; е) а3 және а10-ды 4 амал арқылы;
ж) а11 және а20-ны 5 амал арқылы; з) а5 және а9-ды 5 амал арқылы;
и) а5 және а13-ті 5 амал арқылы; к) а2,а5 және а17-ні 6 амал арқылы;
л) а4,а12 және а28-ді 6 амал арқылы.
2.5. Ұзындығы а, ені в-ға тең тіктөртбұрыш ауданын есептеңіз.
2.6. Тығыздығыкгм3 болатын Х литр сүттің массасын табыңыз.
2.7. Цилиндрдің көлемі – V, ал табан ауданы-S болсын. Цилиндрдің биіктігі
қандай?
2.8. Куб қырының ұзындығы-а. Кубтың көлемі-V және оның бүйір бетінің ауданы
S-ті табыңыз.
2.9. Мөлшері а·b·с болатын бөлмедегі ауаның 21%-ы – оттегі. Бөлмедегі
ауаның көлемі қанша?
2.10. Табандары а және b, үлкен табанындағы бұрышы Х-ке тең теңбүйірлі
трапецияның ауданын табыңыз.
2.11. А(х,у) нүктесін координат басымен қосатын кесінді мен ОХ осі
арасындағы бұрышты табыңыз(нүкте 1-ширекте жатыр).
2.12. Тастың h биіктіктен жер бетіне құлау уақытын анықтаңыз.
2.13. Үш кедергі r1, r2, r3 параллель жалғанған.Жалғаудың кедергі-сін
табыңыз.
2.14*. Төбелерінің координаттары бойынша берілген бесбұрыштың периметрі мен
ауданын табыңыз.
2.15*. Бүйірінен жатқан цилиндрлік цистернадағы сұйықтың биікті-гі-h.
Ұзындығы L-ге, табан радиусы r-ге тең цистернадағы сұйық көлемін(V)
табыңыз.
Есептердің шешуі.
§2. Паскальдағы сызықтық программа
2.1. d айнымалысына :
а) x,y,z сандарының арифметикалық орта шамасын;
б) жазықтықтағы координаталары (х1,у1), (х2,у2) болатын нүктелердің
арақашықтығын меншіктеу операторларын жазыңыз.
Шешуі: a) d:=(x+y+z)3; б) d:=sqrt(sqr(x2-x1)+sqr(y2-y1)).
2.2. х және у айнымалыларының мәндерінің орнын ауыстыратын меншіктеу
операторын жазыңыз.
а) қосымша айнымалыны пайдаланып;
б)* қосымша айнымалыны пайдаланбай.
Шешуі: a) a:=x; x:=y; y:=a; б) x:=x+y; y:=x-y; x:=x-y.
2.3. x,y,z айнымалыларының мәндерін х айнымалысында у айны-малысының мәні,
у-те z айнымалысының мәні, ал z-те x айнымалы-сының бұрынғы мәні болатындай
етіп меншіктеу операторларын жазыңыз.
а) қосымша айнымалыны пайдаланып;
б)* қосымша айнымалыны пайдаланбай.
Шешуі: a) a:=x; x:=y; y:=z; z:=a; б) x:=x+y; y:=x-y; x:=x-y; y:=y+z;
z:=y-z; y:=y-z.
2.4. Берілген а үшін көбейтуден басқа амал қолданбай мыналарды алуға
болатын меншіктеу операторын жазыңыз:
а) а9-ды 3 амал арқылы; б) а10-ды 3 амал арқылы;
в) а13-ті 4 амал арқылы; г) а21-ді 4 амал арқылы;
д) а64-ті 6 амал арқылы; е) а3 және а10-ды 4 амал арқылы;
ж) а11 және а20-ны 5 амал арқылы; з) а5 және а9-ды 4 амал арқылы;
и) а5 және а13-ті 4 амал арқылы; к) а2,а5 және а17-ні 3 амал арқылы;
л) а4,а12 және а28-ді 4 амал арқылы.
Шешуі: а) a2:= а*а; a4:= a2*a2; a9:=a4*a4*a;
б) a2:= а*а; a4:= a2*a2; a10:=a4*a4*a2;
в) a2:= а*а; a4:= a2*a2; a12:=a4*a4*a4; a13:= a12*a;
г) a2:= а*а; a4:= a2*a2; a10:=a4*a4*a2; a21:= a10* a10*a;
д) a2:= а*а; a4:= a2*a2; a8:= a4*a4; a16:= a8* a8; a32:= a16*
a16;
a64:= a32* a32;
е) a2:= а*а; a3:= a2*a; a5:= a3* a2; a10:= a5* a5;
ж) a2:= а*а; a3:= a2*a; a5:= a3* a2; a11:= a5* a3* a3;
a20:=a11*a5*a3*a;
з) a2:= а*а; a3:= a2*a; a5:= a3*a2; a9:= a5* a3*a;
и) a2:= а*а; a3:= a2*a; a5:= a3*a2; a13:= a5* a5* a3;
к) a2:= а*а; a5:= a2*a2*a; a17:= a5* a5* a5* a2;
л) a2:= а*а; a4:= a2*a2; a12:=a4*a4*a4; a28:= a12* a12* a4.
2.5. Ұзындығы а, ені в-ға тең тіктөртбұрыш ауданын есептеңіз.
program e2_5; {тіктөртбұрыш ауданын есептеу}
var a,b,s: real;
begin
writeln; write(‘ұзындығы-a мен ені-b-ға мән енгіз:’); read(a,b);
S:=a*b;
writeln; write(‘тіктөртбұрыш ауданы=’,s)
end.
Мыс: а=3м, b=4м ,болғанда s=12м2.
2.6. Тығыздығы кгм3 болатын Х литр сүттің массасын табыңыз.
program e2_6; {сүттің массасын есептеу}
var x, ,m: real;
begin
writeln; write(‘x(литр) пен (тығыздық)-ға мән енгіз:’);
read(x, );
m:=x100*;
writeln; write(‘сүттің массасы=’,m)
end.
Мыс: х=7л, =1030 кгм3 болғанда m=7,21
кг.
2.7. Цилиндрдің көлемі – V, ал табан ауданы-S болсын. Цилиндрдің биіктігі
қандай?
program e2_7; {цилиндрдің биіктігін табу}
var v,s,h: real;
begin
writeln; write(‘v мен s-ке мән енгіз:’); read(v,s);
h:=vs;
writeln; write(‘цилиндр биіктігі =’,h)
end.
Мыс: v=10м3 , s=5м2 болғанда h=2м.
2.8. Куб қырының ұзындығы-а. Кубтың көлемі-V мен оның бүйір бетінің ауданы
S-ті табыңыз.
program e2_8; {кубтың көлемі мен бүйір бетінің ауданын табу}
var a,v,s: real;
begin
writeln; write(‘a-ға мән енгіз:’); read(a);
v:=a*a*a;
s:=4*a*a;
writeln;
write(‘куб көлемі=’,v);
write(‘куб бүйір бетінің ауданы=’,s)
end.
Мыс: а=5 болғанда V=125, S=100.
2.9. Мөлшері а·b·с болатын бөлмедегі ауаның 21%-ы – оттегі. Бөлмедегі
ауаның көлемі қанша?
program e2_9; {Бөлмедегі ауаның көлемін табу}
var a,b,c,v: real;
begin
writeln; write(‘Бөлменің ұзындығы-а, ені-b, биіктігі-с-ға мән
енгіз:’); read(a,b,c);
v:=0.21*a*b*c;
writeln; write(‘бөлмедегі ауа көлемі=’,v)
end.
Мыс: а=5, b=4, c=3 болғанда V=12,6.
2.10. Табандары а және b, үлкен табанындағы бұрышы Х-ке тең теңбүйірлі
трапецияның ауданын табыңыз.
program e2_10; { трапецияның ауданын табу}
var a,b,x,h,s: real;
begin
writeln; write(‘a, b, x-ке мән енгіз:’); read(a,b,x);
x:=x*3.1415180; {градусты радианға айналдыру}
h:=sin(x)cos(x)*(a-b)2;
s:=(a+b)2*h;
writeln; write(‘трапеция ауданы=’s,)
end.
Мыс: a=6, b=5, x=45° болғанда S=2,75.
2.11. А(х,у) нүктесін координат басымен қосатын кесінді мен ОХ осі
арасындағы бұрышты табыңыз(нүкте 1-ширекте жатыр).
program e2_11;{(x,y) векторы мен ОХ осі арасындағы бұрышты табу}
var х,у,а: real;
begin
writeln; write(‘х және у-ке мән енгіз:’); read(x,y);
a:=arctan(yx);
writeln; write(‘бұрыш=’a,)
end.
Мыс: x=3, y=4 болғанда а=53,13.
2.12. Тастың h биіктіктен жер бетіне құлау уақытын анықтаңыз.
program e2_12;{тастың құлау уақытын есептеу }
var g,t,h: real;
begin
writeln; write(‘h-қа мән енгіз:’); read(h);
g:=9.81; t:=sqrt(2*hg);
writeln; write(‘құлау уақыты=’t,)
end.
Мыс: h=10м болғанда t=1,4278 c.
2.13. Үш кедергі r1, r2, r3 параллель жалғанған.Жалғаудың кедергі-сін
табыңыз.
program e2_13; {Жалғаудың кедергісін есептеу}
var r1,r2,r3,r: real;
begin
writeln; write(‘кедергілер: r1,r2,r3-ке мән енгіз:’); read(r1,r2,r3);
r:=r1*r2*r3(r1*r2+r1*r3+r2*r3);
writeln; write(‘параллель жалғау кедергісі:r =’,r)
end.
Мыс: r1=10, r2=15 , r3=20 болғанда r
=4,62.
2.14*. Төбелерінің координаттары бойынша берілген бесбұрыштың периметрі мен
ауданын табыңыз.
program e2_14;{Бесбұрыштың периметрі мен ауданын табу}
var x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,a12,a 23,a34,a45,a51,a13,a14,p,p1,p2,p3,
s1,s2,s3,s: real;
begin
writeln; write(‘x1,y1-ге мән енгіз:’); read(x1,y1);
writeln; write(‘x2,y2-ге мән енгіз:’); read(x2,y2);
writeln; write(‘x3,y3-ке мән енгіз:’); read(x3,y3);
writeln; write(‘x4,y4-ке мән енгіз:’); read(x4,y4);
writeln; write(‘x5,y5-ке мән енгіз:’); read(x5,y5);
a12:=sqrt(sqr(x2-x1)+sqr(y2-y1));
a23:=sqrt(sqr(x3-x2)+sqr(y3-y2));
a34:=sqrt(sqr(x4-x3)+sqr(y4-y3));
a45:=sqrt(sqr(x5-x4)+sqr(y5-y4));
a51:=sqrt(sqr(x5-x1)+sqr(y5-y1));
a13:=sqrt(sqr(x3-x1)+sqr(y3-y1));
a14:=sqrt(sqr(x4-x1)+sqr(y4-y1));
p:=a12+a23+a34+a45+a51;
p1:=(a12+a23+a13)2;
s1:=sqrt(p1*(p1-a12)*(p1-a23)*(p1-a 13));
p2:=(a13+a34+a14)2;
s2:=sqrt(p2*(p2-a13)*(p2-a34)*(p2-a 14));
p3:=(a14+a45+a51)2;
s3:=sqrt(p3*(p3-a14)*(p3-a45)*(p3-a 51));
s:=s1+s2+s3;
writeln;
write(‘бірінші үшбұрыш ауданы=’,s1);
write(‘екінші үшбұрыш ауданы=’,s2);
write(‘үшінші үшбұрыш ауданы=’,s3);
write(‘бесбұрыш периметрі=’,p);
write(‘бесбұрыш ауданы=’,s)
end.
x1=0,y1=0,x2=1,y2=2,x3=3,y3=3,x4=4, y4=3,x5=5,y5=1 болғанда
p=12,808, s=9,365.
2.15*. Бүйірінен жатқан цилиндрлік цистернадағы сұйықтың биікті-гі-h.
Ұзындығы L-ге, табан радиусы r-ге тең цистернадағы сұйық көлемін(V)
табыңыз.
Есептің шешуі:
Цистернадағы сұйықтың көлемін табу үшін дөңгелек сегментінің ауданын тауып,
оны цистерна ұзындығына көбейту қажет. Ал дөңгелек сегмент ауданын екі
тәсілмен табуға болады.
1) сектор ауданын қарастырып, одан үшбұрыш ауданын алып тастау(hR , болса
үшбұрыш ауданын қосу) арқылы. Бұл жағдайда әлі өтілмеген шартты операторды
қолдану қажет.
2) Мына түрдегі формулаларды қолдану арқылы: s=h(6a-8b), мұнда a=2,
b=, a-сегменттің керуші хордасы,
h-сегмент биіктігі, b-cәйкес хордалар.
program e2_15;{Бүйірінен жатқан цистернадағы сұйық көлемі}
var a,b,h,r,L,s,v: real;
begin
writeln; write(‘r,h,L-ге мән енгіз:’); read(r,h,L);
a:=2*sqrt(2*h*r-h*h); b:=sqrt(h*h+sqr(a2));
s:=h*(6*a-8*b); v:=s*L;
writeln; write(‘цистернадағы сұйық көлемі:v =’,v)
end. .
Мыс: h=6, L=10, r=4 болғанда, v=388
§3. Тармақталу программасы
Паскальда Бейсиктегі сияқты мұндай программаны ұйымдастыру үшін мына
түрдегі шартты оператор қолданылады:
if шарт then 1-оператор else 2-оператор
мұнда шарт – логикалық өрнек, ол Бейсиктегіше жазылады;
1-оператор – Паскальдың шарттыдан басқа кезкелген операторы;
2-оператор – Паскальдың шартты операторы да кіретін кезкелген операторы; ол
шарт жалған болғанда орындалады. Мыс, екі санның үлкенін табуға арналған
шартты оператор былай жазылады:
if ab then max:=a else max:=b;
3.1-мысал. Берілген х-тің мәні бойынша мына у функциясының мәнін есептеу
программасын құру:
program mys3_1;
var x,y:real;
begin write('х-ті енгіз:'); read(x);
if x0 then y:=sin(x) else y:=cos(x);
writeln; write('Y=',Y)
end.
Мыс, х=0 болғанда у=0 (sin0=0), ал х=3,14159265(радиан) болған-да y=-
9,99999E-01(яғни, шамамен -1-ге тең, себебі cos= -1) болады. Бұрын
атап өтілгендей, шарт жалған болған жағдайда тағы да бір шартты оператор
қолданылады. Бұл шарттардың біршама күрделі тізбегін бір шартты оператор
түрінде жазуға мүмкіндік береді.
3.2-мысал. Берілген х-тің мәніне сәйкес у функциясының мәнін есептеу
программасын құру:
program mys3_2;
var x,y:real;
begin
write('х-ті енгіз:'); read(x);
if x2 then y:=x else if x=3 then y:=2 else y:=5-x;
writeln; write('Y=',Y)
end.
Шартты операторда then не else-ден соң бірнеше операторларды жазуға болады.
Мұндай кезде оларды құрама операторға біріктіру қажет. Құрама оператор
түрі:
begin 1-оператор; 2-оператор; ...;n-оператор; end;
Мұнда 1-оператор; 2-оператор; ... – Паскальдың құраманы қоса алғандағы
кезкелген операторы.
3.3-мысал. Берілген Х,У мәндерінің х-қа үлкенін, ал у-ке кіші мәнін бөліп
беретіндей программа құру.
program mys3_3;
var x,y,z:real;
begin
write('х,y-ті енгіз:'); read(x,y);
if xy then begin z:=x; x:=y; y:=z end;
writeln; write(x,y)
end.
Жоғарыдағы программада шартты оператордың қысқаша түрі:
(if шарт then оператор ) қолданылғандығына назар аударыңыз. Бейсиктегі
сияқты шарт біршама күрделі де бола алады. Мұнда шарттың конъюнкциясын (and
көмегімен байланысқан шарттар), шарттың дизъюнкциясын(or) және шарттың
инверсиясын(not) пайдалануға рұхсат етіледі. Паскальда әрбір байланысқан
шарттар жақшаға алынып жазылады. and, or, not амалдары , , = амалдар-ына
қарағанда орындалу басымдығы үлкендеу. Сол себепті олар жақшаға алынбаса,
амалдардың орындалу реті бұзылады.
3.4-мысал. (х,у) координатасымен берілген нүкте сыртқы радиусы r1, ішкі
радиусы – r2 болатын сақинаға тиісті ме, жоқ па соны анықтау.
program mys3_4;
var x,y,r1,r2:real;
begin
writeln('х,y,r1,r2-ні енгіз:'); read(x,y,r1,r2);
if (sqrt(sqr(x)+sqr(y))r1) and (sqrt(sqr(x)+sqr(y))r2)
then write('сақинаға тиісті')
else write('сақинаға тиісті емес');
end.
Программаны тексеру үшін: x =1, y =1, r1=1, r2=1 мәндерін берсек, онда
сақинаға тиісті деген жазу, ал x =2, y =2, r1=2, r2=1 болғанда сақинаға
тиісті емес деген жазуы алынады.
Бақылау сұрақтары
1. Шартты оператордың толық және қысқаша түрін жазыңыз. Шарттың тура немесе
жалған болған кезінде қандай операторлар қолданылады?
2.Құрама оператор деген не?
3.Паскальда күрделі шарттар қалай жазылады және олардың ерекшелігі неде?
Практикалық тапсырмалар
3.1.Бір шартты оператор түрінде жазыңыз:
а) y=б) d=max(a,b,c); в) z =
г) к айнымалысына координатасы (х,у) болатын нүкте жатқан ширектің
нөмірін меншіктеңіз;
д) n айнымалысына төрт а1,а2,а3,а4 сандарының ішінен үшеуінен өзгеше,
өзара тең болатын реттік нөмірді меншіктеңіз.
3.2. а,b,с сандары берілген. abc теңсіздігінің орындалуын тексе-ріп, ол
туралы хабарлама шығарыңыз.
3.3. Нақты үш а,b,с сандары берілген. Осылардың ішінен (1,3) инт-ервалында
жататынын таңдаңыз.
3.4. х,у (х≠у) сандары берілген. Олардың кішісін қосындының орта шамасымен,
ал үлкенін – екі еселенген көбейтіндімен алмастыры-ңыз.
3.5. Берілген a,b,c сандарының ең үлкенін табыңыз.
3.6. Қабырғаларының ұзындығы x,y,z болатын үшбұрыш бола ма, соны анықтаңыз.
3.7. Центрі (х0,у0) нүктесі болатын шеңберде бастапқы координата-сы
(xn,yn), соңғы координатасы (xk,yk) болатын доға берілген. Доғаның бастапқы
және соңғы нүктелері жататын шеңбер ширегі-нің нөмірін анықтаңыз.
3.8. (х,у) нүктесінің координатасы берілген. Осы нүкте мына сурет-те
көрсетілген аумаққа тиісті ме, соны анықтаңыз:
а) б)
в)
г) д)
е)
3-сурет
3.9. Нақты a,b,c,x,y оң сандары берілген. Қырлары a,b,c-ға тең кірпіш
қабырғалары х, у тіктөртбұрышты қуысқа сия ма, соны анықтаңыз. Кірпішті тек
оның әрбір қыры қуыс қабырғаларына параллель немесе перпендикуляр болғанда
ғана тығуға рұхсат етіледі.
3.10*. Нақты х1,х2,х3,у1,у2,у3 сандары берілген.Координат басы төбесі
(х1,у1),(х2,у2),(х3,у3) болатын үшбұрышқа тиісті ме?.
3.11*. Өзінің төбесінің координаталарымен берілген бесбұрыштағы тік бұрыш
санын есептеңіз (егер ол бар болса).
Есептердің шешуі.
§3. Тармақталу программасы.
3.1.Бір шартты оператор түрінде жазыңыз:
а)y = б) d=max(a,b,c); в) z =
Шешуі: a) if (x0) and (x2) then y:=sqr(cos(x)) else y:=1-sqr(sin(x));
б) if (ab) and (bc) then d:=a else if (ba) and (bc) then d:=b else
d:=c;
в) if (x0) and (xy) then z:=x else
if (x0) and (x=y) then z:=y else
if (x=0) and (xy) then z:=x else
if (x=0) and (x=y) then z:=y;
г) к айнымалысына координатасы (х,у) болатын нүкте жатқан ширектің
нөмірін меншіктеңіз;
Шешуі: if (x0) and (y0) then k:=1 else if (x0) and (y0) then k:=2 else
if (x0) and (y0) then k:=3 else k:=4;
д) n айнымалысына төрт а1,а2,а3,а4 сандарының ішінен үшеуінен өзгеше,
өзара тең болатын реттік нөмірді меншіктеңіз.
Шешуі: if (a1a2) and (a1a3) then n:=1 else
if (a2a1) and (a2a3) then n:=2 else
if (a3a1) and (a3a2) then n:=3 else n:=4;
3.2. а,b,с сандары берілген. abc теңсіздігінің орындалуын тек-серіп, ол
туралы хабарлама шығарыңыз.
program e3_2;
var a,b,c: real;
begin writeln; write(‘a,b,c сандарына мән енгізіңіз:’); read(a,b,c);
if (ab) and (bc) then writeln(‘теңсіздік орындалады’)
else writeln(‘теңсіздік орындалмайды’);
end.
3.3. Нақты үш а,b,с сандары берілген. Осылардың ішінен (1,3) инт-ервалында
жататынын таңдаңыз.
program e3_3;
var a,b,c: real;
begin writeln; write(‘a,b,c сандарына мән енгізіңіз:’); read(a,b,c);
if (a1) and (a3) then writeln(‘а жатады’);
if (b1) and (b3) then writeln(‘b жатады’);
if (c1) and (c3) then writeln(‘c жатады’)
else writeln(‘ешқайсысы жатпайды’);
end.
3.4. х,у (х≠у) сандары берілген. Олардың кішісін қосындының орта
шамасымен, ал үлкенін – екі еселенген көбейтіндімен алмастыры-ңыз.
program e3_4;
var x,y: real;
begin writeln; write(‘x,y сандарына мән енгізіңіз:’); read(x,y);
if (xy) then begin x:=(x+y)2; y:=2*y end
else begin y:=(x+y)2; x:=2*x end;
writeln;write(‘х,у-тің жаңа мәндері:’,x,y)
end.
3.5. Берілген a,b,c сандарының ең үлкенін табыңыз.
program e3_5;
var a,b,c,d: real;
begin writeln; write(‘a,b,c –ға мән енгізіңіз:’); read(a,b,c);
if (ab) and (ac) then d:=a else
if (ba) and (bc) then d:=b else d:=c;
writeln; write(‘сандардың ең үлкені:’,d)
end.
3.6. Қабырғаларының ұзындығы x,y,z болатын үшбұрыш бола ма, соны анықтаңыз.
Үшбұрыштың үлкен қабырғасы қалған екі қабырғасының қосын-дысынан кіші болуы
керек.
program e3_6;
var x,y,z: real;
begin writeln; write(‘x,y,z-ке мән енгізіңіз:’); read(x,y,z);
if (xy+z) and (yx+z) and (zx+y) then writeln(‘үшбұрыш
болады’) else writeln(‘үшбұрыш болмайды’); end.
3.7. Центрі (х0,у0) нүктесі болатын шеңберде бастапқы координата-сы
(xn,yn), соңғы координатасы (xk,yk) болатын доға берілген. Доғаның бастапқы
және соңғы нүктелері жататын шеңбер ширегі-нің нөмірін анықтаңыз.
program e3_7;
var x0,y0,xn,yn,xk,yk: real;
begin writeln; write(‘x0,y0,xn,yn,xk,yk –ға мән енгізіңіз:’);
read(x0,y0,xn,yn,xk,yk);
if (xnx0) and (yny0) then
write(‘бастапқы нүкте 1-ширекте’);
if (xnx0) and (yny0) then
write(‘бастапқы нүкте 4-ширекте’);
if (xnx0) and (yny0) then
write(‘бастапқы нүкте 2-ширекте’);
if (xnx0) and (yny0) then
write(‘бастапқы нүкте 3-ширекте’); writeln;
if (xkx0) and (yky0) then write(‘соңғы нүкте 1-ширекте’);
if (xkx0) and (yky0) then write(‘соңғы нүкте 4-ширекте’);
if (xkx0) and (yky0) then write(‘соңғы нүкте 2-ширекте’);
if (xkx0) and (yky0) then write(‘соңғы нүкте 3-ширекте’);
end.
3.8. (х,у) нүктесінің координатасы берілген. Осы нүкте мына сурет-те
көрсетілген аумаққа тиісті ме, соны анықтаңыз:
а) б)
в)
г) д)
е)
Мұнда есепті шешу программасы алдыңғы есептегідей, сондықтан шартты
оператордың жазылуын ғана келтіреміз.
а) if x0 then write(‘тиісті’) else write(‘тиісті емес’);
б) if y0 then write(‘тиісті’) else write(‘тиісті емес’);
в) if yx then write(‘тиісті’) else write(‘тиісті емес’);
г) if x-1 and y-1 then write(‘тиісті’) else write(‘тиісті емес’);
д) if y1-x and yx+1 and yx-1 and y-x-1 then
write(‘тиісті’) else write(‘тиісті емес’);
е) if (sqr(x)+sqr(y)1) then write(‘тиісті’) else write(‘тиісті емес’);
3.9. Нақты a,b,c,x,y оң сандары берілген.Қырлары a,b,c-ға тең кірпіш
қабырғалары х, у тіктөртбұрышты қуысқа сия ма, соны анықтаңыз. Кірпішті тек
оның әрбір қыры қуыс қабырғаларына параллель немесе перпендикуляр болғанда
ғана тығуға рұхсат етіледі.
Мұнда есепті шешу программасы алдыңғы есептегідей, сондықтан шартты
оператордың жазылуын ғана келтіреміз:
if ((ax) and (by)) or ((ay) and (bx)) or
((bx) and (cy)) or ((by) and (cx)) or
((cx) and (ay)) or ((cy) and (ax))
then write(‘қуысқа сияды’) else write(‘қуысқа симайды’);
3.10*. Нақты х1,х2,х3,у1,у2,у3 сандары берілген. Координат басы төбесі
(х1,у1),(х2,у2),(х3,у3) болатын үшбұрышқа тиісті ме?.
Есепті шешу программасы:
Бұл есепті шешу үшін екі нүкте арқылы өтетін түзу теңдеуі қалай
жазылатындығын еске түсіру керек. Содан соң үшбұрыш төбесін беретін екі
нүкте арқылы өтетін түзу теңдеуін құрады. Координат басы осы үшбұрышта
жатуы үшін осы түзулердің бірінің мәні(х=0 нүктесіндегі) басқа екі
түзудегіден басқа таңбалы болуы керек. Яғни бір түзу координат басының
үстіңгі жағында(басқасы астыңғы жағында) немесе керісінше бір түзу
координат басының астыңғы (басқасы үстіңгі) жағында жатады деуге болады.
program e3_10;
var x1,y1,x2,y2,x3,y3,y12,y23,y13: real;
begin writeln; write(‘x1,y1,x2,y2,x3,y3 –ке мән енгізіңіз:’);
read(x1,y1,x2,y2,x3,y3);
if x2x1 then y12:=y1-x1*(y2-y1)(x2-x1) else y12:=0;
if x2x3 then y23:=y2-x2*(y3-y2)(x3-x2) else y23:=0;
if x3x1 then y13:=y1-x1*(y3-y1)(x3-x1) else y13:=0;
if (y12*y230) or (y23*y130) or (y12*y130) then
write(‘тиісті’) else write(‘тиісті емес’);
end.
Программада нүктелердің тең болып қалу мүмкіндігі ескеріліп, сонан да түзу
OY осіне параллель болуына орай(яғни у-тің мәні кезкелген болуы мүмкін
болатындықтан, біз оны нольге тең дейміз) қосымша шарт(көрші нүктелердің х
мәнінің теңсіздігі) енгізілді.
3.11*. Өзінің төбесінің координаталарымен берілген бесбұрыштағы тік бұрыш
санын есептеңіз (егер ол бар болса).
Шешуі: Есепті шешу үшін векторлар арасындағы бұрышты қалай есептеуді еске
түсіру керек. Әуелі әрбір екі нүкте арқылы өтетін вектор координаттарын
табады. Содан соң екі вектор арасындағы бұрышты есептеп, оның тік бұрыш
екендігін тексереді. Сонымен а(ха,уа) және b(xb,yb) векторлары берілсе,
онда оның арасындағы бұрыштың косинусы мынаған тең: cos=, егер
бұрыштың косинусы нольге тең болса, бұрыш тік болғаны.
Біздің жағдайда мына векторлар берілген(жақша ішіндегі коодинаттары):
a12(x2-x1,y2-y1), a23(x3-x2,y3-y2), a34(x4-x3, y4-y3), a45(x5-x4, y5-y4),
a51(x1-x5, y1-y5) . Мына суретті пайдаланып, бұрыш косинустарын былай
белгілейік: a123(2 нүктесінде), а234(3 нүктесін-де), а345(4 нүктесінде),
а451(5 нүктесінде), а512(1 нүктесінде).
program e3_11;
var x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x21,y 21,x32,y32,x43,y43,x54,y54,x15,
y15,a123,a234,a345,a451,a512: real; s: integer;
begin
writeln; write(‘x1,y1,x2,y2,x3,y3,x4,y4,x5,y 5 мәндерін енгізіңіз:’);
read(x1,y1,x2,y2,x3,y3,x4,y4,x5,y5) ;
x21:=x2-x1;y21:=y2-y1; x32:=x3-x2;y32:=y3-y2; x43:=x4-x3;
y43:=y4-y3; x54:=x5-x4;y54:=y5-y4; x15:=x1-x5;y15:=y1-y5;
a123:=(x21*x32+y21*y32)((sqrt(x21* x21+y21*y21))*(sqrt(x32*x32+
y32*y32)));
a234:=(x43*x32+y43*y32)((sqrt(x43* x43+y43*y43))*(sqrt(x32*x32+
y32*y32)));
a345:=(x43*x54+y43*y54)((sqrt(x43* x43+y43*y43))*(sqrt(x54*x54+
y54*y54)));
a451:=(x15*x54+y15*y54)((sqrt(x15* x15+y15*y15))*(sqrt(x54*x54+
y54*y54)));
a512:=(x15*x21+y15*y21)((sqrt(x15* x15+y15*y15))*(sqrt(x21*x21+
y21*y21)));
if a123=0 then begin writeln('тік бұрыш =',1,2,3); s:=s+1 end;
if a234=0 then begin writeln(' тік бұрыш =',2,3,4); s:=s+1 end;
if a345=0 then begin writeln(' тік бұрыш =',3,4,5); s:=s+1 end;
if a451=0 then begin writeln(' тік бұрыш =',4,5,1); s:=s+1 end;
if a512=0 then begin writeln(' тік бұрыш =',5,1,2); s:=s+1 end;
writeln('Барлық тік бұрыш саны=', s);
end.
Егер нүктелер координаттары: 1-нүкте(0;0), 2-(0;1), 3-(0.5;2), 4-(1;1), 5-
(1;0) болса, онда тік бұрыштар: 451 және 512 болады.
§4. Циклдік программа (Әзір циклы)
Паскальда әзір циклын ұйымдастыру үшін мына түрдегі оператор қолданылады:
while шарт do оператор
мұнда шарт – Паскальдың кезкелген шарты; оператор–Паскальдың кезкелген
операторы(оның ішінде құрама да). Оператор былай жұмыс істейді: шарт
тексеріледі, егер ол тура болса, онда оператор орындалады, сосын тағы да
шарт тексеріледі және т.с.с. Шарт жалған болған кезде циклдің орындалуы
тоқтайды. Цикл атауының өзі мынаны көрсетеді: әзір шарт орындалса, цикл
орындалады.
Шарттың берілуі бастан жалған болса, онда цикл бірде-бір рет
орындалмайтынын ескертеміз. Ал шарт тұрақты тура болған кезде цикл үздіксіз
орындала беруі мүмкін(мұны цикл тұйықталып қалды дейді). Тұйық циклден шығу
үшін Ctrl + C немесе Ctrl + Break(екі рет) пернелерін қоса басып, сосын Esc
пернесін басу керек.
4.1-мысал. Берілген Е дәлдікпен қосындысын есептеу.
program mys4_1;
var e,s,k:real; i:integer;
begin write('Е дәлдігін енгіз:'); read(е);
k:=1;s:=0;i:=1;
while 1i =e do
begin s:=s+ki; i:=i+1; k:=k*(-1) end;
writeln; write('s=',s)
end.
Бұл программада бұрыннан белгілі қосынды табу алгоритмі қолданылған. Оның
қызметі мынадай: айнымалы енгізіледі(ол мұн-дағы s айнымалысы), оған нөлдік
мән беріледі, содан соң онда қосынды жинақталады. Келесі қосылғыш-натурал
қатардың келесі санына кері сан. Алайда мұнда жұп қосылғыштар(нөмір
бойынша) “-“ таңбасымен, ал тақ қосылғыштар “+” таңбасымен алынады. Осы
таңбаларды есепке алу үшін қосымша К айнымалысы енгізіліп, ол біртіндеп
бірде +1, бірде -1 мәнін қабылдайды. i айнымалысы бір-тіндеп кезекті
натурал сандарды(2,3,4 және т.б) беріп тұрады. Есептеуге қолайлы болу үшін
ол бүтін(integer) ретінде сипатталған. Программа бойынша Е = 0,1 болғанда
нәтиже 0,6456349 болады, ал мұндай қосындының(шексіз қосындының нәтижесі -
соңғы қосын-ды болып табылады) дәл мәні – ln(2) = 0.6931... .
Безендіру бойынша ескерту. Паскальда программаны көрнекі ету үшін, оны жол
басынан саты түрінде кейін шегеріп жазады. Кейде цикл құрылымын(құрама
операторды) қосымша кейін шегеріп жазу арқылы циклдің басталған және
аяқталған жерін көрнекі түрде көруге мүмкін болады. Үлкен программа үшін
бұл өте қолайлы.
4.2-мысал. N берілген a1,a2,...an сандарының ішінен ең үлкенін табу.
program mys4_2;
var a,x:real; i,n:integer;
begin write('n,a сандарын енгіз:'); read(n,a);
x:=a; i:=1;
while in do
begin
i:=i+1; writeln(i, ‘-санды енгіз’);
readln(a); if ax then x:=a;
end;
writeln(‘max a=’,x)
end.
Құрама операторда кезкелген оператор болуы мүмкін болғандықтан (оның ішінде
тағы бір циклдік оператор да), мұндайда қабаттасқан циклді ұйымдастыруға
болады.
4.3-мысал. Көбейту кестесін басып шығару.
program mys4_3;
var i,j,k:integer;
begin i:=1;
while i=9 do
begin
j:=1;
while j=9 do
begin
k:=i*j; write(i, ‘*’,j,’=’,k,’’);
j:=j+1;
end; writeln; i:=i+1;
end
end.
Бақылау сұрақтары
1. Паскальда әзір циклы қалай ұйымдастырылады?
2. Цикл ішінде тармақталу қолданыла ма? Тағы бір цикл ше?
3. Тұйықталған цикл жұмысын қалай тоқтатады?.
Практикалық тапсырмалар
4.1. Берілген х үшін х-х22+x33-x44+... түрдегі қосындыны Е дәлдікпен
есептеңіз (кезекті қосылғыш модулы Е-ден аз болғанда есептеуді тоқтату
керек). Нәтижені у=ln(1+x) мәнімен салыстыр-ыңыз.
4.2. 1,1+12,1+12+13,... сандарының ішінен берілген А санынан үлкен болатын
бірінші санды табыңыз.
4.3. Берілген х үшін sinx, sin(sinx), sin(sin(sinx)),...тізбегінен модулы
0,01-ден аз болатын бірінші санды табыңыз.
4.4. аn+1=an+2an түріндегі тізбек үшін аn-an -10.1 шарты орындала-
тындай ең кіші n нөмірін табыңыз, мұнда а1=1.
4.5. 1+11!+12!+13!+... қосындысын берілген Е дәлдікпен есеп-теңіз.
Нәтижесін Е=2.718281828... мәнімен салыстырыңыз. n!мәнін есептеу үшін n!=(n-
1)•n рекурренттік формуласын пайдаланыңыз.
4.6. Берілген х үшін берілген Е дәлдікпен мына түрдегі қосындыны есептеңіз:
x-x33!+x55!-x77!+... .Нәтижесін y=sinx мәнімен салыс-тырыңыз.
4.7. Берілген х үшін берілген Е дәлдікпен мына түрдегі қосындыны есептеңіз:
1-x22!+x44!-x66!+... .Нәтижесін y=cosx мәнімен салыс-тырыңыз.
4.8*. Төмендегі заңдылықпен жасалатын х1, х2, ... шексіз тізбегін
қарастырайық: x1=(u+n-1)2, ...,xi=((n-1) •xi -1+uxn-1i -1)n, i=2,3,...
мұнда u – теріс емес нақты сан, n-натурал сан. Осы тізбек u квадрат
түбірінің қажет дәлдікпен жуықтауын алуға мүмкіндік береді. Берілген u үшін
көрсетілген Е дәлдікпен квадрат түбір мәнін есептеңіз.
4.9*. Спортшы алғашқы күні 10 км жүгірді. Ол әрбір келесі күні күндік
нормасын өткен күнгі норманың 10%-на арттырып отырды. Спортшының нешінші
күні:
а) 20 км-ден аса жүгіретінін;
b) 100 км-ден аса жүгіретінін (барлық жолды қоса алғанда)
анықтаңыз.
Есептердің шешуі.
§4. Циклдік программа (Әзір циклы)
4.1. Берілген х үшін х-х22+x33-x44+... түрдегі қосындыны Е дәл-дікпен
есептеңіз (кезекті қосылғыш модулы Е-ден аз болғанда есептеуді тоқтату
керек). Нәтижені у=ln(1+x) мәнімен салыстыр-ыңыз. Есепті шешу
программасы:
program e4_1;
var x,y,e,s: real; I,k: longint;
begin
writeln; write(‘х пен Е дәлдігіне мән енгізіңіз:’); read(x,e);
y:=x; s:=0; i:=1; k:=1;
while abs(yi)e do
begin
s:=s+y*kI; y:=y*x; k:=k*(-1); i:=i+1;
end;
write(‘қосынды =’,s);
writeln; write(’ln(1+x) =’,ln(1+x));
end.
4.2. 1,1+12,1+12+13,... сандарының ішінен берілген А санынан үлкен болатын
бірінші санды табыңыз.
program e4_2;
var a,y: real; i: integer;
begin
writeln; write(‘a-ға мән енгізіңіз:’); read(a);
y:=0; i:=1;
while y=a do
begin
y:=y+1i; i:=i+1;
end;
write(‘i =’,i,’болғандағы A-дан үлкен бірінші сан’,y);
end.
4.3. Берілген х үшін sinx, sin(sinx), sin(sin(sinx)),...тізбегінен модулы
0,01-ден аз болатын бірінші санды табыңыз.
program e4_3;
var x,y: real;
begin
writeln; write(‘x-қа мән енгізіңіз:’); read(x);
y:=sin(x);
while abs(y)=0.01 do
begin
y:=sin(y);
end;
write(‘модулы бойынша 0.01-ден кіші бірінші сан =’,y);
end.
4.4. аn+1=an+2an түріндегі тізбек үшін аn-an -10.1 шарты орындала-
тындай ең кіші n нөмірін табыңыз, мұнда а1=1.
program e4_4;
var a1,a2: real; i:integer;
begin
writeln; a1:=1;a2:=1;i:=2;
while abs(a2-a1)=0.1 do
begin
a1:=a2; a2:=(a2+2a1)2; i:=i+1
end;
write(‘шарт орындалатын ең кіші нөмір-’i,)
end.
4.5. 1+11!+12!+13!+... қосындысын берілген Е дәлдікпен есепте-ңіз.
Нәтижесін Е=2.718281828... мәнімен салыстырыңыз. n! мәнін есептеу үшін n!=(n-
1)•n рекурренттік формуласын пайдаланыңыз.
program e4_5;
var s,p,e: real; i:integer;
begin
writeln; write(‘Е дәлдігін енгізіңіз:’);read(e);
s:=0; i:=0; p:=1;
while 1p=e do
begin
s:=s+1p; i:=i+1; p:=p*I
end;
write(e,‘дәлдікпен берілген қосынды =’,s); writeln;
write(‘Нәтижесін ЕХР-мен салыстырғанда-‘,exp(1))
end.
4.6. Берілген х үшін берілген Е дәлдікпен мына түрдегі қосындыны есептеңіз:
x-x33!+x55!-x77!+... .Нәтижесін y=sinx мәнімен салыстырыңыз.
program e4_6;
var x,y,e,p,s: real; i,k: integer;
begin
writeln; write(‘Е дәлдігі мен х-қа мән енгізіңіз:’); read(e,x);
y:=x; s:=0; i:=1; ... жалғасы
Паскаль программалау тілінің
негіздері
орыс тілінен аударған М.Бексарыұлы
ЖОО-ның техникалық мамандықтары бойынша және арнаулы орта, орта оқу
орындарының студенттері мен оқушыларына арналған оқу құралы
Қызылорда 2011
УДК004.43(07)
ББК 32.97-018.1я7
Б40
Қызылорда облыстық білім беру қызметкерлерінің біліктілігін арттыру және
қайта даярлау институтының Ғылыми Кеңесінде 2010 жылғы 26 желтоқсанда (№4
хаттама) қаралып, таратылуға ұсынылған.
Дайындаған:
Мұратбек Бексарыұлы - №114 орта мектептің информатика пәнінің жоғары
санатты мұғалімі.
“Қызылорда-Қанағаты”, 2011 – 132 бет
ISBN 978-7102-22-7
Пікір жазғандар:
Шералы Ибраев – Болашақ университетінің кафедра меңгерушісі, физика-
математика ғылымдарының кандидаты, доцент
Оразбай Орманов - Қызылорда облыстық білім беру қызметкерлерінің
біліктілігін арттыру және қайта даярлау институтының жаратылыстану-
математикалық білім беру кафедрасының оқытушысы
Аударма оқулық жоғары техникалық оқу орындарының студенттеріне
арналғанымен, ол мектептер мен колледж оқытушылары мен оқушыларының Паскаль
программалау тілін терең меңгеруіне жол ашатын өте құнды оқу құралы.
Оқулық өз тілімізге информатика саласындағы терминологияны ескере отырып,
сапалы аударылған және ондағы есептер қазақы ұғымдармен сәтті берілген.
Оқулықта есептердің шешулері пайдаланушыларға қолайлы болу үшін әрбір
параграфтың соңында бірден келтірілген.
УДК004.43(07)
ББК
32.97-018.1я7
ISBN 978-7102-22-7 © М.Бексарыұлы, 2011
Мазмұны
1 – тарау. Паскаль программалау тілінің негіздері ... ... ... ... ... 4
Кіріспе
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... .. 4
§1. Паскаль алфавиті
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . 6
§2. Паскальдағы сызықтық программа
... ... ... ... ... ... ... ... ... ... ..10 Паскальдағы сызықтық
программа. Есептердің шешуі ... ... ... ... 13
§3. Тармақталу программасы
... ... ... ... ... ... ... ... ... ... ... ... ... ... ..19
Тармақталу программасы. Есептердің шешуі ... ... ... ... ... ... 22
§4. Циклдік программа
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. .28
Циклдік программа. Есептердің шешуі ... ... ... ... ... ... ... ... .
31
§5. Бүтін санды айнымалыларды өңдеу ... ... ... ... ... ... ... ... ... ...
35
Бүтін санды айнымалыларды өңдеу.Есептердің шешуі ... ... 38
§6. Циклдік программа (параметрлі)
... ... ... ... ... ... ... ... ... ... ... ..43
Циклдік программа (параметрлі).Есептердің шешуі ... ... ... .46
§7. Көшу операторы. Бос оператор
... ... ... ... ... ... ... ... ... ... ... ... .50
Көшу операторы. Бос оператор.Есептердің шешуі ... ... ... ... 52
§8. Бір өлшемді жиымдар
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .58
Бір өлшемді жиымдар. Есептердің шешуі
... ... ... ... ... ... ... ...62
§9. Екі өлшемді жиымдар
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .71
Екі өлшемді жиымдар.Есептердің шешуі
... ... ... ... ... ... ... ... 75
§10. Процедуралар мен функциялар
... ... ... ... ... ... ... ... ... ... ... ... 87
Рекурсиялар
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
...91
Процедуралар мен функциялар. Есептердің шешуі ... ... ... ..93
§11. Символдық ақпараттарды өңдеу
... ... ... ... ... ... ... ... ... . ... ..102
Символдық ақпараттарды өңдеу. Есептердің шешуі ... ... ..106
§12. Есептер шығару
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . ... ..109
Есептердің шешуі. Бүтін
сандар ... ... ... ... ... ... ... ... ... ... ... .116
Аудармашының түсіндірмесі
... ... ... ... ... ... ... ... ... ... ... ... ... ...128
1 – тарау. Паскаль программалау тілінің негіздері
Кіріспе. Программалау тілдері туралы
Мектеп курсында сіз программалау тілінің бірі-Бейсикті оқып үйрендіңіз.
Алайда қазір ондай тілдер өте көп, олар ондап саналады. Барынша кең
таралған(Бейсикпен қатар) тілдерге: Си және Паскаль (Pascal) жатады.
Соңғысын толығырақ оқып-үйренуге осы оқу құралында кірісетін боламыз.
Алдымен тілдердің жіктелуі жайлы бірер сөз. Компьютер алго-ритмді
орындаушы ретінде барынша қарапайым бұйрықтар тіліне (оны әдетте машиналық
тіл деп атайды) ие. Біршама күрделі алго-ритм жүздеген, мыңдаған және он
мыңдаған машиналық тілдегі бұйрықтардан тұруы мүмкін. Сондықтан да
компьютерлік тілді төмен деңгейлі программалау тілі деп санайды.
Төмен деңгейлі тілдерде программалау ауыр жұмыс, ол оны құрастырушыдан
жоғары кәсіби білікті талап етеді. Міне содан да программалаушы еңбегінің
жұмыс өнімділігі төмен. Осы қиындық-тарды жеңу мақсатында жоғары деңгейлі
программалау тілдері ойлап табылған.
Жоғары деңгейлі программалау тілдері көрнекілігі мен жинақы-лығы жағынан
математика тілі сияқты. Оны жай адам тілі мен маш-иналық тілдің арасындағы
қандай да бір аралық тіл деуге болады. Бұл адамның компьютермен қатынасын
жеңілдетеді, алайда прог-раммалау тілі арнайы үйренуді қажет етеді. Осы
тілдердің бұйрық-тары операторлар деп аталады.
Жоғары деңгейлі программалау тілінің күрделі операторларын ком-пьютер
тікелей орындай алмайтыны анық.. Сол себептен де осын-дай операторларды
машиналық бұйрық тіліне аудармашы қажет. Жоғары деңгейлі тілде жазылған
программаны орындаудың екі түр-лі тәсілі бар. Бірінші тәсіл бойынша
компилятор деп аталатын арн-айы қызметтік программа берілген программаның
барлық оператор-ларын машиналық тілге аударады да, сонан соң осы алынған
маши-налық программа компьтерде орындалады.
Екінші тәсіл бойынша интерпретатор деп аталатын арнайы қызметтік
программа қолданылады.Интерпретатор тиісті програм-маның операторларын
біртіндеп(бірінен соң бірін) машина тіліне аударады, ал компьютер оны
бірден орындайды. Компилятор да, интерпретатордың өзі де машиналық тілдегі
программа болып табылады. Олардың әрқайсысын қолданудың өзінше артықшылығы
мен кемістіктері де бар.
Компилятор программаны машиналық тілге тұтас түрде оның жекелеген
операторларының дұрыстығын ғана емес, олардың өзара үйлесімділігін де
тексере отырып аударады. Бұл уақытты біршама көп алады, бірақ программадағы
қателерді компиляциялау кезінің өзінде-ақ анықтауға мүмкіндік береді.
Интерпретатормен жұмыс әлдеқайда жеңілдеу. Ол аяқталып бітпеген
программаның да орындалуына мүмкіндік жасайды, ал оның алгоритмді құрастыру
мен жөндеу кезінде пайдасы көп. Алайда интерпретатор программаның барлық
бөлігінің өзара үйлесімін тексере алмайды. Оған қоса программаның
интерпретация режиміндегі жұмысы алдынала компиляцияланған программадан
бірнеше есе баяу жүреді.
Бейсик тіліндегі программалар интерпретация режимінде орындала-тын болса,
ал мысалы, Паскаль үшін программаны компиляциялау қолданылады. Сонымен,
есіңізде болсын: Бейсик-интерпретатор, ал Паскаль-компилятор болып
табылады.
Паскальдың екінші бір ерекшелігі, оның құрылымдық прог-раммалау
ұстанымын есепке алып құрастырылуы. Құрылымдық программаларға оларды өңдеу
мен түзетудің жеңілдігі, қателердің аз жіберілуі тән. Паскальда құрылымдық
берілгендер типінің жай айнымалылар, жиымдар, файлдар, жиындар, жазбалар,
сілтемелі айнымалылар сияқты толық тізбесі бар.
Паскаль-программаның кейде барынша толық жазылуы есебі-нен,
мыс,айнымалылар мен олардың типтерін сипаттаудың міндет-тілігі арқасында
оның сенімділігін ерекше атау керек.
Паскальдың тағы бір ерекшелігі, оның модульдік программалау екендігі. Ол
алдынала қосалқы процедуралардың тұтас кітапхана-сын жасап алып, оларды
қажетті программаға модуль ретінде жал-ғауды белсенді түрде қолдана
алатындығы.
Борланд фирмасы жасаған(5.5 версиясынан бастап) Турбо-Паскаль-дың соңғы
ерекшелігі, оның обьектілі-бағдарлы программалау (ОБП) деп аталатын
мүмкіндігінің барлығы. Мұнда берілгендерді оларды өңдеуші процедуралармен
біртұтас-обьект ретінде байлан-ыстырып қарастырады. Соның нәтижесінде
берілгендер де, проце-дуралар да жеке мәнін жоғалтады. Шынында ОБП-ны
берілгендер мен процедуралардың кездейсоқ бірігуінің орнына оларды мазмұн-
дық жағынан байланыстырушы жаңа деңгейлі модульдік програм-малау деп
қарастыруға болады. ОБП-ның артықшылығы тек күрделі программаларды,
программалаудың біртұтас кітапханасын құрасты-ру кезінде көрінетіндігін
атап өту керек. Күрделі емес алгоритмдер-ді құрастыруда Паскальдың кәдімгі
тәсілдерімен жұмыс істеу әлде-қайда жеңіл және тиімді.
Паскаль тілін 1970 жылы швейцариялық ғалым Н.Вирт ойлап тауып, оны
атақты математик, физик және философ Блезь Паскаль-дың(1623-1662) құрметіне
соның атымен атады. Б.Паскаль тарихта алғашқы механикалық есептеу
машинасын(1642 ж.) жасауымен де белгілі.
Паскаль мен Бейсик программалау тілдерінің бір-бірінен айыр-машылығы,
Паскаль-транслятор(ал Бейсик-интерпретатор), яғни Паскальда программа толық
талданады және ол компьютерде өңд-еудің үш кезеңінен өтеді:
трансляцияланады(программа машина тіліне аударылады),
компоновкаланады(алынған программаға стандартты функциялар мен процедуралар
жалғанады) және прог-рамма тікелей орындалады. Біз қарастырып отырған Турбо-
Пас-кальда жұмыста қолайлы болуы ескеріліп, осы үш кезең жұмысы
программалаушыдан жасырылған.
Паскаль барынша мәдени тілге жатады: мұнда программада пайдаланылатын
айнымалылар алдынала сипатталады, олардың мәні көрсетілген типте ғана бола
алады және т.с.с.
Біз осы кітапта Паскальдың Борланд фирмасы дайындаған Турбо-Паскальдың 7.0
версиясын қарастырамыз. Алайда 1-тарауда келті-рілген мәліметтер Паскальдың
кезкелген диалектісі үшін жарамды.
§1. Паскаль алфавиті
Паскальдың, басқа да тілдер сияқты осы тілде қолданылатын әріп-терден
(символдардан) тұратын өз алфавиті бар. Паскаль алфавиті құрамына:
1) латынның a –дан z-ке дейінгі әріптері(бас әріптері де);
2) а-дан я-ға дейінгі орыс әріптері(бас әріптері де);
3) 0-ден 9-ға дейінгі цифрлар;
4) арнайы символдар: +, -, , *, ; , : , =, , және басқалар енеді.
Паскальда тұрақтылардың (константа) үш түрі бар: сандық (немесе жай
ғана-сандар), символдық және логикалық .
Символдық және логикалық тұрақтылармен жұмысты кейінірек қарастырамыз.
Сандар Паскальда әдеттегідей ондық санау жүйесінде жазыла-ды. Мұнда да
Бейсиктегі сияқты, ондық үтір орнына нүкте қолдан-ылады. Дәрежелі сандар
экспонентті түрде жазылады, мыс: 6,25·10-23 саны 6.25Е-23 түрінде. Сандар
Паскальда да, Бейсиктеде бүтін және нақты (бөлшек бөлікті) түрде болатынын
ескертеміз.
Айнымалылар латын әріптері мен цифрлардың кезкелген тір-кесі түрінде
белгіленеді, бірақ бірінші символы әріп болады. Мыс: a, b1, summa, alfa21
және т.б . Паскальда айнымалының нақты типі болуы керек. Ондай тип төртеу:
бүтін, нақты, символдық және
логикалық.. Айнымалы типі программа мәтінінің басында арнайы сипатталады(§2-
ні қараңыз).
Тұрақтылар мен айнымалыларды қоса алғанда мәліметтер деп атау қабылданған.
тұрақты мәндер аралығы мысал
типі
бүтін -32768 – 32767 5 -256
нақты 2.9·10-39 – 1.7·1038 12.5
6.03Е-23
символдық апострофқа алынып ‘мен Паскаль
жазылған 256 символғатілін
дейін үйренемін’
логикалық екі мәнге ие false, true
айн-лы типімәндер аралығы сипатталуы
бүтін -32768 – 32767 integer
нақты 2.9·10-39 – 1.7·1038 real
символдық бір символ char
логикалық екі мәнге ие boolean
Паскальда мәліметтерді ұйымдастырудың жалпы схемасы 1-кестеде келтірілген:
1-
кесте
Ескерту.Паскальдың қарастырылып отырған Турбо-Паскаль 7.0 вер-сиясында
тұрақтылар мен айнымалылардың қосымша типтері бар (олардың кейбіреуі 2-
кестеде келтірілген). Олар жеке жағдайда есептеуді үлкен дәлдікпен
жүргізуге мүмкіндік береді. Мыс: double арқылы нақты 15-16 мәнді цифр(real
-дағы 11-12 цифр орнына) алуға болады. Алайда алғашқы кезде оларды өте
қажет болмаса, пайдалана бермеген жөн ( ол программа жұмысын баяулатады,
жадыдан артық орын алады т.с.с).
Турбо-Паскальдағы айнымалылардың қосымша типтері
2-кесте
айнымалы типі мәндер аралығы сипатталуы
ұзын бүтін -2147483648 longint
2147483647
нақты екі есе 5·10-324 - Double
дәлдікпен 1.7·10308
символдық 255 символға дейін String
Паскальда, Бейсиктегі сияқты өрнектердің үш типі бар: сандық(ол өзінше
бүтін, нақты болып бөлінеді), логикалық (§3-ті қараңыз) және символдық
(мұны тарау соңында қарастырамыз).
Сандық (не математикалық) өрнектерді жазу тура Бейсиктегідей. Мыс, мына
бөлшек: былай жазылады: (alfa*alfa+beta)(a*x*x+b*x+c).
Оның Бейсиктен бір айырмашылығы – дәрежелеу амалының жоқтығы. Паскальда
математикалық функцияларды жазудың Бейсиктен біршама өзгерісі бар. Ол 3-
кестеде келтірілген.
Паскальдың математикалық функциялары 3-кесте
математика- Паскаль Ескерту
лық жазбасы тіліндегі
жазылуы
sinx sin(x) аргумент радианмен
cosx cos(x) аргумент радианмен
arctgx arctan(x) тангенсі х-ке тең
бұрыш
lnx ln(x) натурал логарифм
ех exp(x) lnx-ке кері функция
х abs(x) х-санының абсолют
шамасы
sqrt(x) х санының квадрат
түбірі
х2 sqr(x) х санының квадраты
Кезкелген дәрежеге шығару үшін экспонента мен натурал логарифмді қолданады.
Себебі тең. Сонда Паскаль тілінде ab былай жазылады:
exp(b*ln(a)).
Паскальда бүтін сандармен(бүтін сандық айнымалылармен де) жұмыс істеуге
арналған бірнеше арнайы функциялар бар екенін ескеріңіз. Оларды 5 §-та
қарастырамыз.
1.1-мысал.
Өрнекті Паскаль ережесі бойынша жазыңыз:
Жауабы: (-b+sqrt(sqr(b)-4*a*c))(2*a) .
1.2-мысал. Өрнектің айнымалының берілген мәніндегі мәнін есептеңіз: x=1,
y=2 болғанда (sin(sqrt(x) – 1) + 2*abs(y))cos(2-y).
Жауабы: 4.
Бақылау сұрақтары
1.Паскальдың Бейсиктен негізгі айырмашылығын атаңыз.
2.Паскаль альфавитіне нелер енеді?
3.Сандарды жазу ережесі қандай?. Паскальда сандардың қандай типтері бар?
4.Паскальда айнымалылар қалай белгіленеді? Сіз айнымалылардың қандай
типтерін білесіз?
5.Паскальда дәрежеге шығару қалай орындалады?
Практикалық тапсырмалар
1. Формулаларды Паскаль ережесі бойынша жазыңыз:
a) (1+x)2; б) ; в) a + bx ; г) sin8°; д) cos2x3; e) tgx.
Шешуі: а) sqr(1+x); б) sqrt(1+sqr(x)); в) abs(a+b*x); г)
sin(8*3.1415180); д) sqr(cos(x*x*x)); е) sin(x)cos(x).
1.2. x0 үшін Паскаль ережесімен жазыңыз:
a) х -1; б) х 4; в) х -2; г) х 5; д) х 100; е) 2 1+х ; ж) х;
з) .
Шешуі: а) 1x; б) sqr(sqr(x)); в) 1sqr(x); г) sqr(sqr(x))*x; д)
exp(100*ln(x)); е) exp((1+x)*ln2); ж) x*sqrt(2); з) exp(13*(1+x)).
1.3. Паскаль ережесі бойынша жазыңыз:
а) б) в)
г) д) 6,673·10-8·
Шешуі:
а) exp(18*sqr(sqr(sqr(x)))+8*x);
б) (x*y*z+3.3*abs(x+sqrt(sqrt(y))))(1 E-7+sqrt(sin(24)cos(24)) );
в) (bet+sqr(sin(sqr(sqr(pi)))))(sqr(c os(gam))+abs(cos(gam)sin(gam)));
г) 1+x+sqr(x)2+sqr(x)*x6+sqr(sqr(x)) 24;
д) 6.673E-8*(m1*m2) sqr(r).
§2. Паскальдағы сызықтық программа
Паскальда да сызықтық программа жазу үшін үш: меншіктеу, енгізу және
шығару операторлары талап етіледі.
Меншіктеу операторының түрі: айнымалы : = өрнек
Мұнда, айнымалы – Паскальдың кезкелген айнымалысы, өрнек – айнымалы типіне
сәйкес келетін Паскаль өрнегі. Меншіктеу таңба-сы, Бейсиктегіден бөлек, ол
тек теңдік таңбасы емес, қос нүкте мен теңдік таңбасы екендігіне назар
аударыңыз.
Мыс, а:=0, x:=x+1; alfa:=sqr(x).
Бұл оператордың орындалу реті Бейсиктегі меншіктеу опера-торының
орындалуына ұқсас. Тек бір айырмашылығы, ол айныма-лылар мен өрнектердің
типтерінің сәйкес болуын қатаң қадағалау қажеттігі(мыс, бүтін санды
айнымалыға нақты типті өрнекті мен-шіктеуге болмайды).
Енгізу операторы былай жазылады: read (тізім)
мұндағы тізім - өзара үтірмен ажыратылған Паскаль айнымалы-ларының тізбесі.
Мыс, read(x); read(x1,x2,alfa) . read сөзі ағылшын тілінен оқу деп
аударылады.
1-ескерту. Енгізу операторының орындалуы кезінде (Бейсиктен өзгеше) 1-ден,
? белгісі түріндегі сұрау пайда болмайды және
2-ден, айнымалы мәндерін бір-бірінен бос орын арқылы ажыратып
(Бейсиктегідей үтір арқылы емес) енгізеді.
Шығару операторының түрі: write ( тізім)
Мұнда тізім-бір-бірінен үтір арқылы ажыратылған(тек үтір арқылы)
тұрақтылар, айнымалылар немесе өрнектер тізбесі. write ағылшын-ша жазу
дегенді білдіреді. Паскальда берілгендерді енгізу және шығару аяқталған соң
экранның келесі жолына автоматты түрде ауысу жүрмейтіндігін ескертеміз.
Ондай ауысуды (қажет кезде) қамтамасыз ету үшін readln және writeln(ln-
ағылшынның line-жол сөзінің қысқа түрі) операторларын қолданған жөн.
writeln бос опер-аторын қолдану (яғни тізімсіз) жай ғана экранның келесі
жолына ауысумен барабар.
Осы операторлар сызықтық программаны жазуға жеткілікті. Алайда
Паскальдағы программада операторлардан (орындалатын бөліктен) басқа тағы да
мынадай элементтер болады:
• программа тақырыбы: program аты; мұнда аты - латынның 6 әрпі мен
цифрлардан тұратын кезкелген тіркес;
• айнымалыларды сипаттау: var : тізім : типі; мұнда тізім- программада
қолданылатын айнымалылар тізбесі; ал типі- осы айнымалылар типінің
көрсетілуі. Біз негізінен, мына типтерді ғана қолданамыз: real(нақты),
integer (бүтін), char (символдық), string(жолдық), boolean(логикалық).
Осы тарауда негізінен нақты және бүтін типтерді қарастырамыз.
• begin қызметші сөзі(программаның орындалатын бөлігі осы сөзден кейін
жазылады);
• end.(нүктемен) қызметші сөзі.Паскальдағы программа осы сөзбен
аяқталады
2.1-мысал. Үшбұрыш a,b,c қабырғаларының ұзындығы бойынша берілген. Осы
үшбұрышты іштей және сырттай сызылған шеңбер-лердің радиустарын есептеу
программасын мына формулаларды пайдаланып, құрыңыз.
r1=(abc)4s іштей сызылған шеңбер радиусы,
r2=2s(a+b+c) сырттай сызылған шеңбер радиусы,
p=(a+b+c)2 жарты периметр,
s =үшбұрыш ауданы.
program mys2_1;
var a,b,c,p,s,r1,r2:real;
begin
write('a,b,c-ны енгіз:'); read(a,b,c);
p:=(a+b+c)2; s:=sqrt(p*(p-a)*(p-b)*(p-c));
r1:=2*s(a+b+c); r2:=a*b*c(4*s);
writeln; writeln('сырттай сызылған шеңбер радиусы=’,r2);
write('іштей сызылған шеңбер радиусы=’,r1)
end.
Осы программаны a,b,c-ға 3 4 5 мәндерін беріп, орындауға жібер-
генімізде мына нәтижені аламыз:
сырттай сызылған шеңбердің радиусы = 2.5
іштей сызылған шеңбердің радиусы = 1.
2-ескерту. Паскальдағы программа операторлары бірінен-бірі нүктелі үтір
арқылы ажыратылады және бір жолға бірнеше оператор жазуға болады.
3-ескерту. Ненің және қандай ретпен енгізудің(енгізу операторы
орындалғанда) анық болуы үшін, әрбір енгізу операторына тиісті
түсініктемемен шығару операторын сәйкестеуді ұсынады.
Бақылау сұрақтары
1. Паскальдағы меншіктеу операторының жазылу ерекшелігі неде?
2. Енгізу операторы қалай жазылады және ол қалай орындалады?
3. Шығару операторының жазылуы мен орындалу ережесі қандай?
4. Паскальда программа жазу қалай жүргізіледі?
Практикалық тапсырмалар
2.1. d айнымалысына :
а) x,y,z сандарының арифметикалық орта шамасын;
б) жазықтықтағы координаталары (х1,у1), (х2,у2) болатын нүкте-лердің
арақашықтығын меншіктеу операторларын жазыңыз.
2.2. х және у айнымалыларының мәндерінің орнын ауыстыратын меншіктеу
операторын жазыңыз.
а) қосымша айнымалыны пайдаланып;
б)* қосымша айнымалыны пайдаланбай.
2.3. x,y,z айнымалыларының мәндерін х айнымалысында у айны-малысының мәні,
у-те z айнымалысының мәні, ал z-те x айнымалы-сының бұрынғы мәні болатындай
етіп меншіктеу операторларын жазыңыз.
а) қосымша айнымалыны пайдаланып;
б)* қосымша айнымалыны пайдаланбай.
2.4. Берілген а үшін көбейтуден басқа амал қолданбай мыналарды алуға
болатын меншіктеу операторын жазыңыз:
а) а9-ды 4 амал арқылы; б) а10-ды 4 амал арқылы;
в) а13-ті 5 амал арқылы; г) а21-ді 6 амал арқылы;
д) а64-ті 6 амал арқылы; е) а3 және а10-ды 4 амал арқылы;
ж) а11 және а20-ны 5 амал арқылы; з) а5 және а9-ды 5 амал арқылы;
и) а5 және а13-ті 5 амал арқылы; к) а2,а5 және а17-ні 6 амал арқылы;
л) а4,а12 және а28-ді 6 амал арқылы.
2.5. Ұзындығы а, ені в-ға тең тіктөртбұрыш ауданын есептеңіз.
2.6. Тығыздығыкгм3 болатын Х литр сүттің массасын табыңыз.
2.7. Цилиндрдің көлемі – V, ал табан ауданы-S болсын. Цилиндрдің биіктігі
қандай?
2.8. Куб қырының ұзындығы-а. Кубтың көлемі-V және оның бүйір бетінің ауданы
S-ті табыңыз.
2.9. Мөлшері а·b·с болатын бөлмедегі ауаның 21%-ы – оттегі. Бөлмедегі
ауаның көлемі қанша?
2.10. Табандары а және b, үлкен табанындағы бұрышы Х-ке тең теңбүйірлі
трапецияның ауданын табыңыз.
2.11. А(х,у) нүктесін координат басымен қосатын кесінді мен ОХ осі
арасындағы бұрышты табыңыз(нүкте 1-ширекте жатыр).
2.12. Тастың h биіктіктен жер бетіне құлау уақытын анықтаңыз.
2.13. Үш кедергі r1, r2, r3 параллель жалғанған.Жалғаудың кедергі-сін
табыңыз.
2.14*. Төбелерінің координаттары бойынша берілген бесбұрыштың периметрі мен
ауданын табыңыз.
2.15*. Бүйірінен жатқан цилиндрлік цистернадағы сұйықтың биікті-гі-h.
Ұзындығы L-ге, табан радиусы r-ге тең цистернадағы сұйық көлемін(V)
табыңыз.
Есептердің шешуі.
§2. Паскальдағы сызықтық программа
2.1. d айнымалысына :
а) x,y,z сандарының арифметикалық орта шамасын;
б) жазықтықтағы координаталары (х1,у1), (х2,у2) болатын нүктелердің
арақашықтығын меншіктеу операторларын жазыңыз.
Шешуі: a) d:=(x+y+z)3; б) d:=sqrt(sqr(x2-x1)+sqr(y2-y1)).
2.2. х және у айнымалыларының мәндерінің орнын ауыстыратын меншіктеу
операторын жазыңыз.
а) қосымша айнымалыны пайдаланып;
б)* қосымша айнымалыны пайдаланбай.
Шешуі: a) a:=x; x:=y; y:=a; б) x:=x+y; y:=x-y; x:=x-y.
2.3. x,y,z айнымалыларының мәндерін х айнымалысында у айны-малысының мәні,
у-те z айнымалысының мәні, ал z-те x айнымалы-сының бұрынғы мәні болатындай
етіп меншіктеу операторларын жазыңыз.
а) қосымша айнымалыны пайдаланып;
б)* қосымша айнымалыны пайдаланбай.
Шешуі: a) a:=x; x:=y; y:=z; z:=a; б) x:=x+y; y:=x-y; x:=x-y; y:=y+z;
z:=y-z; y:=y-z.
2.4. Берілген а үшін көбейтуден басқа амал қолданбай мыналарды алуға
болатын меншіктеу операторын жазыңыз:
а) а9-ды 3 амал арқылы; б) а10-ды 3 амал арқылы;
в) а13-ті 4 амал арқылы; г) а21-ді 4 амал арқылы;
д) а64-ті 6 амал арқылы; е) а3 және а10-ды 4 амал арқылы;
ж) а11 және а20-ны 5 амал арқылы; з) а5 және а9-ды 4 амал арқылы;
и) а5 және а13-ті 4 амал арқылы; к) а2,а5 және а17-ні 3 амал арқылы;
л) а4,а12 және а28-ді 4 амал арқылы.
Шешуі: а) a2:= а*а; a4:= a2*a2; a9:=a4*a4*a;
б) a2:= а*а; a4:= a2*a2; a10:=a4*a4*a2;
в) a2:= а*а; a4:= a2*a2; a12:=a4*a4*a4; a13:= a12*a;
г) a2:= а*а; a4:= a2*a2; a10:=a4*a4*a2; a21:= a10* a10*a;
д) a2:= а*а; a4:= a2*a2; a8:= a4*a4; a16:= a8* a8; a32:= a16*
a16;
a64:= a32* a32;
е) a2:= а*а; a3:= a2*a; a5:= a3* a2; a10:= a5* a5;
ж) a2:= а*а; a3:= a2*a; a5:= a3* a2; a11:= a5* a3* a3;
a20:=a11*a5*a3*a;
з) a2:= а*а; a3:= a2*a; a5:= a3*a2; a9:= a5* a3*a;
и) a2:= а*а; a3:= a2*a; a5:= a3*a2; a13:= a5* a5* a3;
к) a2:= а*а; a5:= a2*a2*a; a17:= a5* a5* a5* a2;
л) a2:= а*а; a4:= a2*a2; a12:=a4*a4*a4; a28:= a12* a12* a4.
2.5. Ұзындығы а, ені в-ға тең тіктөртбұрыш ауданын есептеңіз.
program e2_5; {тіктөртбұрыш ауданын есептеу}
var a,b,s: real;
begin
writeln; write(‘ұзындығы-a мен ені-b-ға мән енгіз:’); read(a,b);
S:=a*b;
writeln; write(‘тіктөртбұрыш ауданы=’,s)
end.
Мыс: а=3м, b=4м ,болғанда s=12м2.
2.6. Тығыздығы кгм3 болатын Х литр сүттің массасын табыңыз.
program e2_6; {сүттің массасын есептеу}
var x, ,m: real;
begin
writeln; write(‘x(литр) пен (тығыздық)-ға мән енгіз:’);
read(x, );
m:=x100*;
writeln; write(‘сүттің массасы=’,m)
end.
Мыс: х=7л, =1030 кгм3 болғанда m=7,21
кг.
2.7. Цилиндрдің көлемі – V, ал табан ауданы-S болсын. Цилиндрдің биіктігі
қандай?
program e2_7; {цилиндрдің биіктігін табу}
var v,s,h: real;
begin
writeln; write(‘v мен s-ке мән енгіз:’); read(v,s);
h:=vs;
writeln; write(‘цилиндр биіктігі =’,h)
end.
Мыс: v=10м3 , s=5м2 болғанда h=2м.
2.8. Куб қырының ұзындығы-а. Кубтың көлемі-V мен оның бүйір бетінің ауданы
S-ті табыңыз.
program e2_8; {кубтың көлемі мен бүйір бетінің ауданын табу}
var a,v,s: real;
begin
writeln; write(‘a-ға мән енгіз:’); read(a);
v:=a*a*a;
s:=4*a*a;
writeln;
write(‘куб көлемі=’,v);
write(‘куб бүйір бетінің ауданы=’,s)
end.
Мыс: а=5 болғанда V=125, S=100.
2.9. Мөлшері а·b·с болатын бөлмедегі ауаның 21%-ы – оттегі. Бөлмедегі
ауаның көлемі қанша?
program e2_9; {Бөлмедегі ауаның көлемін табу}
var a,b,c,v: real;
begin
writeln; write(‘Бөлменің ұзындығы-а, ені-b, биіктігі-с-ға мән
енгіз:’); read(a,b,c);
v:=0.21*a*b*c;
writeln; write(‘бөлмедегі ауа көлемі=’,v)
end.
Мыс: а=5, b=4, c=3 болғанда V=12,6.
2.10. Табандары а және b, үлкен табанындағы бұрышы Х-ке тең теңбүйірлі
трапецияның ауданын табыңыз.
program e2_10; { трапецияның ауданын табу}
var a,b,x,h,s: real;
begin
writeln; write(‘a, b, x-ке мән енгіз:’); read(a,b,x);
x:=x*3.1415180; {градусты радианға айналдыру}
h:=sin(x)cos(x)*(a-b)2;
s:=(a+b)2*h;
writeln; write(‘трапеция ауданы=’s,)
end.
Мыс: a=6, b=5, x=45° болғанда S=2,75.
2.11. А(х,у) нүктесін координат басымен қосатын кесінді мен ОХ осі
арасындағы бұрышты табыңыз(нүкте 1-ширекте жатыр).
program e2_11;{(x,y) векторы мен ОХ осі арасындағы бұрышты табу}
var х,у,а: real;
begin
writeln; write(‘х және у-ке мән енгіз:’); read(x,y);
a:=arctan(yx);
writeln; write(‘бұрыш=’a,)
end.
Мыс: x=3, y=4 болғанда а=53,13.
2.12. Тастың h биіктіктен жер бетіне құлау уақытын анықтаңыз.
program e2_12;{тастың құлау уақытын есептеу }
var g,t,h: real;
begin
writeln; write(‘h-қа мән енгіз:’); read(h);
g:=9.81; t:=sqrt(2*hg);
writeln; write(‘құлау уақыты=’t,)
end.
Мыс: h=10м болғанда t=1,4278 c.
2.13. Үш кедергі r1, r2, r3 параллель жалғанған.Жалғаудың кедергі-сін
табыңыз.
program e2_13; {Жалғаудың кедергісін есептеу}
var r1,r2,r3,r: real;
begin
writeln; write(‘кедергілер: r1,r2,r3-ке мән енгіз:’); read(r1,r2,r3);
r:=r1*r2*r3(r1*r2+r1*r3+r2*r3);
writeln; write(‘параллель жалғау кедергісі:r =’,r)
end.
Мыс: r1=10, r2=15 , r3=20 болғанда r
=4,62.
2.14*. Төбелерінің координаттары бойынша берілген бесбұрыштың периметрі мен
ауданын табыңыз.
program e2_14;{Бесбұрыштың периметрі мен ауданын табу}
var x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,a12,a 23,a34,a45,a51,a13,a14,p,p1,p2,p3,
s1,s2,s3,s: real;
begin
writeln; write(‘x1,y1-ге мән енгіз:’); read(x1,y1);
writeln; write(‘x2,y2-ге мән енгіз:’); read(x2,y2);
writeln; write(‘x3,y3-ке мән енгіз:’); read(x3,y3);
writeln; write(‘x4,y4-ке мән енгіз:’); read(x4,y4);
writeln; write(‘x5,y5-ке мән енгіз:’); read(x5,y5);
a12:=sqrt(sqr(x2-x1)+sqr(y2-y1));
a23:=sqrt(sqr(x3-x2)+sqr(y3-y2));
a34:=sqrt(sqr(x4-x3)+sqr(y4-y3));
a45:=sqrt(sqr(x5-x4)+sqr(y5-y4));
a51:=sqrt(sqr(x5-x1)+sqr(y5-y1));
a13:=sqrt(sqr(x3-x1)+sqr(y3-y1));
a14:=sqrt(sqr(x4-x1)+sqr(y4-y1));
p:=a12+a23+a34+a45+a51;
p1:=(a12+a23+a13)2;
s1:=sqrt(p1*(p1-a12)*(p1-a23)*(p1-a 13));
p2:=(a13+a34+a14)2;
s2:=sqrt(p2*(p2-a13)*(p2-a34)*(p2-a 14));
p3:=(a14+a45+a51)2;
s3:=sqrt(p3*(p3-a14)*(p3-a45)*(p3-a 51));
s:=s1+s2+s3;
writeln;
write(‘бірінші үшбұрыш ауданы=’,s1);
write(‘екінші үшбұрыш ауданы=’,s2);
write(‘үшінші үшбұрыш ауданы=’,s3);
write(‘бесбұрыш периметрі=’,p);
write(‘бесбұрыш ауданы=’,s)
end.
x1=0,y1=0,x2=1,y2=2,x3=3,y3=3,x4=4, y4=3,x5=5,y5=1 болғанда
p=12,808, s=9,365.
2.15*. Бүйірінен жатқан цилиндрлік цистернадағы сұйықтың биікті-гі-h.
Ұзындығы L-ге, табан радиусы r-ге тең цистернадағы сұйық көлемін(V)
табыңыз.
Есептің шешуі:
Цистернадағы сұйықтың көлемін табу үшін дөңгелек сегментінің ауданын тауып,
оны цистерна ұзындығына көбейту қажет. Ал дөңгелек сегмент ауданын екі
тәсілмен табуға болады.
1) сектор ауданын қарастырып, одан үшбұрыш ауданын алып тастау(hR , болса
үшбұрыш ауданын қосу) арқылы. Бұл жағдайда әлі өтілмеген шартты операторды
қолдану қажет.
2) Мына түрдегі формулаларды қолдану арқылы: s=h(6a-8b), мұнда a=2,
b=, a-сегменттің керуші хордасы,
h-сегмент биіктігі, b-cәйкес хордалар.
program e2_15;{Бүйірінен жатқан цистернадағы сұйық көлемі}
var a,b,h,r,L,s,v: real;
begin
writeln; write(‘r,h,L-ге мән енгіз:’); read(r,h,L);
a:=2*sqrt(2*h*r-h*h); b:=sqrt(h*h+sqr(a2));
s:=h*(6*a-8*b); v:=s*L;
writeln; write(‘цистернадағы сұйық көлемі:v =’,v)
end. .
Мыс: h=6, L=10, r=4 болғанда, v=388
§3. Тармақталу программасы
Паскальда Бейсиктегі сияқты мұндай программаны ұйымдастыру үшін мына
түрдегі шартты оператор қолданылады:
if шарт then 1-оператор else 2-оператор
мұнда шарт – логикалық өрнек, ол Бейсиктегіше жазылады;
1-оператор – Паскальдың шарттыдан басқа кезкелген операторы;
2-оператор – Паскальдың шартты операторы да кіретін кезкелген операторы; ол
шарт жалған болғанда орындалады. Мыс, екі санның үлкенін табуға арналған
шартты оператор былай жазылады:
if ab then max:=a else max:=b;
3.1-мысал. Берілген х-тің мәні бойынша мына у функциясының мәнін есептеу
программасын құру:
program mys3_1;
var x,y:real;
begin write('х-ті енгіз:'); read(x);
if x0 then y:=sin(x) else y:=cos(x);
writeln; write('Y=',Y)
end.
Мыс, х=0 болғанда у=0 (sin0=0), ал х=3,14159265(радиан) болған-да y=-
9,99999E-01(яғни, шамамен -1-ге тең, себебі cos= -1) болады. Бұрын
атап өтілгендей, шарт жалған болған жағдайда тағы да бір шартты оператор
қолданылады. Бұл шарттардың біршама күрделі тізбегін бір шартты оператор
түрінде жазуға мүмкіндік береді.
3.2-мысал. Берілген х-тің мәніне сәйкес у функциясының мәнін есептеу
программасын құру:
program mys3_2;
var x,y:real;
begin
write('х-ті енгіз:'); read(x);
if x2 then y:=x else if x=3 then y:=2 else y:=5-x;
writeln; write('Y=',Y)
end.
Шартты операторда then не else-ден соң бірнеше операторларды жазуға болады.
Мұндай кезде оларды құрама операторға біріктіру қажет. Құрама оператор
түрі:
begin 1-оператор; 2-оператор; ...;n-оператор; end;
Мұнда 1-оператор; 2-оператор; ... – Паскальдың құраманы қоса алғандағы
кезкелген операторы.
3.3-мысал. Берілген Х,У мәндерінің х-қа үлкенін, ал у-ке кіші мәнін бөліп
беретіндей программа құру.
program mys3_3;
var x,y,z:real;
begin
write('х,y-ті енгіз:'); read(x,y);
if xy then begin z:=x; x:=y; y:=z end;
writeln; write(x,y)
end.
Жоғарыдағы программада шартты оператордың қысқаша түрі:
(if шарт then оператор ) қолданылғандығына назар аударыңыз. Бейсиктегі
сияқты шарт біршама күрделі де бола алады. Мұнда шарттың конъюнкциясын (and
көмегімен байланысқан шарттар), шарттың дизъюнкциясын(or) және шарттың
инверсиясын(not) пайдалануға рұхсат етіледі. Паскальда әрбір байланысқан
шарттар жақшаға алынып жазылады. and, or, not амалдары , , = амалдар-ына
қарағанда орындалу басымдығы үлкендеу. Сол себепті олар жақшаға алынбаса,
амалдардың орындалу реті бұзылады.
3.4-мысал. (х,у) координатасымен берілген нүкте сыртқы радиусы r1, ішкі
радиусы – r2 болатын сақинаға тиісті ме, жоқ па соны анықтау.
program mys3_4;
var x,y,r1,r2:real;
begin
writeln('х,y,r1,r2-ні енгіз:'); read(x,y,r1,r2);
if (sqrt(sqr(x)+sqr(y))r1) and (sqrt(sqr(x)+sqr(y))r2)
then write('сақинаға тиісті')
else write('сақинаға тиісті емес');
end.
Программаны тексеру үшін: x =1, y =1, r1=1, r2=1 мәндерін берсек, онда
сақинаға тиісті деген жазу, ал x =2, y =2, r1=2, r2=1 болғанда сақинаға
тиісті емес деген жазуы алынады.
Бақылау сұрақтары
1. Шартты оператордың толық және қысқаша түрін жазыңыз. Шарттың тура немесе
жалған болған кезінде қандай операторлар қолданылады?
2.Құрама оператор деген не?
3.Паскальда күрделі шарттар қалай жазылады және олардың ерекшелігі неде?
Практикалық тапсырмалар
3.1.Бір шартты оператор түрінде жазыңыз:
а) y=б) d=max(a,b,c); в) z =
г) к айнымалысына координатасы (х,у) болатын нүкте жатқан ширектің
нөмірін меншіктеңіз;
д) n айнымалысына төрт а1,а2,а3,а4 сандарының ішінен үшеуінен өзгеше,
өзара тең болатын реттік нөмірді меншіктеңіз.
3.2. а,b,с сандары берілген. abc теңсіздігінің орындалуын тексе-ріп, ол
туралы хабарлама шығарыңыз.
3.3. Нақты үш а,b,с сандары берілген. Осылардың ішінен (1,3) инт-ервалында
жататынын таңдаңыз.
3.4. х,у (х≠у) сандары берілген. Олардың кішісін қосындының орта шамасымен,
ал үлкенін – екі еселенген көбейтіндімен алмастыры-ңыз.
3.5. Берілген a,b,c сандарының ең үлкенін табыңыз.
3.6. Қабырғаларының ұзындығы x,y,z болатын үшбұрыш бола ма, соны анықтаңыз.
3.7. Центрі (х0,у0) нүктесі болатын шеңберде бастапқы координата-сы
(xn,yn), соңғы координатасы (xk,yk) болатын доға берілген. Доғаның бастапқы
және соңғы нүктелері жататын шеңбер ширегі-нің нөмірін анықтаңыз.
3.8. (х,у) нүктесінің координатасы берілген. Осы нүкте мына сурет-те
көрсетілген аумаққа тиісті ме, соны анықтаңыз:
а) б)
в)
г) д)
е)
3-сурет
3.9. Нақты a,b,c,x,y оң сандары берілген. Қырлары a,b,c-ға тең кірпіш
қабырғалары х, у тіктөртбұрышты қуысқа сия ма, соны анықтаңыз. Кірпішті тек
оның әрбір қыры қуыс қабырғаларына параллель немесе перпендикуляр болғанда
ғана тығуға рұхсат етіледі.
3.10*. Нақты х1,х2,х3,у1,у2,у3 сандары берілген.Координат басы төбесі
(х1,у1),(х2,у2),(х3,у3) болатын үшбұрышқа тиісті ме?.
3.11*. Өзінің төбесінің координаталарымен берілген бесбұрыштағы тік бұрыш
санын есептеңіз (егер ол бар болса).
Есептердің шешуі.
§3. Тармақталу программасы.
3.1.Бір шартты оператор түрінде жазыңыз:
а)y = б) d=max(a,b,c); в) z =
Шешуі: a) if (x0) and (x2) then y:=sqr(cos(x)) else y:=1-sqr(sin(x));
б) if (ab) and (bc) then d:=a else if (ba) and (bc) then d:=b else
d:=c;
в) if (x0) and (xy) then z:=x else
if (x0) and (x=y) then z:=y else
if (x=0) and (xy) then z:=x else
if (x=0) and (x=y) then z:=y;
г) к айнымалысына координатасы (х,у) болатын нүкте жатқан ширектің
нөмірін меншіктеңіз;
Шешуі: if (x0) and (y0) then k:=1 else if (x0) and (y0) then k:=2 else
if (x0) and (y0) then k:=3 else k:=4;
д) n айнымалысына төрт а1,а2,а3,а4 сандарының ішінен үшеуінен өзгеше,
өзара тең болатын реттік нөмірді меншіктеңіз.
Шешуі: if (a1a2) and (a1a3) then n:=1 else
if (a2a1) and (a2a3) then n:=2 else
if (a3a1) and (a3a2) then n:=3 else n:=4;
3.2. а,b,с сандары берілген. abc теңсіздігінің орындалуын тек-серіп, ол
туралы хабарлама шығарыңыз.
program e3_2;
var a,b,c: real;
begin writeln; write(‘a,b,c сандарына мән енгізіңіз:’); read(a,b,c);
if (ab) and (bc) then writeln(‘теңсіздік орындалады’)
else writeln(‘теңсіздік орындалмайды’);
end.
3.3. Нақты үш а,b,с сандары берілген. Осылардың ішінен (1,3) инт-ервалында
жататынын таңдаңыз.
program e3_3;
var a,b,c: real;
begin writeln; write(‘a,b,c сандарына мән енгізіңіз:’); read(a,b,c);
if (a1) and (a3) then writeln(‘а жатады’);
if (b1) and (b3) then writeln(‘b жатады’);
if (c1) and (c3) then writeln(‘c жатады’)
else writeln(‘ешқайсысы жатпайды’);
end.
3.4. х,у (х≠у) сандары берілген. Олардың кішісін қосындының орта
шамасымен, ал үлкенін – екі еселенген көбейтіндімен алмастыры-ңыз.
program e3_4;
var x,y: real;
begin writeln; write(‘x,y сандарына мән енгізіңіз:’); read(x,y);
if (xy) then begin x:=(x+y)2; y:=2*y end
else begin y:=(x+y)2; x:=2*x end;
writeln;write(‘х,у-тің жаңа мәндері:’,x,y)
end.
3.5. Берілген a,b,c сандарының ең үлкенін табыңыз.
program e3_5;
var a,b,c,d: real;
begin writeln; write(‘a,b,c –ға мән енгізіңіз:’); read(a,b,c);
if (ab) and (ac) then d:=a else
if (ba) and (bc) then d:=b else d:=c;
writeln; write(‘сандардың ең үлкені:’,d)
end.
3.6. Қабырғаларының ұзындығы x,y,z болатын үшбұрыш бола ма, соны анықтаңыз.
Үшбұрыштың үлкен қабырғасы қалған екі қабырғасының қосын-дысынан кіші болуы
керек.
program e3_6;
var x,y,z: real;
begin writeln; write(‘x,y,z-ке мән енгізіңіз:’); read(x,y,z);
if (xy+z) and (yx+z) and (zx+y) then writeln(‘үшбұрыш
болады’) else writeln(‘үшбұрыш болмайды’); end.
3.7. Центрі (х0,у0) нүктесі болатын шеңберде бастапқы координата-сы
(xn,yn), соңғы координатасы (xk,yk) болатын доға берілген. Доғаның бастапқы
және соңғы нүктелері жататын шеңбер ширегі-нің нөмірін анықтаңыз.
program e3_7;
var x0,y0,xn,yn,xk,yk: real;
begin writeln; write(‘x0,y0,xn,yn,xk,yk –ға мән енгізіңіз:’);
read(x0,y0,xn,yn,xk,yk);
if (xnx0) and (yny0) then
write(‘бастапқы нүкте 1-ширекте’);
if (xnx0) and (yny0) then
write(‘бастапқы нүкте 4-ширекте’);
if (xnx0) and (yny0) then
write(‘бастапқы нүкте 2-ширекте’);
if (xnx0) and (yny0) then
write(‘бастапқы нүкте 3-ширекте’); writeln;
if (xkx0) and (yky0) then write(‘соңғы нүкте 1-ширекте’);
if (xkx0) and (yky0) then write(‘соңғы нүкте 4-ширекте’);
if (xkx0) and (yky0) then write(‘соңғы нүкте 2-ширекте’);
if (xkx0) and (yky0) then write(‘соңғы нүкте 3-ширекте’);
end.
3.8. (х,у) нүктесінің координатасы берілген. Осы нүкте мына сурет-те
көрсетілген аумаққа тиісті ме, соны анықтаңыз:
а) б)
в)
г) д)
е)
Мұнда есепті шешу программасы алдыңғы есептегідей, сондықтан шартты
оператордың жазылуын ғана келтіреміз.
а) if x0 then write(‘тиісті’) else write(‘тиісті емес’);
б) if y0 then write(‘тиісті’) else write(‘тиісті емес’);
в) if yx then write(‘тиісті’) else write(‘тиісті емес’);
г) if x-1 and y-1 then write(‘тиісті’) else write(‘тиісті емес’);
д) if y1-x and yx+1 and yx-1 and y-x-1 then
write(‘тиісті’) else write(‘тиісті емес’);
е) if (sqr(x)+sqr(y)1) then write(‘тиісті’) else write(‘тиісті емес’);
3.9. Нақты a,b,c,x,y оң сандары берілген.Қырлары a,b,c-ға тең кірпіш
қабырғалары х, у тіктөртбұрышты қуысқа сия ма, соны анықтаңыз. Кірпішті тек
оның әрбір қыры қуыс қабырғаларына параллель немесе перпендикуляр болғанда
ғана тығуға рұхсат етіледі.
Мұнда есепті шешу программасы алдыңғы есептегідей, сондықтан шартты
оператордың жазылуын ғана келтіреміз:
if ((ax) and (by)) or ((ay) and (bx)) or
((bx) and (cy)) or ((by) and (cx)) or
((cx) and (ay)) or ((cy) and (ax))
then write(‘қуысқа сияды’) else write(‘қуысқа симайды’);
3.10*. Нақты х1,х2,х3,у1,у2,у3 сандары берілген. Координат басы төбесі
(х1,у1),(х2,у2),(х3,у3) болатын үшбұрышқа тиісті ме?.
Есепті шешу программасы:
Бұл есепті шешу үшін екі нүкте арқылы өтетін түзу теңдеуі қалай
жазылатындығын еске түсіру керек. Содан соң үшбұрыш төбесін беретін екі
нүкте арқылы өтетін түзу теңдеуін құрады. Координат басы осы үшбұрышта
жатуы үшін осы түзулердің бірінің мәні(х=0 нүктесіндегі) басқа екі
түзудегіден басқа таңбалы болуы керек. Яғни бір түзу координат басының
үстіңгі жағында(басқасы астыңғы жағында) немесе керісінше бір түзу
координат басының астыңғы (басқасы үстіңгі) жағында жатады деуге болады.
program e3_10;
var x1,y1,x2,y2,x3,y3,y12,y23,y13: real;
begin writeln; write(‘x1,y1,x2,y2,x3,y3 –ке мән енгізіңіз:’);
read(x1,y1,x2,y2,x3,y3);
if x2x1 then y12:=y1-x1*(y2-y1)(x2-x1) else y12:=0;
if x2x3 then y23:=y2-x2*(y3-y2)(x3-x2) else y23:=0;
if x3x1 then y13:=y1-x1*(y3-y1)(x3-x1) else y13:=0;
if (y12*y230) or (y23*y130) or (y12*y130) then
write(‘тиісті’) else write(‘тиісті емес’);
end.
Программада нүктелердің тең болып қалу мүмкіндігі ескеріліп, сонан да түзу
OY осіне параллель болуына орай(яғни у-тің мәні кезкелген болуы мүмкін
болатындықтан, біз оны нольге тең дейміз) қосымша шарт(көрші нүктелердің х
мәнінің теңсіздігі) енгізілді.
3.11*. Өзінің төбесінің координаталарымен берілген бесбұрыштағы тік бұрыш
санын есептеңіз (егер ол бар болса).
Шешуі: Есепті шешу үшін векторлар арасындағы бұрышты қалай есептеуді еске
түсіру керек. Әуелі әрбір екі нүкте арқылы өтетін вектор координаттарын
табады. Содан соң екі вектор арасындағы бұрышты есептеп, оның тік бұрыш
екендігін тексереді. Сонымен а(ха,уа) және b(xb,yb) векторлары берілсе,
онда оның арасындағы бұрыштың косинусы мынаған тең: cos=, егер
бұрыштың косинусы нольге тең болса, бұрыш тік болғаны.
Біздің жағдайда мына векторлар берілген(жақша ішіндегі коодинаттары):
a12(x2-x1,y2-y1), a23(x3-x2,y3-y2), a34(x4-x3, y4-y3), a45(x5-x4, y5-y4),
a51(x1-x5, y1-y5) . Мына суретті пайдаланып, бұрыш косинустарын былай
белгілейік: a123(2 нүктесінде), а234(3 нүктесін-де), а345(4 нүктесінде),
а451(5 нүктесінде), а512(1 нүктесінде).
program e3_11;
var x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x21,y 21,x32,y32,x43,y43,x54,y54,x15,
y15,a123,a234,a345,a451,a512: real; s: integer;
begin
writeln; write(‘x1,y1,x2,y2,x3,y3,x4,y4,x5,y 5 мәндерін енгізіңіз:’);
read(x1,y1,x2,y2,x3,y3,x4,y4,x5,y5) ;
x21:=x2-x1;y21:=y2-y1; x32:=x3-x2;y32:=y3-y2; x43:=x4-x3;
y43:=y4-y3; x54:=x5-x4;y54:=y5-y4; x15:=x1-x5;y15:=y1-y5;
a123:=(x21*x32+y21*y32)((sqrt(x21* x21+y21*y21))*(sqrt(x32*x32+
y32*y32)));
a234:=(x43*x32+y43*y32)((sqrt(x43* x43+y43*y43))*(sqrt(x32*x32+
y32*y32)));
a345:=(x43*x54+y43*y54)((sqrt(x43* x43+y43*y43))*(sqrt(x54*x54+
y54*y54)));
a451:=(x15*x54+y15*y54)((sqrt(x15* x15+y15*y15))*(sqrt(x54*x54+
y54*y54)));
a512:=(x15*x21+y15*y21)((sqrt(x15* x15+y15*y15))*(sqrt(x21*x21+
y21*y21)));
if a123=0 then begin writeln('тік бұрыш =',1,2,3); s:=s+1 end;
if a234=0 then begin writeln(' тік бұрыш =',2,3,4); s:=s+1 end;
if a345=0 then begin writeln(' тік бұрыш =',3,4,5); s:=s+1 end;
if a451=0 then begin writeln(' тік бұрыш =',4,5,1); s:=s+1 end;
if a512=0 then begin writeln(' тік бұрыш =',5,1,2); s:=s+1 end;
writeln('Барлық тік бұрыш саны=', s);
end.
Егер нүктелер координаттары: 1-нүкте(0;0), 2-(0;1), 3-(0.5;2), 4-(1;1), 5-
(1;0) болса, онда тік бұрыштар: 451 және 512 болады.
§4. Циклдік программа (Әзір циклы)
Паскальда әзір циклын ұйымдастыру үшін мына түрдегі оператор қолданылады:
while шарт do оператор
мұнда шарт – Паскальдың кезкелген шарты; оператор–Паскальдың кезкелген
операторы(оның ішінде құрама да). Оператор былай жұмыс істейді: шарт
тексеріледі, егер ол тура болса, онда оператор орындалады, сосын тағы да
шарт тексеріледі және т.с.с. Шарт жалған болған кезде циклдің орындалуы
тоқтайды. Цикл атауының өзі мынаны көрсетеді: әзір шарт орындалса, цикл
орындалады.
Шарттың берілуі бастан жалған болса, онда цикл бірде-бір рет
орындалмайтынын ескертеміз. Ал шарт тұрақты тура болған кезде цикл үздіксіз
орындала беруі мүмкін(мұны цикл тұйықталып қалды дейді). Тұйық циклден шығу
үшін Ctrl + C немесе Ctrl + Break(екі рет) пернелерін қоса басып, сосын Esc
пернесін басу керек.
4.1-мысал. Берілген Е дәлдікпен қосындысын есептеу.
program mys4_1;
var e,s,k:real; i:integer;
begin write('Е дәлдігін енгіз:'); read(е);
k:=1;s:=0;i:=1;
while 1i =e do
begin s:=s+ki; i:=i+1; k:=k*(-1) end;
writeln; write('s=',s)
end.
Бұл программада бұрыннан белгілі қосынды табу алгоритмі қолданылған. Оның
қызметі мынадай: айнымалы енгізіледі(ол мұн-дағы s айнымалысы), оған нөлдік
мән беріледі, содан соң онда қосынды жинақталады. Келесі қосылғыш-натурал
қатардың келесі санына кері сан. Алайда мұнда жұп қосылғыштар(нөмір
бойынша) “-“ таңбасымен, ал тақ қосылғыштар “+” таңбасымен алынады. Осы
таңбаларды есепке алу үшін қосымша К айнымалысы енгізіліп, ол біртіндеп
бірде +1, бірде -1 мәнін қабылдайды. i айнымалысы бір-тіндеп кезекті
натурал сандарды(2,3,4 және т.б) беріп тұрады. Есептеуге қолайлы болу үшін
ол бүтін(integer) ретінде сипатталған. Программа бойынша Е = 0,1 болғанда
нәтиже 0,6456349 болады, ал мұндай қосындының(шексіз қосындының нәтижесі -
соңғы қосын-ды болып табылады) дәл мәні – ln(2) = 0.6931... .
Безендіру бойынша ескерту. Паскальда программаны көрнекі ету үшін, оны жол
басынан саты түрінде кейін шегеріп жазады. Кейде цикл құрылымын(құрама
операторды) қосымша кейін шегеріп жазу арқылы циклдің басталған және
аяқталған жерін көрнекі түрде көруге мүмкін болады. Үлкен программа үшін
бұл өте қолайлы.
4.2-мысал. N берілген a1,a2,...an сандарының ішінен ең үлкенін табу.
program mys4_2;
var a,x:real; i,n:integer;
begin write('n,a сандарын енгіз:'); read(n,a);
x:=a; i:=1;
while in do
begin
i:=i+1; writeln(i, ‘-санды енгіз’);
readln(a); if ax then x:=a;
end;
writeln(‘max a=’,x)
end.
Құрама операторда кезкелген оператор болуы мүмкін болғандықтан (оның ішінде
тағы бір циклдік оператор да), мұндайда қабаттасқан циклді ұйымдастыруға
болады.
4.3-мысал. Көбейту кестесін басып шығару.
program mys4_3;
var i,j,k:integer;
begin i:=1;
while i=9 do
begin
j:=1;
while j=9 do
begin
k:=i*j; write(i, ‘*’,j,’=’,k,’’);
j:=j+1;
end; writeln; i:=i+1;
end
end.
Бақылау сұрақтары
1. Паскальда әзір циклы қалай ұйымдастырылады?
2. Цикл ішінде тармақталу қолданыла ма? Тағы бір цикл ше?
3. Тұйықталған цикл жұмысын қалай тоқтатады?.
Практикалық тапсырмалар
4.1. Берілген х үшін х-х22+x33-x44+... түрдегі қосындыны Е дәлдікпен
есептеңіз (кезекті қосылғыш модулы Е-ден аз болғанда есептеуді тоқтату
керек). Нәтижені у=ln(1+x) мәнімен салыстыр-ыңыз.
4.2. 1,1+12,1+12+13,... сандарының ішінен берілген А санынан үлкен болатын
бірінші санды табыңыз.
4.3. Берілген х үшін sinx, sin(sinx), sin(sin(sinx)),...тізбегінен модулы
0,01-ден аз болатын бірінші санды табыңыз.
4.4. аn+1=an+2an түріндегі тізбек үшін аn-an -10.1 шарты орындала-
тындай ең кіші n нөмірін табыңыз, мұнда а1=1.
4.5. 1+11!+12!+13!+... қосындысын берілген Е дәлдікпен есеп-теңіз.
Нәтижесін Е=2.718281828... мәнімен салыстырыңыз. n!мәнін есептеу үшін n!=(n-
1)•n рекурренттік формуласын пайдаланыңыз.
4.6. Берілген х үшін берілген Е дәлдікпен мына түрдегі қосындыны есептеңіз:
x-x33!+x55!-x77!+... .Нәтижесін y=sinx мәнімен салыс-тырыңыз.
4.7. Берілген х үшін берілген Е дәлдікпен мына түрдегі қосындыны есептеңіз:
1-x22!+x44!-x66!+... .Нәтижесін y=cosx мәнімен салыс-тырыңыз.
4.8*. Төмендегі заңдылықпен жасалатын х1, х2, ... шексіз тізбегін
қарастырайық: x1=(u+n-1)2, ...,xi=((n-1) •xi -1+uxn-1i -1)n, i=2,3,...
мұнда u – теріс емес нақты сан, n-натурал сан. Осы тізбек u квадрат
түбірінің қажет дәлдікпен жуықтауын алуға мүмкіндік береді. Берілген u үшін
көрсетілген Е дәлдікпен квадрат түбір мәнін есептеңіз.
4.9*. Спортшы алғашқы күні 10 км жүгірді. Ол әрбір келесі күні күндік
нормасын өткен күнгі норманың 10%-на арттырып отырды. Спортшының нешінші
күні:
а) 20 км-ден аса жүгіретінін;
b) 100 км-ден аса жүгіретінін (барлық жолды қоса алғанда)
анықтаңыз.
Есептердің шешуі.
§4. Циклдік программа (Әзір циклы)
4.1. Берілген х үшін х-х22+x33-x44+... түрдегі қосындыны Е дәл-дікпен
есептеңіз (кезекті қосылғыш модулы Е-ден аз болғанда есептеуді тоқтату
керек). Нәтижені у=ln(1+x) мәнімен салыстыр-ыңыз. Есепті шешу
программасы:
program e4_1;
var x,y,e,s: real; I,k: longint;
begin
writeln; write(‘х пен Е дәлдігіне мән енгізіңіз:’); read(x,e);
y:=x; s:=0; i:=1; k:=1;
while abs(yi)e do
begin
s:=s+y*kI; y:=y*x; k:=k*(-1); i:=i+1;
end;
write(‘қосынды =’,s);
writeln; write(’ln(1+x) =’,ln(1+x));
end.
4.2. 1,1+12,1+12+13,... сандарының ішінен берілген А санынан үлкен болатын
бірінші санды табыңыз.
program e4_2;
var a,y: real; i: integer;
begin
writeln; write(‘a-ға мән енгізіңіз:’); read(a);
y:=0; i:=1;
while y=a do
begin
y:=y+1i; i:=i+1;
end;
write(‘i =’,i,’болғандағы A-дан үлкен бірінші сан’,y);
end.
4.3. Берілген х үшін sinx, sin(sinx), sin(sin(sinx)),...тізбегінен модулы
0,01-ден аз болатын бірінші санды табыңыз.
program e4_3;
var x,y: real;
begin
writeln; write(‘x-қа мән енгізіңіз:’); read(x);
y:=sin(x);
while abs(y)=0.01 do
begin
y:=sin(y);
end;
write(‘модулы бойынша 0.01-ден кіші бірінші сан =’,y);
end.
4.4. аn+1=an+2an түріндегі тізбек үшін аn-an -10.1 шарты орындала-
тындай ең кіші n нөмірін табыңыз, мұнда а1=1.
program e4_4;
var a1,a2: real; i:integer;
begin
writeln; a1:=1;a2:=1;i:=2;
while abs(a2-a1)=0.1 do
begin
a1:=a2; a2:=(a2+2a1)2; i:=i+1
end;
write(‘шарт орындалатын ең кіші нөмір-’i,)
end.
4.5. 1+11!+12!+13!+... қосындысын берілген Е дәлдікпен есепте-ңіз.
Нәтижесін Е=2.718281828... мәнімен салыстырыңыз. n! мәнін есептеу үшін n!=(n-
1)•n рекурренттік формуласын пайдаланыңыз.
program e4_5;
var s,p,e: real; i:integer;
begin
writeln; write(‘Е дәлдігін енгізіңіз:’);read(e);
s:=0; i:=0; p:=1;
while 1p=e do
begin
s:=s+1p; i:=i+1; p:=p*I
end;
write(e,‘дәлдікпен берілген қосынды =’,s); writeln;
write(‘Нәтижесін ЕХР-мен салыстырғанда-‘,exp(1))
end.
4.6. Берілген х үшін берілген Е дәлдікпен мына түрдегі қосындыны есептеңіз:
x-x33!+x55!-x77!+... .Нәтижесін y=sinx мәнімен салыстырыңыз.
program e4_6;
var x,y,e,p,s: real; i,k: integer;
begin
writeln; write(‘Е дәлдігі мен х-қа мән енгізіңіз:’); read(e,x);
y:=x; s:=0; i:=1; ... жалғасы
Ұқсас жұмыстар
Пәндер
- Іс жүргізу
- Автоматтандыру, Техника
- Алғашқы әскери дайындық
- Астрономия
- Ауыл шаруашылығы
- Банк ісі
- Бизнесті бағалау
- Биология
- Бухгалтерлік іс
- Валеология
- Ветеринария
- География
- Геология, Геофизика, Геодезия
- Дін
- Ет, сүт, шарап өнімдері
- Жалпы тарих
- Жер кадастрі, Жылжымайтын мүлік
- Журналистика
- Информатика
- Кеден ісі
- Маркетинг
- Математика, Геометрия
- Медицина
- Мемлекеттік басқару
- Менеджмент
- Мұнай, Газ
- Мұрағат ісі
- Мәдениеттану
- ОБЖ (Основы безопасности жизнедеятельности)
- Педагогика
- Полиграфия
- Психология
- Салық
- Саясаттану
- Сақтандыру
- Сертификаттау, стандарттау
- Социология, Демография
- Спорт
- Статистика
- Тілтану, Филология
- Тарихи тұлғалар
- Тау-кен ісі
- Транспорт
- Туризм
- Физика
- Философия
- Халықаралық қатынастар
- Химия
- Экология, Қоршаған ортаны қорғау
- Экономика
- Экономикалық география
- Электротехника
- Қазақстан тарихы
- Қаржы
- Құрылыс
- Құқық, Криминалистика
- Әдебиет
- Өнер, музыка
- Өнеркәсіп, Өндіріс
Қазақ тілінде жазылған рефераттар, курстық жұмыстар, дипломдық жұмыстар бойынша біздің қор #1 болып табылады.
Ақпарат
Қосымша
Email: info@stud.kz