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


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

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






Оператор безумовного переходу goto





Мета роботи

Вивчити й набути навичок використання базових керувальних конструкцій та операторів безумовного переходу, умовного переходу та вибору варіанту.

2 Основні теоретичні відомості

Розгалуженим називається обчислювальний процес, якщо, залежно від певних умов, він реалізовується за однією з певних, заздалегідь передбачених, віток алгоритму.

Для програмної реалізації таких обчислень необхідно використовувати оператори передання управління, котрі дозволяють змінювати порядок виконання операторів програми. У мові Pascalдля цього передбачено інструкції: безумовного переходу - goto, умовного переходу - ifта вибору варіанта - case. Для запису умови переходу необхідно використовувати логічні (булеві) вирази.

Оператор безумовного переходу goto

Оператор goto(йти до) дозволяє передати керування в будь-яку точку коду (програми), котру позначено спеціальною міткою.

Оператор goto має вигляд:

goto<мітка >;

Мітки, на які можна передавати керування, описують ключовим словом label, після якого йде список міток. Кожна мітка може позначатися припустимим в алгоритмічній мові ідентифікатором або цілим без знака числом від 0 до 9999. Наприклад:

Labelstart, 55, second, а;

означає чотири мітки: start, 55, second, а.

Точка, в яку передається керування, позначена ім'ям мітки, після якої йдуть дві крапки й далі оператор, до якого передається керування. Наприклад,

start:S:=0;

Мітка може розташовуватись у будь-якому місці: як перед оператором goto, так і після нього.

Слід уникати передання керування ззовні в середину циклу й заборонено передавати керування до мітки, розміщеної в іншому блоці. Це може призвести до непередбачених наслідків.

Опис міток, самі мітки й оператори goto, які передають на них керування, повинні розміщуватися вмежах області видимості (блоку).

Розумне застосування оператора gotoробить структуру програми більш прозорою і спрощує її розуміння.

 

2.2 Логічні вирази

Логічні вирази - це послідовність логічних зміних, констант, відношень,

з’єднаних логічними (булевими) операціями, результатом яких є логічне

значення. Логічні значення позначаються стандартними іменами True (істина)

та False (хибність), причому True<False. Логічні константи теж мають тільки

два значення: True та False.

Логічні змінні - це змінні, які набирають одного з цих значень. У розділі

змінних вони повинні бути описані як Boolean, наприклад:

Varp,q: Boolean;

 

Стандартні функції зі значеннями логічного типу подано у таблиці 2.1.

Функція Значення функції
Odd(x) Результат дорівнює True, якщо аргумент х - непарне число, і False— у противному разі; тип х повинен бути цілим
Eoln(f) Результат дорівнює True, якщо при читанні текстового файлу J досягнуто кінця поточного рядка, і False- у противному разі
ЕоВД Результат дорівнює True, якщо при читанні текстового файлу / досягнуто його кінця, і False- у противному разі

Найпростішими логічними виразами є відношення (порівняння).

2.2.1 Операції відношення

Операції відношення використовуються для порівняння двох виразів. Вони повертають значення true(істина), якщо вказані відношення виконуються і false(хибність) - в іншому разі. Операції відношення подано в табл. 2.2.

Таблиця 2. 2 Оп ерації відношен ня

Позначення Операція Тип оператора Приклад
    = Дорівнює Прості, множини, покажчики, класи, посилання класів, ін­терфейс, упаковані рядки і=а 5=5 -»true 6=7 ->false
  о Не дорівнює Прості, множини, покажчик, класи, посилання класів, інтерфейс, рядки, упаковані рядки х<>у 6<>7 -»true 5<>5 -» false
  < Менше Прості, рядки, упаковані ряд-ки, рСЬаг a<b
  > Більше Прості, рядки, упаковані ряд-ки, рСЬаг b>x
  <= Менше або дорівнює Прості, множини, рядки, упаковані рядки, рСЬаг шах<=у
  >= Більше або дорівнює Прості, множини, рядки, упаковані рядки, рСЬаг s>=min 7>=5 —> true 5 >=5 —> true 3>=5 -» false

 

Тип результату у всіх випадках Boolean(логічний).

