Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Bakit-pasсал-лек.doc
Скачиваний:
44
Добавлен:
01.05.2015
Размер:
665.6 Кб
Скачать

3. Айнымалының алдын-ала анықталған қарапайым типтері

Программалау тілдерінде ең бір негізгі де маңызды ұғымдардың біріне тип ұғымы жатады. Компьютерде өңделетін әр түрлі мәліметтер (бүтін сандар, нақты сандар, символдар,…) 0 және 1 екілік цифрлар тізбегі түрінде өрнектеледі. Мәліметтердің түрлеріне байланысты, оларды компьютердің жадында орналастыру және оларға қолданылатын амалдардың түрлері мен орындалу тәсілдері әр түрлі болады. Программалау тілдерінде осы сәйкестік мәліметтердің типтері арқылы көрсетіледі. Яғни, тип обьектілердің қабылдай алатын мәндерінің жиынын және оларға қолданылатын амалдардың түрлері мен орындалу жолдары анықтайды.

Паскальда программаны құру жолдарын жеңілдету және көрнектілігін арттыру мақсатымен өңделетін мәліметтерді белгілі бір жүйеде жинақтап, тұтасымен қарастыру жолдары ойластырылған. Осындай күрделі мәліметтің типі сол жүйеге кіретін элементтердің қабылдайтын мәндерінің түрін және жинақтау тәсілін көрсетеді де, жүйелі тип құрайды. Егер мәліметтер жеке - дара құрастырылса, онда олар жай типті мәліметтерге жатады. Сонымен Паскальда қолданылатын типтерді екі топқа бөлуге болады: жай (негізгі) және жүйелі (күрделі). Жай тип стандартты және жасанды болып бөлінеді. Стандартты жай типтерге бүтін (іnteger), нақты (real), байттық (byte), логикалық (boolean), символдық (char) типтер жатады. Жасанды типтерді қолданушының өзі құрастырады, олардың екі түрі бар: аралық және атап өту. Жүйелі типтер жай типтерге негізделіп құрастырылып, төмендегідей бөлінеді: массивтік (array), жолдық (strіng), жиындық (set), жазба (record), файлдық (fіle),…. Мәліметтер типтерінің жіктелуі 1.1 - суретте көрсетілген.

Жай типтердің real және іnteger-ден өзгелері реттік (шектелген) тип деп аталады. Реттік типті шамалардың қабылдай алатын мәндерінің саны шектелген болады. Мысалы, логикалық типті шамалар екі мәннің (0,1) бірін, байттық типті шамалар 256 мәннің (0-255) бірін қабылдай алады.

Мәлімет типтерінің классификациясы. Программадағы мәл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 4–суретте көрсетiлген.

Скаляр типтер

Скалярлы типтер өзiне тән мәндердiң (бүтiн, нақты, символдық және логикалық типтерге) реттелген жиынын анықтайды.

Бүтiн типтер

Типтiң аты

Мәндер диапазоны

Өлшем

Жады

Byte

0..255

8-bit

1 байт

Word

0..65535

16-bit

2 байт

Shortint

-128..127

8-bit

1 байт

Integer

-32768..32767

16-bit

2 байт

Longint

-2147483648..2147483648

32-bit

4 байт

/integer –бүтiн сан, shortint – қысқа бүтiн, longint – ұзын бүтiн сан/

Бүтiн типке келесi мәндер жатады:

-maxint, -maxint+1, ..., -1, 0, 1, 2, ..., maxint-1, maxint

мұнда , maxint – ЭЕМ-дегi ең үлкен бүтiн сан (ЭЕМ түрiне тәуелдi константа).

Бүтiн типтегi мәлiметтермен келесi амалдар орындалады :

1) арифметикалық:

+ қосу, Б1+Б2, нәтиже – бүтiн тип;

- азайту, Б1-Б2, нәтиже – бүтiн тип;

* - көбейту, Б1*Б2, нәтиже – бүтiн тип;

