Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
микропроцессор 14-ртк-1.docx
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
673 Кб
Скачать
☆

Тілдің қарапайым объектілері

Тілдің қарапайым  объектілеріне «сан», «идентификатор», «тұрақты», «айнымалы», «функция» және «өрнек» ұғымдары кіреді. Программадағы негізгі амалдардың орындалуын керекті мәліметтердің сандық, логикалық немесе символдық (литерлік) мәндері болады.

  1. Сандар. Сандар мен айнымалылар бүтін және нақты болып бөлінеді. Дербес компьютерде бүтін сандар ағылшынша integer, нақты сандар real деп жазылады.

Мысалы: Бүтін сандар: +4, -100, 15743,0 т.б. Нақты сандар: 2.65, 0.5, -0.856, -6.0.

  1. Атау – идентификатор (identification – объектің белгілі бір символдар тіркесін сәйкестігін бекіту) программаны және прграммадағы тұрақтыларды, типтерді айнымалаларды, функцияларды, файлдарды т.б. белгілеп жазу үшін қажет.

Идентификатор – міндетті түрде әріптен басталанатын сандар мен әріптердің тізбегіне тұратын атау.Мысалы: Х, Х1, СҮММА, Р23РН6, МТ54АР т.б.

  1. Тұрақты немесе константа деп программаның орындалу барысында бірден сандық мен берсек де немесе оны программаның сипаттау бөлімінде идентификатор түрінде белгілеп алып мән берсек те болады. Олар сандық, символдық, логикалық және тіркстік (integer, real, boolean, cha string) мәндерді қабылдай алады. Логикалық түрдегі тұрақтылар – true (ақиқат) немесе fallig (жалған) мәндерінің біріне ие бола алады.

Мысалы: x = 25; y = -0.5; z = 4E15;  g = 9.8; pi = 3.14 т.б.

  1. Айнымалылар деп программаның орындалу барысында әр түрлі мәндерді қабылдай алатын шамаларды айтады. Олар идентификаторлармен белгіленіп, әр уақытта ір түрлі мәнге ие бола алады. Айнымалылар атауы сипаттау бөлімнде var түйінді сөзінен кейін орналасады да, атауынан кейін қос нүкте қойылып, айнымалының типі көрсетіледі.

Паскаль тілінің программасы блоктардан құрылады. Қандай да бір блок ішінде кішігірім блоктар орналасуы мүмкін. Блоктар екі бөлімнен тұрады, олардың алғшқысы мәліметтерді сипаттау бөлімі, ал екіншісі – сол мәліметтерді пайдаланып, әр түрлі әрекеттерді (операцияларды, амалдарды) атқару бөлімі.

Міндеттерді сипаттау бөлімінің болуы міндетті емес, ал екінші негізгі бөлімі болуы міндетті. Басқа блокқа кірмейтін блок негізгі (глобальді) блок болып саналады блок ішіндегі блок – жергілікті (локальді) блок деп аталады.

                Айнымалыларды сипаттау. Программада пайдаланатын айнымлы шамалардың атаулар тізімі және олардың топтастырылып көрсетілген типтері төмендегі пішімде сипаттау бөлігінде көрсетілуі қажет.

Операторлар бөлімі

Программаға енетін айнымалылар мен тұрақтыларды, сандарды пайдаланып түрлі әрекеттер (нұсқау, жарлық) орындай алатын сөйлемдерді Паскаль тілінде операторлар, ал алгоритмдік тілде командалар деп атайды. Операторлар қарапайым және күрделі (құрама командалар) деп екі топқа бөлінеді. Вegin және end түйінді сөздері операторлық жақшалар деп аталады. Оператор дегеніміз – алгоритмді жүзеге асыру барысында орындалатын іс-әрекеттерді анықтайтын тілдің қарапайым сөйлемі. Олар жазылу ретіне біртіндеп бірінен кейін бірі тізбектей орвндалады.

С++ программалау тілі

