42626

ДОСЛІДЖЕННЯ СТРУКТУРНИХ ОПЕРАТОРІВ ОПЕРАТОРНОГО БАЗИСУ МОВ ПРОГРАМУВАННЯ ПАСКАЛЬ ТА СІ

Лабораторная работа

Информатика, кибернетика и программирование

Теоретичні відомості Оператор Паскаль Сі: оператори базису ::= оператор опису оператор привласнення структурний оператор оператор ::= оператор привласнення структурний оператор Структурні оператори а Складений оператор Паскаль: складений оператор ::= begin{ оператор }2end; Сі: складений оператор ::={{ оператор }2} б Оператор вибору умовна форма Паскаль: оператор вибору ::=if вираз відношення then оператор Наприклад: if flg = true then { flg – змінна...

Украинкский

2013-10-30

148 KB

8 чел.

Лабораторна  робота 9

ДОСЛІДЖЕННЯ СТРУКТУРНИХ ОПЕРАТОРІВ ОПЕРАТОРНОГО

БАЗИСУ МОВ ПРОГРАМУВАННЯ ПАСКАЛЬ ТА СІ

Мета лабораторної роботи - вивчити устрій структурних операторів мов Паскаль та Сі та дослідити можливості та особливості застосування різноманітних форм структурних операторів.

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

Оператор

Паскаль, Сі:

<оператори базису>::= <оператор опису>|<оператор привласнення>|

                                     <структурний оператор>

<оператор>::=<оператор привласнення>|<структурний оператор>

Структурні оператори

а) Складений оператор

Паскаль:

<складений оператор>::= begin{<оператор>}2end;

Сі:

<складений оператор>::={{<оператор>}2}

б) Оператор вибору (умовна форма)

Паскаль:

<оператор вибору>::=if<вираз відношення>then<оператор>

Наприклад:

if flag = true then   { flag – змінна логічного типу}

 begin

 iA := iA + 10; { iA – змінна цілого типу}

 flag := false;

 end;

Сі:

<оператор вибору>::=if (<вираз відношення>)<оператор>

<вираз відношення>::=<вираз><операция відношеня><вираз>

Наприклад:

if (flag == 1)   // flag – змінна цілого типу

{

iA = iA + 10;

 flag = 0;

} 

в) Оператор вибору (альтернативна форма)

Паскаль:

<оператор вибору>::=if<вираз відношення>then<оператор>else<оператор>

Наприклад:

if flag = true

iA:= iA * 10;

else

begin

 iA := iA + 10;

 flag := true;

end;

Сі:

<оператор вибору>::=if (<вираз відношення>)<оператор>;else<оператор>

Наприклад:

if (flag == 1)

{

iA = iA * 10;

flag = 0;

};

else

{

iA = iA + 10;

flag = 1;

}

г) Оператор вибору (охоронна форма/перемикач)

Паскаль:

<оператор вибору>::= case< вираз >of{<вариант вибору>}0  

                                    {else<оператор>}01  end

<вариант вибору>::={<літерал {..<літерал>}0 {,}0 }1: <оператор>

Наприклад:

case cB of     { cB – змінна символьного типу}

‘A’:   iA := iA +10;

‘B’, ‘C’: iA := iA +20;

‘D’:   iA := iA +30;

else  iA := iA +100;

end;

Сі:

<оператор вибору>::= switch (< вираз >){{ case<вариант вибору> }1

                                        {default: <оператор>}01  }

<вариант вибору>::=<R - вираз>: <оператор> break;

Наприклад:

switch cB

{

case ‘A’:  {iA = iA +10;  break;}

case ‘B’: {iA = iA +20;  break;}

case ‘C’:  {iA = iA +30;  break;}

default:  iA = iA +100;

}

д) Оператор повторення (форма repeat-until / do-while)

Паскаль:

<оператор повторення>::= repeat <оператор>until<вираз відношення>

Наприклад:

iMounth := 1;  { iMounth – змінна цілого типу}

repeat    { iAccount – змінна дійсного типу}

 iAccount := iAccount + iAccount/100;

iMounth := iMounth + 1;

until iMounth<=12;

            

Сі:

<оператор повторення>::= do<оператор>while(<вираз відношення>)

Наприклад:

iMounth = 1;  

do

{    

 iAccount = iAccount + iAccount/100;

iMounth = iMounth + 1;

}

while (iMounth<=12);

е) Оператор повторення (форма while-do)

Паскаль:

<оператор повторення>::= while<вираз відношення>do<оператор>