div – бүтiн сандық бөлу, Б1 div Б2, нәтиже – бүтiн тип;

mod – бүтiн сандық бөлгендегi қалдық, Б1 mod Б2, нәтиже – бүтiн тип;

/ - нақты бөлу Б1/Б2, нәтиже – нақты тип.

Соңғы үш амалды түсiндiрейiк:

3 div 4=0; 21 div 9=2; -21 div 9=-2; 21 div(-9)=-2; -21 div (-9)=2;

3 mod 5=3; 25 mod 9=7; -25 mod (-9)=-7; 25 mod (-9)=7;

2) true (ақиқат) немесе false (жалған) – нәтижесi буль типi болатын қатынас амалдары:

Б1<Б2 /Б1 кiшi Б2/; /Б1, Б2 – бүтiн сандық мәндегi өрнек. қатынас мәнi true, егер ол дұрыс болса, ал мәнi false, егер ол орындалмаса.

Б1<=Б2

Б1=Б2

Б1<>Б2

Б1>=Б2

Б1>Б2

Буль операцияларының негiзгi тағайындалуы:

NOT(керi), AND(және), OR(немесе) , XOR (немесені терістеу).

Бүтiн типтi айнымалыларды анықтау үшiн айнымалыларды баяндау бөлiмiнде стандартты идентификаторлар (мысалы integer) пайдаланылады.

Мысалы: Var i, j, k: integer; (*, div, mod) операциялары (+,-) операцияларымен салыстырғанда жоғары приоритетке жатады. Бiрдей приоритетке жататын операциялар солдан оңға қарай орындалады.

Нақты типтер

Тип аты

Мәндер диапазоны

Цифрлар саны

Жады

Single

1.5E-45..3.4E38

7-8

4 байт

Real

2.9E-39..1.7E38

11-12

6 байт

Double

5.0E-324..1.7E308

15-16

8 байт

Extended

3.4E-4932..1.1E4932

19-20

10 байт

Comp

-9.2E18..9.2E18

19-20

8 байт

Single – нақты қысқа сан;

Real – нақты сан;

Double – single типiне қарағанда екiлiк дәлдiктегi нақты сан;

Extended – ұзартылған дәлдiктегi нақты сан;

Comp – композициялық нақты сан.

Компьютердiң мүмкiншiлiгiмен анықталатын барлық нақты сандардың iшкi жиыны нақты типтi мәндер облысы болып белгiленедi. Нақты типтi айнымалыларды баяндау үшiн Var бөлiмiнде стандартты идентификатор real пайдаланады. Мысалы: var x, y, z: real;

Егер операндтың бiреуi нақты типке жатса, онда келесi операциялардың нәтижелерi де нақты типке жатады: (+), (-), (*), (/). Бөлу операциясында ғана екi операнд та бүтiн типке жатады. Көбейту және бөлу операциялары қосу және азайту операцияларымен салыстырғанда жоғары приоритетке жатады.

Символдық тип (char)

Тип аты

Мәндер диапазоны

Жады

Char

Компьютер алфавитiнiң литерлерi

1 байт

String

0..255 литерден тұратын жол

256 байт

Компьютер мүмкiншiлiгiмен анықталған таңбалар жиынының элементтерi таңбалық типтi мәндер болатын сан.

Таңбалық типтi айнымалыларды анықтау үшiн Var ctr1,ctr2: char;

Әрбiр таңбалық типтi айнымалы тек қана бiр таңбалық мәндi қабылдай алады. Таңбалық типтi мәндер жиынының элементтерi нөмiрленген деп саналады. Паскаль тiлiнiң таңбалар жиыны келесi талаптарға сай болуы керек:

  • кез-келген жиынында барлық таңбалар тұрақталған және реттелген;

  • жиынға латын алфавитiнiң барлық бас және кiшi әрiптерi енгiзiлген. Бұл жиын алфавит бойынша реттелген, бiрақ байланысты (жүйелi) болуы мiндеттi емес;

  • жиынға араб цифрлары 0, 1, 2,…,9 енгiзiлген. Бұл жиын өсу ретi бойынша реттелген және байланысты (жүйелi) болады;

  • жиынға бос орын, үтiр, нүкте және т.б. таңбалар енгiзiлген.