С++ тiлi BCPL және B тiлдердiң негiзiнде құралған және Си тiлiнен дамыған. BCPL тiлi компилятордан жазуға және операциялық жүйенi бағдарламамен қамтамасыз етуге арналған. Бұл тiлдi 1967 жылы Мартин Ричард ойлап тапқан. Кен Томпсон В тiлiнiң көптеген мүмкiндiктерiн BCPL дубликатында және В тiлiн UNIX операциялық жүйелерiнiң алғашқы версияларын құру үшiн 1970 жылы Bell Laboratories-те DEC PDP-7 компьютерiнде қолданылды. BCPL және В тiлдерi қолдануға тиiмсiз болды. Онда мәлiметтiң әрбiр элементi жадыда бiр сөздiң орнын алады және мәлiмет элементтерiн өңдеуде бағдарламашыларға ауыртпалығын тигiздi.

Си тiлi В тiлiнiң негiзiнде дамыды. Си тiлiн Bell Laboratories-те 1972 жылы Деннис Ритчи DEC PDP-11 компьютерiнде жасады. Си BCPL және В тiлдерiнiң көптеген маңызды концепцияларын және мәлiмет типтерiн және басқа да қасиеттерiн қолданды. Си тiлi UNIX операциялық жүйесiн өңдеудегi тiл ретiнде кеңiнен танымал болды. Қазiргi таңда барлық операциялық жүйелер Си және Си++ тiлдерiнде жазылған. Соңғы он жылдықта Си тiлi көптеген компьютерлерде қолайлы болды.

Си++ Си тiлiнiң кеңейтiлген түрi. Оны 1980 жылдың басында Бъерн Строустроп Bell Laboratories-сында өңдеп шығарған. Си++ тiлi Си тiлiнiң бiрқатар қасиеттерiн реттеудi қамтамасыз етедi және ең маңыздысы объектi-бағдарланған бағдарламалық мүмкiндiгiн қамтамасыз етедi. Бұл бағдарламамен қамтамасыздандыру әлемiндегi революциялық идея болып табылады.

Басқада бағдарламалық тiлдер көптеген қажеттi эффект бере алмағандықтан, Си++ алғашқыда ең жоғарғы деңгейдегi нақтылы оқиғалар үлгiлерiн өңдеу мақсаты үшiн құрылған тiл болды.

Си++ тiлiн құруда Си тiлiнiң сәйкестiгiн сақтап қалуға ерекше көңiл бөлiндi. Си++ тiлiнiң көмегiмен кең көлемдi бағдарламалық проектiлер құруға болады. Си++ тiлiнiң арқасында берiлген мәлiметтер типтерiне бақылауды күшейтуге және көптеген қосымша эффектiлердi жеңе алатын болдық. Си++ тiлiнiң ең маңызды табысы объектi-бағдарланған бағдарламалау болып табылады. Си++-тiң барлық жеңiлдiктерiн пайдалану үшiн негiзгi объектiлердi және олармен байланысқан операцияларды анықтап алу керек.

Алгоритмдеу және программалау

Алгоритм дегеніміз берілген есепті шешуге арналған қатаң анықталған әрекеттер тізбегі немесе, қысқаша айтқанда, есептің шешу әдісі. Алгоритмнің негізгі қасиеттеріне тоқталайық.

1.      Алгоритмнің дискреттілігі. Бұл қасиет алгоритм түрінде жазылған есеп шешімі жеке жәй командаларға бөлініп орындалу ретіне қарай орналасқанын көрсетеді.

2.      Алгоритмнің анықтылығы. Бұл қасиет алгоритмнің әр командасы орындаушыға түсінікті болуын және мәнсіз орындалмауы керектігін көрсетеді.

3.      Алгоритмнің нәтижелігі. Бұл қасиет алгоритмнің ақырлы қадам санынан кейін нәтиже алатынын  көрсетеді.

4.      Алгоритмнің жалпылығы. Бұл қасиет есепті шешуге арналған алгоритмнің осы типтес есептердің барлық мүмкін мәндері үшін орындалатынын көрсетеді.

Алгоритмді сипаттаудың  бірнеше  түрлері бар.

1.      Алгоритмді сөз – формула арқылы сипаттау, яғни алгоритмді сөз және формулалар көмегімен сипаттау.

