Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Типтердің үйлесімділігі
Кейде, мысалы, ө рнектерде жә не салыстыру операцияларында типтердің ү йлесімділігі қ ажет. Сонымен қ атар типтердің ү йлесімділігі меншіктеу бойынша ү йлестіру ү шін маң ызды предпосылка болып табылады. Типтердің ү йлесімділігі орын алады, егер келесі шарттардың кемінде біреу орындалса: · - типтердің екеуі де бірдей болса; · - типтердің екеуі де нақ ты типтер болса; · - типтердің екеуі де бү тінсанды болса; · - бір тип екіншінің ішкі диапазоны болатын болса; · - типтердің екеуі де бірдей бір базалық типтің ішкі диапазоны болатын болса; · - типтердің екеуі де базалық типтері ү йлесімді болатын жиындық типтер болса; · - типтердің екеуі де компоненттер саны бірдей болатын қ апталғ ан жолдық типтер болса; · - бір тип жолдық, ал екінші тип жолдық немесе қ апталғ ан жолдық немесе символдық тип болса; · - бір тип нұ сқ ағ ыш (Pointer), ал екінші кө рсерткіштердің кез келген типі болатын болса; Т1 типтің мә ні Т2 типпен меншіктеу бойынша ү йлесімді болып табылады (яғ ни, Т1: =Т2 рұ қ сат етілген), егер келесі шарттардың біреуі орындалатын болса: · - Т1 жә не Т2 барабар типтерге ие болатын болса, жә не олардың біреуі де файлдық тип немесе ө зінің дең гейлерінің біреуінде файлдық типтегі компонентті қ амтығ ын қ ұ рылымды тип болмаса; · - Т1 жә не Т2 ү йлесімді реттік типтер болып табылса, жә не Т2 типтің мә ндері Т1-дің мү мкін болатын мә ндер аралығ ына тү сетін болса; · - Т1 жә не Т2 нақ ты типтер болып табылса, жә не Т2 типтің мә ндері Т1-дің мү мкін болатын мә ндер аралығ ына тү сетін болса; · - Т1 нақ ты тип, ал Т2 бү тінсанды тип болып табылса; · - Т1 жә не Т2 жолдық типтер болса; · - Т1 жолдық тип, ал Т2 символдық тип болып табылса; · - Т1 жолдық тип, ал Т2 қ апталғ ан жолдық тип болатын болса; · - Т1 жә не Т2 ү йлесімді қ апталғ ан жолдық типтер болатын болса; · - Т1 жә не Т2 ү йлесімді жиындық типтер болып, жә не Т2 тип мә нінің брлық мү шелері Т1-дің мү мкін болатын мә ндер аралығ ына тү сетін болса; · - Т1 жә не Т2 ү йлесімді " нұ сқ ағ ыш" типтер болып табылса; Егер меншіктеу бойынша ү йлесімділік қ ажет болып алдың ғ ы тізімдегі бір де бір шарты орындалмаса компиляциялау кезең індн қ ате туралы хабарлама беріледі.
Динамикалық массивтер ( Delphi, C ). Динамикалық деп программаның орындалу барысында ө лшемі ө згерілуі мү мкін болатын массивті атайды. Динамикалық массивтің ө лшемін ө згерту ү шін сондай массивтерді сү йемелдейтін программалау тілі қ ұ рамына кірістірілген функция немесе операторды ұ сынуы тиіс. Динамикалық массивтер деректермен икемділеу жұ мыс жасауғ а мү мкіндік береді, себебі деректердің сақ талатын кө лемдерін болжамдамауғ а, ал нақ тылы қ ажет болатын кө лемдеріне сә йкес массив ө лшемін реттеуге мү мкіндік береді. Динамикалық емес кә дімгі массивтерді статикалық деп те атайды. Паскальдағ ы статикалық массив мысалы: wordArray: array [Word] of Integer; // Статикалық, ө лшемі = High(Word) + 1 multiArray: array [Byte, 1..5] of Char; // Статикалық массив, 2 ө лшемді rangeArray: array [5..20] of String; // Статикалық массив, ө лшемі= 16 Бір типті айнымалы-массивтерді бір біріне меншіктеуге болады, бұ л кезде бір массивтің мазмұ ны екінші массивке кө шіріледі: a1: =a2; Массив типінің параметрін мә ні бойынша жіберу барысында массив мазмұ ны – нақ тылы параметр массивке - формальды параметрге кө шіріледі: procedure p(arr: array [1..10] of integer); ... p(a1); Ә детте, бұ л жағ дайда массивтің мазмұ нын кө шіру қ ажет емес, сондық тан массивті сілтеме бойынша жіберген дұ рыс: procedure r(var arr: array [1..10] of integer); ... r(a1); Массивтің элементтеріне индекстері бар айнымалылар арқ ылы сілтейді: a1[3]: =a2[5]; b['f', w3]: ='Hello'; c[3][4]: =3.14; Массивтермен жұ мыс жасағ анда ең жиі кездесетін қ ате – индекстің ө згеру шекарасынан шығ ып кету (ол динамикалық массивтерде орын алмайды). Pascal ABC –те мұ ндай қ атенің пайда болуы программа жұ мысының аяқ талуына ә келеді.
Жазба типі элементтердің немесе ө рістердің берілген бір мө лшер санын қ амтиды, ол элементтерінің типтері ә ртү рлі болуы мү мкін. Жазба типінің сипаттамасы ә р ө ріс типін жә не ө ріс идентификаторын қ амтиды. Жазба типінің фиксацияланғ ан бө лігі ә р ө ріс ү шін идентификаторы мен типімен бірге ө рістердің фиксацияланғ ан тізімін қ амтиды. Ә р ө ріс ә рдайым бірдей бір тә сіл арқ ылы ізделінетін ақ паратты қ амтиды. Жазба типіне мысал: record year: integer; month: 1..12; day: 1..31; end Ә р вариант кемінде бір тұ рақ ты арқ ылы идентификатталғ ан. Барлық тұ рақ тылар бір бірінен ө геше болуы жә не қ асиет орісінің типіне ү йлесімді болатын реттік типке ие болуы тиіс. Варианттық жә не фиксацияланғ ан ө рістерге қ ол жеткізу бірдей. Варианттық бө лімде міндеті емес идентификаторды - ө ріс қ асиетінің идентификаторын кө рсетуге болады. Ө ріс қ асиетінің идентификаторы бар кезде ол жазбаның қ осымша фиксирленген ө рісінің – қ асиет ө рісінің идентификаторы болып қ алады. Программа қ асиет ө рісінің мә нін қ азіргі кезде қ андай вариант белсенді болып тұ рғ анын кө рсету ү шін қ олдануы мү мкін. Қ асиет ө рісі кө рсетілмесе программа вариантты басқ а критерий бойынша таң дайды.
Жазба типтерінің мысалы:
|