Тырнақша жақшаға алынған таңба таңбалық типтi константа құрайды. Латын алфавитiнiң бас әрiптерiнiң төмендегiдей орналасуы олардың реттелгенi деп қабылданған. Бұл жиын байланысты болуы мiндеттi емес: “A” < “B” < “С” ... < “Y” < “Z”.

Олай болса әрiптердiң арасында басқа таңбалар кездесуi мүмкiн. Ал цифрлардың келесi түрде “0”<”1“<”2”<...<”9” орналасуын цифрлар жиынының реттелгенi дейдi. Цифрлардың арасында бос орын болмаған жағдайда олар бiр-бiрiмен байланысты болады. Таңбалық мәндерге ешқандай стандартты операциялар (қосу, алу, көбейту т.б) анықталмаған, бiрақ символдық мәндерiн салыстырып оқу, баспаға шығару операцияларына қатыса алады және де меншiктеу нұсқауында да пайдаланылуы мүмкiн.

Логикалық тип (boolean)

Тип аты

Мәндер диапазоны

Өлшем

жады

Boolean

False, true

8 bit

1 байт

Логикалық типтi айнымалылар тек екi мәнде ғана анықталған: true (ақиқат) немесе false (жалған). Олар төмендегiдей реттелген false<true. Логикалық типтi айнымалыларды баяндау үшiн Var бөлiмiнде стандартты идентификатор Boolean пайдаланады, мысалы: Var a, b, c:Boolean;

Логикалық типтi операндтарға келесi буль амалдары анықталған:

Not – керi (терiстеу);

And – және (конъюнкция);

Or – немесе (дизъюнкция);

Xor – тең мәндiлiктi терiстеу амалы (“немесенi терiстеу”);

In – мәлiметтiң жиынға жататындығын көрсететiн амал;

Бұл операциялардың нәтижелерi логикалық типке жатады.

Not амалы (логикалық терiстеу). Not А өрнегiнiң мәнi А мәнiне керiсiнше болады. Мысалы: not(true)=false, not(false)=true;

And амалы (логикалық көбейту). A and B өрнегiнiң логикалық мәнi A және B операндыларының мәндерi true болғанда ғана ақиқат болады, ал қалған жағдайларда нәтиже true(жалған) логикалық мәнiн бередi:

<TRUE> XOR <TRUE> = <FALSE> <TRUE> XOR <FALSE>=<TRUE>

<TRUE> OR <TRUE> = <TRUE> <TRUE> OR <FALSE>=<TRUE>

<FALSE> XOR <TRUE>=<TRUE> <FALSE> XOR <FALSE>=<FALSE>

<FALSE> OR <TRUE> = <TRUE> <FALSE> OR <FALSE>=<FALSE>

Салыстыру амалдарының (=, <>, <, >, >=) нәтижелерi логикалық типке жатады. Аталған амалдардың приоритетi төмендегiдей ретпен орындалады: not, and, or. Логикалық типке келесi стандартты функциялар қолданылады: Odd(x), eoln(x), eof(x).

Егер X бүтiн тақ сан болса Odd(x) логикалық функциясының мәнi true, ал керiсiнше false. Егер Х кез келген текстiк файлдың жолының соңын белгiлейтiн символ болса логикалық функция eoln(x)=true. Егер Х кез келген файлдың соңын бiлдiретiн символ болмаған жағдайларда Eof(x) логикалық функциясы false мәнiн қабылдайды.

{Файл жолының соңын бiлдiретiн символдың ASCII–таблица тiзбегiндегi нөмiрi -10, ал файл соңын белгiлейтiн символ 28}

Саналатын (түгенделетiн) тип

