N санынын Факториалын
табу үшін рекурсия кұру мысалы:
PROGRAM Recurs;
VAR N:lnteger; F:Longint;
FUNCTION Fact(N:lnteger):Longint;
Begin
lfN<0 Then Begin Writeln(N-дідұрысенгізіңіз');
Fact:=0 End Else іf N=1 Then
Fact:=1 Else Fact:=N*Fact(N-1);
End;
BEGIN Readln(N);
F:=Fact(N); Writeln('FN=',F);
Readln END.
БұлбағдарламаныңорындалубарысынданегізгібағдарламаданFact
функциясышақырылады. Функцияныңденесі
N санын 0-менсалыстыруданбасталады. Егерсантеріснемесе
0-гетеңболса, ондафункция 0-діменшіктейдідеорындалуынтоқтатады.
Егерсан 1 -гетеңболсафункцияныңмәні 1
-діменшіктейдідеорындалуынтоқтатады.
Егерсанныңмәні 1-денартықболса, ондабасқаруFact:=N*Fact(N-1)
операторынабарадыдаN-ніңмәні1-гедейінжеткеншефункцияныңорындалуықайталанады(факториалдыңтривиальдімәні
1-гетеңболғандықтан N=1). Функциярекурсивтіпроцестоқтағаннанкейінгікөбейтіндінәтижесінменшіктейдідеорындалуынтоқтатады.
Мысалы N=5 болғандаFact функциясытөмендегідейорындалады:
N=5; 5>1; Fact=5*Fact(4);
N=4; 4>1; Fact(4):=4*Fact(3);
N=3; 3>1; Fact(3):=3*Fact(2);
N=2; 2>1; Fact(2):=2*Fact(1);
N=1; 1=1; Fact(1):=1;
2. Дәмхана жұмысын автоматтандыру
2.1 SQL көмегімен мәліметтер
қорын басқару
1987 жылы SQL маманданған
реляциялық МҚБЖ үшін стандартты
тіл болып барлық кең таралған
жүйелерге ене бастады. Ол келесі
момнеттерімен байланысты. Тез әрекеттіліктің
өсуі, және энергияны тұтынудың,компьютер
өлшемдері мен бағаларының төмендеуі,
тұтыну нарығының, қолданушылар
ортасының және түрлері мен
бағаларының кеңеюіне әкеліп
соқты. Сондай-ақ, әртүрлі программалық
жабдықтауларға да сұраныс көбейді.
Сатып алушы фирмаларға күресте,
программалық жабдықтаушылар нарыққа
интеллектуалды, әрі көлемді программалар
кешенін шығара бастады. Олар
сатып ала отырып, көптеген ұжымдар
мен жеке қолданушылар ол программаларды
өз компьютерлеріне орната алмадй.
Ақпаратпен алмасу және оларды
тарату үшін ЭЕМ желілері құрылды,
онда программалар мен мәліметтерді
арнайы файлдық сервер лерге
орналастырды.Файлдық серверлермен
жұмыс істейтін МҚБЖ, бір-бірінен
алыс ара-қашықтықта орналасқан
әртүрлі ЭЕМ қолданушыларына
бір МҚ кіру мүмкіндігін берді.
Мұндай жағдайда ұжымдарды, оқу
кешендерін, ақпараттық және басқа
жүйелерді әртүрлі автоматталған
басқару жүйелерін өндіру оңайлатылады.
Бірақ бұл кезде қарапайым
сұраным құру үшін де файлдық
серверден немесе серверге файлдарды
жазу керек болады, ал ол конфликтілік
ситуайияларды туғызуы мүмкін. Мұндай
кемшіліктерді бодырмау үшін
клиент/сервер технологиясы ұсынылған
боатын, бірақ ол үшін сервермен
хабарласу тілі қажет-мұндай тіл
ретінде SQL таңдалды.
SQL концепцияларында
операциялардың мәліметтердің кесте
түрінде берілуіне бағытталуы, аз
сөйлемді жинақы тілді құруға
мүмкіндік берді. SQL сұранымдарды
орындау үшін, және де қолданбалы
программаларды құру үшін де
пайдаланылуы мүмкін. Онда келесі сөйлемдер
бар:
- Мәліметтерді анықтау тілі-МҚ анықтау, және де кестелер мен индекстерді анықтау және жою;
- Мәліметтерді таңдау сұранымы-SELECT сөйлемі;
- Мәліметтерді түрлендіру сөйлемі-мәліметтер қосу, жою және өзгерту;
- Мәліметтерді басқару сөйлемі-мәліметтерге кіру артықшылығн беру немесе қайтару, транзакцияларды басқару және т.б.
- Сондай-ақ SQL бұл сөйлемдерде келесі есептерді орындау мүмкіндігін береді:
- Арифметикалық есептеулер, функционалдық түрлендірулер, және арифметикалық өрнектер мен текстерді салыстыру операцияларын орындау;
- Кесте мазмұнын экран дисплейіне немесе баспаға шығарар кезде жолдар мен бағаналарды реттеу;
- ҚолданушыларғыМҚ-дамәліметтердіңкөлемінөзгертпейинтерпретациялаумүмкіндігінберетінұсыныстарқұру;
- Сұранымбойыншашығарылатынбірнемесебірнешекестелержәнеұсыныстармазмұнынбасқакестедесақтау;
- Мәліметтерді топтау, және осы топтарға арифметикалық орта, сумма, максимум, минимум операцияларын қолдану;
SQL тілі көптеген
МҚБЖ-ң негізі болып табылад,
өйткені ол мәліметтердің физикалық
құрылымдануына және дискіге
жазылуына сондай-ақ мәліметтерді
дискіден физикалық оқуға жауап
береді, және МҚБЖ-ң басқа компоненттерінен
және қолданушы қосымшаларынан SQL-сұранымдарды
қабылдау мүмкіндігін береді.Олай
болса, SQL қолданушыларға, программаларға
реляциялы МҚ ақпараттарына кіруді
қамтамасыз ететін мықты құрал.
Реляцияла МҚ басқару
жүйелері 80 жылдардың аяғында кеңінен
т анымал болды. Мұндай мәліметтер қорында
ақпарат қарапайым кестеде сақталатындықтан,
мәліметтерді беретін басқа модельдерге
қарағанда артықшылығы көп. SQL реляциялы
МҚ тілі болғандықтан, оның тарихы да мәліметтерді
осы тәсілмен берудің дамуымен тығыз байланысты.
Жоғарыда айтылғандай,
реляциялы МҚ түсінігі 70 жылдардың
басында IBM компаниясының ғылыми қызметкері
Э.Ф.Кодпен енгізілді.Осыдан кейін реляциялық
мәліметтер қоры одбысында IBM компаниясының
System/R деп аталған жобасымен бірге
зерттеулер жүргізіле бастады, мұнда
реляциялық модельдің жұмыс істеу
қабілеті тексеріліп және дәлелденді.
Сондай-ақ МҚБЖ-ін өңдеуден басқа жоба
көлемінде МҚ-на сұранымдар тілін
құру жұмысы жүргізілді, олардың бірі
SEQUEL (Structured English Query Language-ағылшын құрылымдық
сұранымдар тілі)-деп аталды. 70 ж соңында
System/R жобасының екінші таралымы жүзеге
асырылды, нәтижесінде жүйе ІВМ компаниясының
бірнеше тапсырушыларының компьютерлерінде
орнатылды. Ол System/R МҚБЖ-мен және оның
МҚ тілімен жұмыста алғашқы нақты тәжірибеге
әкелді, ал оның аты SQL деп ауыстырылды.
Нятижесінде ІВМ компаниясы реляциялық
МҚ жұмыс істеуге қабілетті және программалық
өнімдер құрудың негізі болып қызмет ете
алады деген қорытындыға келді.
System/R жобасы және
оның шеңберінде құрылған МҚ-мен
жұмыс істейтін тіл, дүние жүзінің
мамандарының назарын аудартты.
Осылайша, 1977 ж SQL-ға негізделген,
реляциялық МҚБЖ-ін құру үшін
Relational Software Inc(қазір Oracle Corporation) компаниясы
ұйымдастырылды. Oracle деп аталған
бұл МҚБЖ, бірінші юолып 1979 ж
нарыққа шықты.
Беркли қаласының
университетінде (Калифорния штаты) ІВМ
компаниясының зерттеушілер тобыреляциялық
МҚБЖ-нің протатибін құрды, QUEL сұранымдар
тілін қосқан өз жүйелерін Ingres деп
атады. 1980 ж бірнеше мамандар Берклиді
тастап, Ingres жүйесінің коммерциялық
жүйесін құру үшін Relational Technology Inc компаниясының
негізін құрды, оны нарыққа шығару
1981 ж басталды. 1989 ж аты Ingres Corporation
болып ауысқан Relational Technology компаниясы
жүйеге өзгерістер қатарын енгізген
реляциялық МҚБЖ жетекші таратушысы
болып қалды. Мысалы, 1986 ж алғашқы
QUEL сұранымдар тілі табыспен SQL болып
ауыстырылды.
1981 ж ІВМ фримасы
System/R негізінде, SQL/DataSystem(SQL/DS) деген
атпен коммерциялық өнім шығарды,
ал 1983 ж тағы бір МҚБЖ-Database(DB2) пайда
болды. DB2 ІВМ компаниясының жетекші
реляциялық МҚБЖ болды, және
осы жүйенің SQL тілі МҚ үшін
стандарты болды. DB2-де іске асырылған
технология, кейін ІВМ компаниясының
барлық бағыттарының программалық
өнімдерінде, дербес компьютерден
бастап, желілік серверлерге және
үлкен ЭЕМ пайдаланылды.80 жылдардың
бірінші жартысында реляциялық
МҚ таратушылар өз өнімдерін
мойындату үшін күрес жүргізді,
өйткені дәстүрлі МҚ архитектурасымен
салыстырғанда, реляицлық программалық
өнімдердің бірқатар кемшіліктері
болды. Бірақ реляциялық жүйелердің
үлкенартықшылығы болды: олардың
реляциялық сұранымлар тілі МҚ-на
сұранымлы жазбай орындау және
нәтижені бірден жазу мүмкіндігін
берді.
80жылдардың екінші
жартысында реляциялық МҚ болашақ
технологиясы болып санала бастады,
алдыңғы версияларына қарағанда
өнімділіг 2-3 есе артық болған
МҚБЖ-нің жаңа версиялары Ingres және
Oracle пайда болды. 1986 ж ANSI/ISO-мен
қабылданған SQL стандартын жариялау,
SQL-ға стандарт статусын ресми
түрде жариялады. Сондай-ақ , бұл
статус компьютерлік жүйелер
үшін UNIX ОЖ-сі негізінде анықталды.Компьютердің
қуатының күшеюі мен олардың жергілікті
желіге бірігуінен, дербес компьютерлер
үшін күрделі МҚБЖ қажеттігі туды. Мұндай
МҚБЖ-нің таратушылары жаңа жүйелерді
құруды оларға SQL-ды негіз етіп қойды, ал
мини-компьютерлердің МҚБЖ-сін таратушылар
жергілікті есептеу желісінің нарығына
шықты. 90ж басында SQL таратуын жаңашаландыру
және қуатты процессорлардың пайда болуы
бұл тілді транзакцияны өңдеу қосымшаларында
қолдануға мүмкіндік берді. Енді SQL ақпаратты
өңдеу салыстырмалы аз шығымен жүзеге
асатын жүйеге желілік сервер ен дербес
компьютерді байланыстыратын клиент/сервер
архитектурасыныңкілттік бөлігі болды.
Осы себепті барлық жаңа МҚБЖ-неSQL-қолдауын
енгізе бастады, SQL-ді мойындаудың маңызды
қадамы бұл тілге стандарттардың пайда
болуы. SQL сьандартын ескертуде дәстүр
бойынша ANSI/ISO –мен тағайындалған ресми
стандарт туралы сөз болады. Бірақ басқа
да маңызды SQL стандарттары бар, соның
ішінде ІВМ компаниясының DB2 жүйесі, және
UNIX ортасындағы SQL үшін X/OPENстандарты. 1982
ж реляциялық МҚ тілінің ресми стандартымен
ANSI-дің жұмысы басталды, және комитет өз
таңдауын SQL-ға тоқтатты. Стандарт негізі
ретінде DB/2 жүйесінің SQL алынды 1989 ж стандарт
SQL-89 немесе SQL1 деп аталды. Осыдан кейін
ANSI жұмысын жалғастырып, жаңа жоба SQL2-ні
құрды, ал одан кейінгі стандарт SQL3 үшін
басқа өзгерістер ұсынылды. SQL2 стандарты
ANSI-де бекітілді және толығымен 1992 ж қазанда
қабылданды.
Реляциялық МҚ –ол
жолдар мен бағандардан тұратын
екі өлшемді кестеде сақталатын
байланысқан ақпарат. МҚБЖ терминінде
жазу деп аталатын әрбір жол мәліметтердің
қандай да бір ерекшелігіне сәйкес келеді.
Өріс деп аталатын кестенің әрбір бағаны
мәліметтердің әрбір типінің мәнінен
тұрады. Олай болса, реляциялық МҚ негізі
ақпараты бар екі өлшемді кесте болып
табылады.
Бірақ МҚ бір кестеден
тұратын реляциялық МҚ сирек кездеседі.
Мәліметтермен күрделі және қуатты
операцияларды өрнектеу үшін өзара
байланысқан ақпаратты фрагменттері
арасындағы байланысқа байланысты. Жүйенің
максималды иілгіштігін қолдау үшін
кестенің жолдары арнайы ретпен орналаспауы
керек. Реляциялық МҚ жүйелерінде ақпаратты
реттейтін қуатты функция бар.Жолдардан
айырмашылығы, кестенің өрістері реттеледі
және оларға ат беріледі. Яғни, кестенің
әрбір бағанының кереметаты болуы керек.
Әдетте SQL бірден көп қолдаушылары бар
компьютерлік жүйелерде жұмыс істейді,
сәйкесінше оларды өзара ажырату қажеттілігі
туады. Әдетте мұнда жүйеде әрбір қолданушының
хұқын тексеру коды болады. Компьютермен
сеанстың басында қолданушы жүйеге өзінің
арнайы ID(идентификатор) айтып кіреді.
Кірудің ID-ін пайдаланатын кез-келген
адамдар саны, жеке қолданушы болып табылады.Көптеген
SQL орталарындағы әрекеттер арнайы идентификатор-
лармен сәйкес рұқмат етілген. Кесте немесе
басқа объект толық билігі бар қолданушыға
тәуелді. Және де қолданушыда объектілермен
әрекеттер жүргізу артықшылығ бар. Төменде
келтірілетін мысалдарда кез-келген қолданушының
әрекеттер жасауға артықшылығы бар деп
санаймыз.
Осыдан былай
мысал ретінде шағын МҚ пайдаланамыз.
Онда 4 кесте бар:
STUDENTS кестесі студенттер
туралы ақпараттың 5 өрісінен тұрады:
- SNUM-студенттік билет номері;
- SFAM-студент фамилиясы;
- SIMA-студент аты;
- SOTCH-студенттің әкесінің аты;
- STIP-студент алатын стипендия көлемі;
- PREDMET кестесі оқу пәндері туралы ақпараттан тұрады:
- PNUM-пән номері;
- PNAME-пән атауы;
- TNUM-
- HOURS-сағат саны;
- COURS-курс;
- TEACHERS кестесі оқытушылар туралы ақпараттан тұрады:
- TNUM-
- TFAM-оқытушы фасмилиясы;
- TIMA- оқытушы аты;
- TOTCH- оқытушының әкесінің аты;
- TDATE-
- USP кестесі студенттердің үлгірімі туралы ақпараттан тұрады:
- UNUM-
- OCENKA-
- UDATE-
- SNUM-
- PNUM-
Әдетте SQL -тілінің
командалары бірнеше топқа бөлінеді.
Командалардың негізгі типтері
келесідей:
- DDL(Data Definition Language )- мәліметтердіңанықталутілі. Бұлтоптыңкомандаларымәліметтерқорыныңобъектілерініңқұрылымынқұружәнеөзгерту(мысалы, кестелердіқұружәнежоюүшін) үшінпайдаланылады.
- DML(Data Manipulation Language)- мәліметтердәбасқару (манипуляция) тілі. DMLкомандалары мәліметтер қоры объектілеріндегі ақпараттарды басқару үшін пайдаланылады.
- DCL (Data Control Language)-мәліметтердібасқарутілі. Сәйкескомандалармәліметтерқорындасақталғанақпаратқакірудібасқаруғаарналған.
- DQL (Data Query Language)-тілі. Бұлжиіқолданылатынкомандалар, мәліиеттерқорынасұранымдықұруғаарналған.(Сұранымдегенімізсәйкесақпараттыалумақсатындамәліметтерқорынахабарласу.
- Мәліметтерқорынадминистрациялаукомандаларыәрекеттердіңорындалуынабақылаудыжүзегеасыружәнеөндірілетіноперацияларыдыанализдеугеарналған.
Стандартты SQL- депайдаланылатынмәліметтертиптерінкелесітоптарғабөлугеболады:
- Жолдық типтер;
- Сандық типтер;
- Дата мен уақытты көрсетуге арналған типтар.
Бұл типтердің нақтырақ
сипаттамасы.
Жолдық типтер.
SQL-де екі жолдық типтер
анықталған:
- Белгіленген ұзындықты символдық жолдар;
- Айнымалы ұзындықты символдық жолдар.
Белгіленген ұзындықты
символдық жолдар.
Белгіленген ұзындықты
символдық жолдар түрінде сақталған
мәліметтер, өріске енгізілгенжолдың
нақты өлшемінен тәуелсіз, жадының бір
ғана көлемін алады. ANSI-SQL-92-ге сәйкес белгіленген
ұзындықты символдық жолдарды хабарлау
түрі келесідей:
Character(n)
Мұндағы n бұл хабарлау
қатысты болатын өріс өлшемін анықтайтын
жол ұзындығы.
Белгіленген ұзындықты
жолдарды пайдаланғанда , әдетте, бос
жолдар пробелдармен толтырылады. Мысалы,
егер өлшемі 10 тең өріс беріліп, ал оған
3 символдан тұратын жол енгізілсе,
онда 7 символ пробелдармен толтырылады.
Айнымалы ұзындықты
символдық жолдар.
Айнымалы ұзындықты
жолдың ұзындығы барлық мәліметтер үшін
тұрақты емес, ол мәліметтер қорының
кестесі өрісінде сақталған жолдың
нақты өлшеміне тәуелді. Айнымалы ұзындықты
жолды хабарлау келесі түрде болады:
Varchar(n)
n-максималды мүмкіндікті
жолды анықтайтын сан.