Наприклад:

iMounth := 1;

while iMounth <= 12 do

begin    

 iAccount := iAccount + iAccount / 100;

iMounth := iMounth + 1;

end;

Сі:

<оператор повторення>::= while(<вираз відношення>)<оператор>

Наприклад:

iMounth = 1;

while (iMounth <= 12)

{    

 iAccount = iAccount + iAccount/100;

iMounth = iMounth + 1;

}

ж) Оператор повторення (форма for-step-do)

Паскаль:

<оператор повторення>::=  for < оператор привласнення >to|downto

                                               <вираз> {step<вираз> }01do<оператор>

Наприклад:

for iMounth := 1 to 12 do

begin    

 iAccount := iAccount + iAccount / 100;

if iMounth > 6 then

 iAccount := iAccount + iAccount * 0.05;

end;

        

Сі:

<оператор повторення>::=  for ({< оператор привласнення >}01;

                {<вираз відношення>}01;{< оператор привласнення >}01){<оператор>}01

Наприклад:

for (iMounth = 1; iMounth <= 12; iMounth = iMounth + 1)

{    

 iAccount = iAccount + iAccount / 100;

if (iMounth > 6)

 iAccount = iAccount + iAccount * 0.05;

}

Правила написання програм

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

При написанні операторів вибору розташовуйте частини “then” і “else” окремо, розміщуючи їхній вміст окремо, кожний оператор на окремому рядку програми.

Розташовуйте кожний оператор у варіанті вибору (охоронна форма) на окремому рядку.

При написанні операторів повторення (циклу) розташовуйте тіло циклу окремо від заголовку, а в тілі циклу кожний оператор розташовуйте на окремому рядку.

Не використовуйте, якщо не потрібно, дужок складеного оператора.

Не ставте однакових операторів у гілці операторів вибору.

Не використовуйте охоронну форму оператора вибору, замінюйте її альтернативною.

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

Не вводьте у цикл операторів, не зв'язаних з повторенням.

Завдання

  1.  Вивчити устрій (синтаксис та семантику) наступних операторів Паскаль та Сі: складеного, вибору і повторення.
  2.  Написати програми на мовах Паскаль та Сі, що демонструють застосування різноманітних форм операторів вибору та повторення.

4. Написати програми на мовах Паскаль та Сі, які моделюють на бітовому рівні операції згідно з варіантом (табл.1). Для перевірки вірності роботи програм використати значення з варіанта.

Таблиця 1

варіанта

Мова

Операція

Операнд

Значення для перевірки

1

Паскаль

Лічильник збільшення на 1

1

31

56

-25

Сі

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

1

44

46

15

2

44

-7

30

2

Паскаль

Лічильник зменшення на 1

1

16

61

-37

Сі

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

1

100

-8

132

2

100

125

131

3

Паскаль

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

1

84

-77

63

2

83

-77

127

Сі

Операція додавання +

1

-10

15

31

2

12

41

32

4

Паскаль

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

1

88

34

23

2

88

2

57

Сі

Лічильник збільшення на 1

1

63

-18

92

5

Паскаль

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

1

11

84

61

2

11

-2

107

Сі

Лічильник зменшення на 1

1

-255

94

46

6

Паскаль

Операція додавання +

1

-52

31

111

2

18

32

49

Сі

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

1

-2

35

62

2

2

53

62

7

Паскаль

Лічильник збільшення на 1

1

-87

511

183

Сі

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

1

100

-8

132

2

100

125

131

8

Паскаль

Лічильник зменшення на 1

1

-24

128

13

Сі

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

1

0

36

16

2

-7

136

16

9

Паскаль

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

1

33

-6

26

2

117

-10

26

Сі

Лічильник збільшення на 1

1

-128

45

63

10

Паскаль

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

1

-1

94

537

2

-12

305

537

Сі

Лічильник зменшення на 1

1

0

-15

138

11

Паскаль

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

1

-57

124

1

2

-57

-10

2

Сі

Операція додавання +

1

82

229

-3

2

46

110

151

12

Паскаль

Операція додавання +

1

141

-12

173

2

115

205

347

Сі

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

1

-21

79

115

2

-21

80

41

13

Паскаль

Лічильник збільшення на 1

1

-43

75

63

Сі

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

1

48

69

24

2

48

78

25

14

Паскаль

Лічильник зменшення на 1

1

-92

16

62

Сі

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

1

54

38

143

2

54

40

129

15

Паскаль

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

1

211

183

86

2

211

182

134