2.      Алгоритмнің графикалық сипатталуы, яғни алгоритмді арнайы графикалық схемалар – блок-схемалар көмегімен сипаттау.

3.      Алгоритмді псевдокод арқылы сипаттау. Псевдокод дегеніміз – команда әрекетінің, яғни алгоритм қадамының нақты программалау тілі операторларын қолданбай жәй тілмен  сипатталуы

4.      Алгоритмді программалау тілдерінің бірі арқылы жазу (Pascal, Basic).

Алгоритмнің негізгі құрылымдары

Алгоритм негізгі 3 базалық құрылымға бөлінеді:

1)     сызықтық

2)     тармақталушы

3)     циклдік.

Сызықтық алгоритмдерде есеп шешімінің қадамдары бірінен кейін бірі тізбектей орындалады. 

  Тармақталушы алгоритмдерде алдымен қандайда бір шарт тексеріледі және шарттың орындалуына немесе орындалмауына сәйкес есептеу процесінің бірі орындалады.

Программалу тілдері және негізгі классификациясы 

Қазіргі кезде 3500-ден жоғары әр түрлі программалау тілдері бар және осылардың ішінен шектелген саны ғана программалық бөлімді құруға жаппай  қолданылады. Программалау тілдерінің саны көп болуына байланысты олардың біршене классификациясы бар. Оның ішінде негізгі 2 түрге: фукционалдық мәніне (қызметі) және қолданылатын программалау технологиясына байланысты бөлінеді. Программалау тілдері фукнционалдық мәніне байланысты 4 үлкен классқа бөлінеді:

1)     программалауға үйретуші;

2)     жалпы мәнді;

3)     проблемалық-бағытталған;

4)     параллель программалаушы.

Қазіргі жоғары деңгейлі тілдерді осы классикацияға сәйкес қарастырамыз.

Программалауға үйретуші тілдер қатарына жататын жоғарғы деңгейлі тілдердің негізгілері Logo, Basic және Pascal. Logo тілі 60-шы жылдардың аяғында С.Пейперттің басшылығымен құрылды және ЭЕМ жаңа  қолданушыларға, балаларға программалаудың негізін үйретуге бағытталған. Үйретуге арналған жоғары деңгейлі тілдердің ішіндегі кең тарағаны 1965 жылы Д.Кемени мен Т.Курц құрған Basic тілі. Дербес компьютерлерге бірінші қолданылған жоғарғы деңгейлі тіл және операциялық ортасы – Basic тілі. 60-жылдардың ортасынан бастап мамандар арасында құрылымдық программалау  мәселесі көтеріле бастады. 1971 жылы Н.Вирт құрылымдық технологияға үйретуші Pascal тілін құрды.  

Жалпы мәнді жоғары деңгейлі тілдер қатарына әр түрлі класс есептерін тиімді программалауға бағытталған тілдер жатады. Бұл классқа жататын тілдердің негізгілері C, Modula, Ada тілдері. Бұл тілдердің негізі 1966 жылы құрылған,  ғылыми, пәндік облыстағы есептерді программалауға мүмкіндік  беретін PL/1 тілі. PL/1 тілі ЖС ЭЕМ сериялы модельдерде кеңінен қолданылды.  Си тілін 1972 жылы Д.Ритчи құрды  және Unix операциялық жүйесі осы тілде жазылды. Си тілі ассемблер тілінің де және жоғары деңгейлі тілдің де мүмкіндіктерін қамтамасыз ететін болғандықтан орта деңгейлі тіл деп атайды. Pascal тілінің идеологиясын тарату мақсатымен Н.Вирт 1980 жылы Modula–2  тілін құрды. Бұл программалау тілінің негізі – программа бір-біріне тәуелсіз модульдерден тұрады.  

1978 жылы қазіргі АҚШ-та әскери қаруды басқаруға қолданылатын қосымшаларды программалуға арналған Ada тілі құрылды. Ada тілі құрылымды программалау тілі болып табылады және параллель программалау мүмкіндіктерін қамтамасыз етеді. 