Паскаль тiлiнде тек бiр стандартты түгенделетiн тип қана бар – ол логикалық тип. Сонымен қатар, программа программистiң өзiне қолайлы түгенделетiн типтi енгiзуiне болады. Түгенделетiн тип реттелген индентификатор жиынында (олар түгенделiп берiлуге тиiстi) анықталады.

Мәндердiң кез келген стандартты емес типi программада ТИПТI баяндау бөлiмiнде (TYPE) анықталуы қажет. Түгенделетiн тип типтер бөлiмiнде былай баяндалады. TYPE NT=(W1,W2,...,WN). Мұнда NT–анықталатын типтiң идентификаторы (атауы). W1,W2,...,WN – константты идентификаторлар, олар NT типтi айнымалы қабылдайтын нақтылы мәндер. Бұл мәндер реттелген, реттелу тәртiбi типтi баяндайтын идентификаторлардың орналасуымен анықталады: W1<W2<,...,<WN.

Мысалы: Type апта =(дүйсенбi, сейсенбi, сәрсенбi, бейсенбi, жұма, сенбi, жексенбi) константалық идентификаторлар жиыны екенi анықталған. Егер салыстыру операндтардың айнымалыларының типтерi бiрдей болса, онда барлық түгенделетiн типтерге келесi салыстыру амалдарын =,<>,<,<=,>,>= қолдануға болады.

Барлық скалярлы типтi айнымалыларға (real-типтен басқа) келесi стандартты функциялар қолданылады: Succ(x), Pred(x), Ord(x).

Succ(x) функциясы реттелген тiзбекте Х-ке жалғас келесi элементтi анықтайды, мысалы: Алфавит бойынша реттелген әрiптердiң тiзбегi берiлсiн. Онда Succ(x) функциясының мәнi Х әрпiнен кейiнгi әрiпке тең: Succ(b)=c; succ(m)=n.

Pred(x) функциясы реттелген тiзбектегi Х-тiң алдындағы элементтi анықтайды. Pred(m)=l, Pred(жұма)=бейсенбi.

Ord(x)-функциясы реттелген тiзбектегi Х-элементiнiң реттiк нөмiрiн анықтайды: ORD(A)=0; ORD(D)=3; ORD(жұма)=5.

Шектелген типтер

Скалярлы типтi айнымалыға ол қабылдай алатындай мәндердiң әр түрлi iшкi жиынын анықтауға болады. Айнымалының осындай түрiн анықтағанда шектелген немесе түгенделетiн типтердiң көмегiмен баяндалады: Var A: min..max;

Мұнда А-айнымалысы, min-төменгi және max-жоғарғы шектерiмен шектелген iшкi жиында анықталған. Жиынның шектерi (шекаралары) екi нүктемен бөлiнедi. А-айнымалысының негiзгi типiн анықтайтын жиынды min және max типiне сәйкес, мысалы: I-айнымалысы 1900-1995 жиынының мәндерiн қабылдау үшiн баяндау бөлiмiнде келесiдей анықталады: VAR I:1900..1995;

I-айнымалысының негiзгi типi integer, яғни жиынның шегi бүтiн константалар. Шектелген типтердi символдық және түгенделетiн типтерде де алықтауға болады. Мысалы: Type апта =дүйсенбi, сейсенбi, сәрсенбi, бейсенбi, жұма, сенбi, жексенбi;

Var жұмыс_күнi: дүйсенбi..жұма;

жұмыс_күнi айнымалысы – Апта типiне сәйкес, дүйсенбiден жұмаға дейiнгi күндердiң мәндерiн қабылдай алады.

3-лекция. Тармақталушы құрылымдарды бағдарламалау

Тармақталушы құрылымдарға бағдарлама жазу үшін Паскаль тілінде белгі бойынша көшіу операторы, шартты оператор, таңдау операторлары қолданылады. Белгі бойынша көшу операторының жалпы түрі:

Goto N;

Мұндағы N- белгі. Бұл оператор бағдарламаның орындалуын белгі тұрған жерге береді.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]