Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Типтердің үйлесімділігі






Кейде, мысалы, ө рнектерде жә не салыстыру операцияларында типтердің ү йлесімділігі қ ажет. Сонымен қ атар типтердің ү йлесімділігі меншіктеу бойынша ү йлестіру ү шін маң ызды предпосылка болып табылады.

Типтердің ү йлесімділігі орын алады, егер келесі шарттардың кемінде біреу орындалса:

· - типтердің екеуі де бірдей болса;

· - типтердің екеуі де нақ ты типтер болса;

· - типтердің екеуі де бү тінсанды болса;

· - бір тип екіншінің ішкі диапазоны болатын болса;

· - типтердің екеуі де бірдей бір базалық типтің ішкі диапазоны болатын болса;

· - типтердің екеуі де базалық типтері ү йлесімді болатын жиындық типтер болса;

· - типтердің екеуі де компоненттер саны бірдей болатын қ апталғ ан жолдық типтер болса;

· - бір тип жолдық, ал екінші тип жолдық немесе қ апталғ ан жолдық немесе символдық тип болса;

· - бір тип нұ сқ ағ ыш (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

Ә р вариант кемінде бір тұ рақ ты арқ ылы идентификатталғ ан. Барлық тұ рақ тылар бір бірінен ө геше болуы жә не қ асиет орісінің типіне ү йлесімді болатын реттік типке ие болуы тиіс. Варианттық жә не фиксацияланғ ан ө рістерге қ ол жеткізу бірдей. Варианттық бө лімде міндеті емес идентификаторды - ө ріс қ асиетінің идентификаторын кө рсетуге болады. Ө ріс қ асиетінің идентификаторы бар кезде ол жазбаның қ осымша фиксирленген ө рісінің – қ асиет ө рісінің идентификаторы болып қ алады. Программа қ асиет ө рісінің мә нін қ азіргі кезде қ андай вариант белсенді болып тұ рғ анын кө рсету ү шін қ олдануы мү мкін. Қ асиет ө рісі кө рсетілмесе программа вариантты басқ а критерий бойынша таң дайды.

 

Жазба типтерінің мысалы:

Record firstName, lastName: string[40]; birthDate: Date; case citizen: boolean of True: (birthPlace: string[40]); False: (country: string[20]; entryPort: string[20]; entryDate: Date; exitDate: Date); end record x, y: real; case kind: Figure of rectangle: (height, wigth: real); triangle: (size1, side2, angle: real); circle: (radius: real); end  

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.