Проблемалық–бағытталған жоғары деңгейлі тілдер деп нақты пәндік облыс есептерінің мәселесін түгел қамтитын тілдерді атаймыз. Бұл классқа жататын бірінші жоғары деңгейлі тіл – Fortran тілі. Fortran-I тілін 1956 жылы IBM фирмасы құрды және ғылыми-техникалық есептерді шешуге арналған.  

Жасанды интеллект символдық информацияларын және тізімдерін өңдеуге арналған есептерді программалауға Lisp, Prolog тілдері қолданылады. Lisp тілін 50-жылдары Д.Макартни құрды. 70-жылдары Lisp тілінің негізінде құрылған Prolog тілі логикалық программалау тілі болып табылады және 5 буынның   ЭЕМ жапон проектісінде негізгі тіл болып таңдалған. Әр Prolog программа жәй тұжырымдар немесе импликациялардан тұратын сөйлемдерден тұрады, инструкция қолданылмайды. 

Дәстүрлі неймандық архитектурадан ЭЕМ дәстүрлі емес параллель архитектуралы есептеу машиналарына көшуіне байланысты параллель алгоритмдерді сипаттаушы инстументальды құрылғылар пайда бола бастады. Параллель программалау тілдерінің негізі – параллель есептеулерді программалау процесін ықшамдау, параллель архитектуралы есептеу машиналарына арналған параллель программалық жүйелердің тиімдісін алу. Параллель программалауды жабдықтаудың қиындығы тиімді параллель жөндеушілерді құру. Қазіргі кезде қолданылып жүрген интерактивті параллель жөндеушілер  IPSC (Intel фирмасының дербес компьютерлеріне арналған) және PDBX (мультипроцессорлы ЭЕМ арналған). Жиі қолданылатын векторлы матрицалық есептерге параллель программалар кітапханасы құрылған, BLAS- сызықтық алгебра программаларының кітапханасы, NAG – сандық алгоритмдер кітапханасы. Бұл есептерге белгілі матрицалы параллельдеушілер ProSolvar (Intel фирмасы) және жалпы мәнді параллельдеуші Parafrace (Д.Кук құрған) қолданылады. 

Программалау технологиялары

Программалау процесін жақсартатын және кең қолданылатын әдістердің бірі – құрылымдық программалау. Құрылымдық программалаудың 3 бөлігі (құраушысы) бар:

1.  Модульдік программалау

2.  Құрылымдық кодтау

3.  Жоғарыдан төменге қарай жобалау 

Модульдік программалау дегеніміз – программаны логикалық бөліктерге бөлу процесі. Программа бірнеше модульдерге бөлінеді және мына 2 мақсат орындалуы тиіс:

1)  Модулдің дұрыс болуы және оның контекстерден тәуелсіз болуы қажет;

2)  Модулдің ішкі жұмыстарын білмей тұра әр түрлі модулдерден программа құру мүмкіндігінің болуы қажет. 

Мысал ретінде стандарт математикалық функциялардың есептелу программасын қарастыруға болады. Программист sin(x) функциясын программаның кез-келген жерінде қолдана алады және оған функцияның есептелуіне қай әдістің қолданып тұрғанын білудің қажеттілігі жоқ. Модуль өлшемі 60 жолдан аспауы керек және модульдер өзара тәуелсіз болуы керек. Байланысқан элементтерді бір модульге, байланыспаған элементтерді әр түрлі модульге жинау керек. Модульдерді қолдана отырып программа күрделілігін төмендетуге болады.  

Pascal тілінде модуль процедуралар мен функциялардың көмегімен құрылады, Cи тілінде функциялардың көмегімен құрылады. 

Құрылымдық кодтау деп программада басқарушы конструкциялардың–шартты операторлардың, циклдің (параметрлі, цикл-әзір, цикл-дейін) қолданылуын айтады. Шартсыз көшу операторы программада сирек қолданылуы керек немесе шартты оператордың, циклдің көмегімен өзгертілуі керек. 