Сі

Операція додавання +

1

69

48

53

2

-73

24

19

Методичні вказівки

Для моделювання на бітовому рівні арифметичних операцій та операцій відношення необхідно вміти вирішувати наступні задачі:

- визначати значення окремих бітів операнду(ів);

- формувати результат шляхом встановлення в 0 чи 1 певних бітів результуючого значення.

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

Для визначення значення окремого n-го біту (sizeof(тип значення) >= n >= 0) операнду необхідно використовувати маску, що дорівнює 1, та бітові операції «І» та «зсув ліворуч». Наприклад, щоб дізнатись значення п’ятого біту вмісту цілої змінної iA необхідно виконати наступні перетворення:

iBitA := iA and (1 shl 5)  (Паскаль) або iBitA = iA & (1 << 5) (Сі).

Якщо значення iBitA дорівнюється 0, п’ятий біт числа iA також є рівним 0, якщо будь якому додатному значенню, біт дорівнюється 1.

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

Наприклад:

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

iA = 2510 = 110012

iBitA = iA and (1 shl 4) = 16 => 1

=> 1<>0 => iA<>iB

iB =   910 = 010012

iBitB = iB and (1 shl 4) = 0 => 0

Для вирішення завдання моделювання операцій додавання та лічильника недостатньо вміти визначати значення окремих бітів операндів, але потрібно формувати результуюче значення, використовуючи його бітове представлення. Для цього використовуються маска та бітові операції «зсув ліворуч», «АБО», «АБО, що виключає»:

Наприклад:

Операція додавання +

iA  = 2510 =   110012

iB  =   910 =   010012

iSum  = 3410 = 1000102

Результат iSum формується встановленням в 1 першого та п’ятого бітів, тобто:

1) iSum = 0,    iSum = 010 = 02

2) iSum = iSum or (1 shl 1), iSum = 210 = 000102

3) iSum = iSum or (1 shl 5), iSum  = 3410 = 1000102

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

Наприклад, при зменшені числа на одиницю в результуючому значенні всі біти, що дорівнюються 0, починаючи з молодшого, та перший слідуючий за ними біт, що дорівнюється 1, інвертуються, а старші залишаються незмінними. Для інвертування відповідних бітів використовується операція «АБО, що виключає».

Наприклад:

Лічильник зменшення на 1

iA  = 2510 =   110012

iA – 1  = 2410 =   110002

1) iA = iA xor (1 shl 0),  iA = 2410 = 110002

iA  = 2410 =   110002

iA – 1  = 2310 =   101112

1) iA = iA xor (1 shl 0),  iA = 2510 = 110012

2) iA = iA xor (1 shl 1),  iA = 2710 = 110112

3) iA = iA xor (1 shl 2),  iA = 3110 = 111112

4) iA = iA xor (1 shl 3),  iA = 2310 = 101112

Контроль знань та вмінь

Таблиця вмінь

Таблиця 2

Бінарні операції

лічильник

відношення

додавання

+

-

=

>

<

+

с

п

с

п

с

п

с

п

с

п

с

п

Контрольні запитання

  1.  Що таке система обчислення, позиційна система обчислення?
  2.  Визначте десяткову, вісімкову, шістнадцяткову, двійкову системи обчислення?

Як здійснюється перетворення значень, наведених у різних системах обчислення?

Наведіть загальні поняття подання значень в ЕОМ.

Наведіть подання значень з фіксованою точкою.

Наведіть подання негативних значень.

Що таке доповнення і для чого воно використовується?

Що таке плаваюча точка, дайте загальне поняття?

Наведіть точність арифметики в системі з плаваючою точкою.

Як здійснюється подання шістнадцяткових значень?

Як здійснюється подання символьних значень?


 

А также другие работы, которые могут Вас заинтересовать

62412. Общество как система. Подсистемы общества и их взаимосвязь 280.21 KB
  Подсистемы общества и их взаимосвязь Время 2 часа Вопросы: Общество как целостная динамичная система. Краткая характеристика подсистем общества и их взаимосвязь Первый вопрос: Общество как целостная динамичная система Социология наука изучающая общество.
62414. ПОНЯТИЕ ОБЩЕСТВЕННОГО ПРОГРЕССА 27.5 KB
  Общественный прогресс – совокупность всех поступательных изменений в обществе, его развитие от простого к сложному, переход с более низкого уровня на более высокий. Периоды развития общества: прогресс (от лат. progressus – движение вперед) – направление развития, для которого характерен переход от низшего к высшему...