Операнди повинні мати сумісні типи, за винятком типів realта integer, які можуть порівнюватись один з одним. Рядки порівнюють за розширеними кодами множини символів ANSI.

Символьний тип трактують як рядки одиничної довжини. Упаковані рядки можна порівнювати лише за однакової кількості символів. Якщо упакований рядок з п символів порівнюють з типом string, то він трактується як рядок з довжиною п. Операції <, >, <= й >= можна застосувати до операндівPchar, тільки якщо обидва вказівники вказують на один й той самий масив символів.

Приклади відношень та їх результатів подано в табл. 2.3.

Таблиця 2.3 - Приклади результатів відношень

Вираз Результат
у=3 false
false<>true true
‘abc’<’abd’ true
‘abc’>’a’ true

 

2.2.2 Бупеві операції

У булевих операціях використовують операндибулевих типів і повертають результат булевого типу - Boolean(табл. 2.4):

Таблиця 2.4 – Булевы операції

Позначен­ня операцій Математичний запис Операція Тип операндів Приклад
not —і Заперечення (логічне “НІ”) Boolean not a
and л Логічне “І” Boolean у and (x>0)
or V Логічне “АБО” Boolean a or b
xor   Логічне виключне “АБО” Boolean a xorb

 

Компілятор Delphiпідтримує два режими розрахунків операцій ANDі OR: повний і скорочений. У повному режимі усі логічні вирази обчислюють до кінця, навіть якщо після розрахунків першого операнда результат визначено. У скороченому режимі розрахунок переривається, як тільки результат дорівнюватиме True. Тобто, якщо перший операнд дорівнює Trueі результатвизначено, то в скороченому режимі розрахунок перерветься без обчислень другого операнда. Операція компілятора {$В-}, що працює без додаткових вказівок, забезпечує скорочений режим розрахунків, а операція {$В+}-повний. Режим повних розрахунків можна також установити опцією CompileBooleanEvaluationу вікні компілятора.

 

2.2.3 Лорозрядні (побітові) булеві й сдвигові операції

Логічні порозрядні операції оперують з двійковими представленнями цілих чисел, тобто працюють із двійковими розрядами операндів (табл.2.5):

Таблиця 2.5 - Лорозрядні (побітові) булеві й сдвигові операції

Позначення операції Операція Тип операндів Тип результату Приклад
  not Порозрядні операції “НІ” Цілий Цілий not X
  and Порозрядне ИГ>9 Цілий Цілий х and у
  or Порозрядне “АБО” Цілий Цілий х or у
  хог Порозрядне виняткове “АБО” Цілий Цілий х хог у
  shl Порозрядний зсув вліво Цілий Цілий х shl2
  shr Порозрядний зсув вправо Цілий Цілий у shlі

 

Наприклад, X 001101

Y100001

X or Y101101

X and Y 000001

При порозряднихопераціях чинні є такі правила. Результат, що визначає not, має той самий тин, що й її операнд. Результат операцій and, or, хог мас цілий найменший тип, що включає всі значення типів обох операндів. Вирази х shlу і х shrу зміщують значення х вліво і вправо на у бітів. Це еквівалентне помноженню * на 2у. результат має той самий тип що і х.

Розглянемо приклади. Якщо операнди А і В будуть мати тип Byte, то виконання операцій при А=11, У=2 дає результати, подані в таблиці 2.6.

Таблиця 2.6 Десяткові та дв і йкові значення лог і чних операцій

Операції Десяткові значення Двійкові значення
ОперандА    
ОперандВ    
Not А    
A and В    
A or В    
А хог В    
A shl В    
A shr В    

 

Результати логічних операцій, що використовують до операндів цілого типу (порозрядно 1,0) і логічного типів (true, false), подано в таблиці 2.7.

 

Таблиця 2.7 - Результати операцій над даними цілого та логічного типу

Операнд 1 Операнд 2 NOT AND OR XOR
1, true - false
0, false - true »
0, false 0, false true 0, false 0, false 0, false
0, false 1, true true 0, false 1, true 1, true
1, true 0, false false 0, false 1, true 1, true
1,true 1,true false 1, true 1, true 0, false

 