Программаны жоғарыдан төмен қарай жобалаудың өз иерархиялық құрылымы бар және қысқа есеп қойылымынан басталады. Одан кейін есеп бірнеше ұсақ ішкі есептерге бөлінеді. Ішкі есептердің өзі де ішкі есептерге бөлінуі мүмкін. Әр қадамда ішкі есептің орындайтын негізгі функциялары анықталуы керек. Бөлу процесі әр ішкі есеп қарапайым болғанға дейін, яғни әр ішкі есепке бір модуль сәйкес келгенше созылады.

Объекті-бағытталған программалау

Объекті-бағытталған программалау тілдерінің негізгі концепциясы– құрылатын қосымша өзара байланысқан негізгі объектілерден тұрады. Объекті-бағытталған технологияда қолданушы үш базалық элементпен: объектілер, хабар және класстармен жұмыс істейді. 

Объектілер дегеніміз бірнеше рет қолданылатын программалық модулдерден, яғни байланысқан мәліметтер мен процедуралардан тұрады. Объект құрылымы екі бөліктен тұрады: айнымалылар және әдістер. Әдістер объект функциясының алгоритмін анықтайтын процедуралар мен функциялар жиынынан тұрады. Объектілі айнымалылар жәй мәліметтерден (сан, массив, текст) және күрделі құрылымды информациялардан (график, дыбыс т.б.) тұрады.

Объектілердің өзара байланысуына хабарлар қолданылады және үш бөлімнен тұрады: объект идентификаторы, ағымдағы объектіде қолданылатын әдіс аттары және таңдалған әдіс режимін қалпына келтіретін қосымша информациялар. Күрделі программалар бірнеше біртипті объектілерді қолдануы мүмкін. Бұл жағдайда әр объект үшін әдістер мен айнымалылар туралы информацияны жазу тиімсіз. Бұл мақсатқа объектілер класы деген түсінік енгізілген. Класс дегеніміз біртипті объектілерге арналған шаблон және объектілі айнымалылар типтері мен әдістерін анықтайтын информациялардан тұрады.

Объекті-бағытталған технологияға негізделген программалау тілдері: SmallTalk/v, Object  Pascal, ACT++, C++, Simula, Actor, Classic–Aga  және т.б.

Объекті-бағытталған программалаудың негізгі үш принципі бар: инкапсуляция, тұқымқуалау,  полиморфизм.

Логикалық программалау 

Логикалық программалау тілдері PROLOG және LISP жасанды интеллект проблемаларының есептерін шешуге арналған. LISP тілін 50-інші жылы Д.Макартни символдық информацияларды өңдеуге арнап құрды. LISP тілінің мәліменттерінің негізгі құрылымы тізімдер, тізімнің элементтері атомдар. Lisp тілінің бір ерекшелігі динамикалық жаңа объектілерді құру мүмкіндігі, объект есебінде программаның өзі де қатыса алады.

LISP тілі және оның модификациялары символды өңдеуге арналған бағытталған программалық бөлімді құруға кең қолданады және қазіргі кезде көптеген тиімді компиляторлары бар.

70-жылдары Lisp тілінің негізінде құрылған Prolog тілі логикалық программалау тілі болып табылады. Prolog программасының негізгі элементі атом болып табылады және жеке объектілер арасындағы қарапайым қатынастарды көрсетеді, басқа программалау тілдеріне қарағанда атом түсінігінің мағыналық мәні басқа. Тіл тек сипаттамадан тұрады және инструкциялары жоқ, яғни процедуралы емес. Әр Prolog программа сөйлемдер жиынынан тұрады, яғни жәй тұжырымдар немесе импликациялар. Prolog тілінің базасында эксперттік жүйелер, білімді көрсететін жүйелер, білім базасы және жаратылыс тілдерін өңдейтін жүйелер құрылады. Prolog тілінің негізіне математикалық логика элементтері қолданылады. Программа объектілер арасындағы қатынас терминдері арқылы сипатталады. Логикалық программалау тілдерінің жетістігі параллель программалау принципі қолданылады. Prolog тілінің көптеген танымал модификациялары бар, оның ішінде ең көп тарағаны – Borland фирмасының Turbo Prolog программалау жүйесі. Жасанды интеллект проблемасына арналған жаңа логикалық және функционалды программалау тілдері құрылуда, мысалы, DURAL, VALID тілдері.

46