- •Уводзіны Ключавыя палажэнні
- •Развіццё моў камп’ютарнага праграміравання
- •Эвалюцыя мовы Pascal
- •Структурная метадалогія распрацоўкі праграм Алгарытм
- •Асноўныя этапы рашэння задач на эвм
- •Блок-схемы
- •Структураграмы
- •Тэсціраванне праграм
- •Адладка праграм
- •Структурнае праграміраванне і дакладнасць праграм
- •Асноўныя канструкцыі структур кіравання
- •Метады распрацоўкі праграм
- •Праграміраванне зверху ўніз (ад агульнага да асобнага)
- •Модульнае праграміраванне
- •Праграміраванне знізу ўверх
- •Структурнае кадзіраванне
- •Арыфметыка эвм Сістэмы злічэння
- •Пераклады лікаў з адной сістэмы злічэння ў другую
- •Пераклад цэлых дадатных лікаў з сістэмы злічэння з асновай «p» у сістэму злічэння з асновай «q»
- •Пераклад правільных дробаў з сістэмы злічэння з асновай «p» у сістэму злічэння з асновай «q»
- •Пераклад змешаных дробаў
- •Формы прадстаўлення даных
- •Формы прадстаўлення лікаў у персанальным камп’ютары
- •Захаванне лікаў з фіксаванай кропкай
- •Захаванне цэлых лікаў
- •Алгарытм прадстаўлення адмоўнага ліку ў адваротным кодзе
- •Прынцыпы захавання лікаў з плаваючай кропкай
- •Фарматы лікаў з плаваючай кропкай арыфметычнага супрацэсара ibm pc/aт 8087
- •Сродкі алгарытмічнай мовы Pascal Агульная характарыстыка алгарытмічных моў
- •Базавыя элементы мовы Pascal
- •Алфавіт
- •Лексічная структура мовы
- •Агульная структура Pascal-праграмы
- •Простыя даныя мовы Pascal і работа з імі Тыпы звестак
- •Канстанты і пераменныя
- •Абсалютныя пераменныя
- •Цэлалікавыя даныя
- •Бітавая арыфметыка
- •Дзеянні бітавай арыфметыкі
- •Сапраўдныя даныя
- •Аперацыі над сапраўднымі данымі
- •Выразы мовы
- •Літарныя даныя
- •Функцыі
- •Булеўскія даныя
- •Даныя адраснага тыпу
- •Даныя карыстальніцкага тыпу
- •Даныя пералічальнага тыпу
- •Даныя інтэрвальнага тыпу
- •Элементарныя сродкі па рабоце з данымі Наданне значэння даным
- •Найпрасцейшае вызначэнне працэдур і функцый
- •Параметры
- •Знаёмства з файлавай сістэмай
- •Файлавы тып
- •Тэкставыя стандартныя файлы
- •Увод даных розных тыпаў
- •Вывад даных розных тыпаў
- •Вывад сімвалаў
- •Вывад радковых даных
- •Вывад лагічных значэнняў
- •Вывад цэлалікавых значэнняў
- •Вывад даных сапраўднага тыпу
- •Базавыя аператары мовы і метады праграміравання Аператары
- •Простыя аператары
- •Аператар безумоўнага пераходу goto
- •Аператар выкліку працэдуры
- •Пусты аператар
- •Састаўны аператар
- •Аператары выбару
- •Умоўны аператар
- •Метады і прыёмы праграміравання
- •Аператар варыянта
- •Прыклады праграм
- •Аператары паўтарэння
- •Аператар паўтарэння for
- •Аператар паўтарэння repeat
- •Аператар паўтарэння while
- •Хуткая ступень
- •Ітэрацыйныя алгарытмы вышэйшай матэматыкі
- •Структуры даных і праца з імі сродкамі мовы Pascal Парадкавыя тыпы
- •Мноствы
- •Тыпізаваныя канстанты тыпу «мноства»
- •Дзеянні над масівамі
- •Дзеянні над элементамі масіву
- •Пераменныя тыпу «масіў» са стартавым значэннем, ці тыпізаваныя канстанты-масівы
- •Канстанты з тыпам «масіў»
- •Камбінаваны тып «запісы»
- •Змяненне (прывядзенне) тыпаў і значэнняў
- •Радкі сімвалаў
- •Наданне значэння радкам
- •Радковыя выразы
- •Рэдагаванне радкоў
- •Пераўтварэнне радкоў
- •Механізмы структуравання праграм Працэдуры і функцыі
- •Функцыі карыстальніка
- •Параметры
- •Параметры-значэнні
- •Параметры-пераменныя
- •Прынцып лакалізацыі
- •Пабочны эфект
- •Рэкурсія і ітэрацыі
- •Параметры без тыпу
- •Працэдуры і функцыі як параметры. Працэдурныя тыпы
- •Пераменныя – працэдуры і функцыі
- •Падпраграмы ў модулях
- •Выкарыстанне модуля
- •Стандартныя бібліятэчныя модулі
- •Працэдуры кіравання праграмай
- •Эфектыўнасць праграм
- •Аптымізацыя ў час кампілявання
- •Індэксацыя
- •Выкарыстанне цыклаў
- •Арганізацыя цыклаў
- •Аптымізацыя цыклаў
- •Літаратура
Бітавая арыфметыка
Бітавая, або паразрадная, арыфметыка добра развіта ў мове Pascal. Неабходнасць у ёй узнікае, калі трэба працаваць не з дзесятковымі значэннямі лікаў, а з іх двайковым уяўленнем. Бітавыя аперацыі дазваляюць параўноўваць асобныя біты двух лікаў, вылучаць асобныя фрагменты ў ліку, замяняць іх.
Бітавыя аперацыі над сапраўднымі лікамі не прымяняюцца. Яны прымяняюцца толькі над цэлымі тыпамі – Byte, Shortint, Word, Integer, Longint.
Агульная формула для значэнняў даных бяззнакавых тыпаў Byte (1 байт) і Word (2 байты) мае наступны выгляд:
Byte: значэнне ;
Word: значэнне .
Значэнні разрадаў , , ..., роўныя або 0, або 1, адпаведна множацца на вагу разраду. Адсюль атрымліваем дыяпазон уяўлення:
Byte:
Word:
Унутранае адрозненне маюць уяўленні цэлых тыпаў са знакамі Shortint, Integer, Longint. Самы левы біт адводзіцца пад знак, для адмоўнага ліку ён роўны 1, для дадатнага – 0.
Можна запомніць формулу перакладу з 2-й с/зл у іншую сістэму злічэння для тыпаў Shortint (1 байт), Integer (2 байты), Longint (4 байты):
Shortint: значэнне ;
Integer: значэнне ;
Longint: значэнне .
Адсюль дыяпазон уяўлення лікаў:
а) дадатныя Integer (2 байты):
б) адмоўныя Integer (2 байты) (найменшае атрымаем, калі нічога не будзем дадаваць):
в) дадатныя Shortint (1 байт):
г) адмоўныя Shortint (1 байт):
Дзеянні бітавай арыфметыкі
Першая група паразраднай арыфметыкі – гэта лагічныя аперацыі над бітамі.
Аперацыі |
Назва |
Форма запісу |
Прыярытэт |
Тып |
NOT |
Паразраднае адмаўленне |
NOT A |
1 (вышэйшы) |
Унарны |
AND |
Лагічнае множанне (і) |
A1 AND A2 |
2 |
Бінарны |
OR |
Лагічнае складанне (ці) |
A1 OR A2 |
3 |
|
XOR |
Якая выключае «ці» |
A1 XOR A2 |
4 (ніжэйшы) |
NOT – паразраднае адмаўленне – «пераварочвае» значэнне кожнага біта на процілеглае.
Прыклад. Няхай A = 01101100. Тады NOT A = 10010011.
AND, OR, XOR – лагічныя аперацыі, выконваюцца паразрадна ў адпаведнасці з наступнай табліцай тоеснасці.
A |
B |
A AND B |
A OR B |
A XOR B |
A XOR B XOR B |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
Прыклад. Няхай , і X, Y – пераменныя тыпу Shortint. Пакажам, што .
Рашэнне:
Заўвага. Аперацыя AND у 99 % выпадкаў патрэбна для дзвюх мэт: 1) праверыць наяўнасць канкрэтных бітаў ці 2) зануліць некаторыя з іх.
Калі выконваецца ўмова (X and 32) = 32, тады ў пятым біце пераменнай Х ёсць адзінка (адзінка ў пятым біце дае лік 25 = 32).
Можна праверыць наяўнасць адразу некалькіх уключаных бітаў, напрыклад пятага, другога і нулявога. Атрымаем лік 25 + 22 + 20 = 37. Калі (X and 37) = 37, то так яно і ёсць.
Калі трэба зануліць (выключыць) нейкі біт у пераменнай, тады трэба падрыхтаваць лік, у якім гэты біт нулявы:
– выключылі трэці біт, бо 8 = 23;
– выключылі трэці і сёмы біты, бо 23 = 8, 27 = 128.
Лагічнае складанне OR з поспехам выкарыстоўваецца пры ўстаноўцы ў значэнне 1 (уключэнні) асобных бітаў двайковага ўяўлення цэлых лікаў: – уключылі чацвёрты, першы і нулявы біты, бо 24 = 16, 21 = 2, 20 = 1.
XOR, якое выключае «ці» (або параўнанне па модулі 2), зварочвае 0, калі абодва аргументы роўныя, і 1 – калі не.
Наступная група паразрадных аперацый – цыклічныя зрухі.
Аперацыя |
Назва |
Форма запісу |
shl |
Цыклічны зрух на N пазіцый улева (l) |
A shl N |
shr |
Цыклічны зрух на N пазіцый управа (r) |
A shr N |
Прыярытэт аперацый – як у .
Сутнасць аперацый і аднолькавая: яны зрушваюць двайковую паслядоўнасць значэння A на N бітаў адпаведна ўлева або ўправа. Пры гэтым біты, якія знікаюць за краем разраднасці, губляюцца, а разрады, якія вызваліліся, запаўняюцца нулямі. Рэалізацыя аперацый і залежыць ад кампілятара.
паколькі ;
паколькі
У даных тыпу Byte, Shortint зрушваецца поле з 8 бітаў; тыпу Word, Integer – 16 бітаў; Longint – 32 біты. Браць N больш за гэтыя велічыні або адмоўным бяссэнсава – вынікам будзе 0.
Аперацыя можа замяняць множанне гэтых лікаў на ступені двойкі, пры гэтым не ўзнікае «перапаўнення», але можам атрымаць дрэнны вынік – прападзе старэйшы біт. Напрыклад: j shl 3 = j*8, а shr – цэлалікавае дзяленне на ступені двойкі; j shl 1 = [j/2],