На рисунку 2.1 зображено логічні блоки у відповідності з міжнародними стандартами.

 

 
а→→→ →a+bсхема «АБО», що реалізує операцію логічного додавання

в→

 

&
а→ →a*bсхема «І», що реалізує операцію логічного множення

в→

 

 
а→ →aсхема «НІ», що реалізує операцію інверсії

 

 

З логічних блоків складаються складні логічні пристрої. Перед побудовою логічних схем пристроїв логічну функцію мінімізують, тобто приводять до більш простого виду, користуючись співвідношеннями алгебри логіки (булевої алгебри).

Для логічних схем “АБО”, “І” та “НІ” існують технічні схеми, що реалізовують їх на реле, півпровідникових або ферритових елементів. У сучасних комп'ютерів звичайно використовують системи інтегральних елементів, у яких з метою більшої уніфікації в якості базової логічної схеми застосовують одну зі схем: “І”—”НІ” (штрих Шеффера), “АБО”-”НІ” (стрілка Пирса) або “І”-”АБО”-”НІ.

 

2.2.4 Пріоритети й асоціативність операцій

 

У складних логічних виразах послідовність розрахунків визначають звичайними способами. За відсутності дужок послідовність обчислень логічних виразів визначають за старшинством та асоціативністю операцій.

• За старшинством (пріоритетом) логічні операції поділяють у спосіб, поданий в таблиці 2.8.

 

Таблиця 2.8 - Пріоритети логічних оперaцій

Операція Пріоритет
not Перший
and, shl, shr Другий
or, xor Третій
=,<>,<,>,<=,>=   Четвертий

 

Операції з більш високим пріоритетом виконуються раніш за операції з більш низьким пріоритетом.

Якщо поряд розміщено декілька операцій з однаковими пріоритетами, то послідовність обчислень визначається асоціативно, яка у всіх операцій у ObjectPascalє однакова - зліва направо.

Наприклад: х=уorx=z

У цьому разі послідовність операцій визначають так:

x = (yorx) = z

тому що orмає вищій пріоритет, ніж операція =. Після виконання orоперація = виконається зліва направо.

Порівняно з арифметичними операціями (+, -, *, /, div, mod) операції відношення мають менший пріоритет.

Наприклад, значення відношення 2*5<=17 div3 є false, а відношення 7+3>16-4*3-true.

Слід пам'ятати, що до операндів дійсного типу не варто застосовувати операцію відношення = (дорівнює), тобто ця умова може не виконатись через неточне представлення дійсних чисел у пам'яті комп'ютера та неуникних помилок округлення при обчислюванні виразів. Тому відношення а1=а2 слід замінювати відношенням

abs(al-a2)<eps,

де eps- певна мала величина, котра характеризує похибку округлення.

Дві логічні операції можуть бути записані поряд, якщо другою з них є операція not, наприклад:

хіandnotх2

Логічні операції та операції відношення можуть зустрічатись в одному виразі. Причому відношення, що стоять зліва та справа від знаку логічної операції, має бути взято в дужки, оскільки логічні операції є вищі за пріоритетом.

За допомогою дужок можна змінювати порядок розрахунків. Наприклад, у логічному виразі

1 6 4 2 5 З

(-3>=5) ornot(7<9) and(0<=3)

цифрами зверху показано послідовність виконання операцій: результат виконання операції 1 - False, операції 2 - True, операції 3 - True, операції 4 - False, операції 5 - False, операції 6 - False. Тобто логічний вираз має значення False.

Для деяких типів у Pascalє додаткові операції, що дозволяють формувати складніші умови. Наприклад, для множини визначена операція IN(зарезервоване слово), яка перевіряє, чи входить конкретне значення в множину:

х:=[2,4,6,8,10];

Вираз 2 inх має значення true.

Вираз 5 inх має значення false.

Цей спосіб виконання перевірки більш наглядний. Наприклад, замість.

(і>=1) and(і<=10),

використовуючи операцію in, можна записати

і in[1...10]

Виконуються ці перевірки теж значно ефективніше.

 

Date: 2015-12-12; view: 416; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию