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.  Визначте десяткову, вісімкову, шістнадцяткову, двійкову системи обчислення?

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

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

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

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

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

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

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

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

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


 

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

13663. Берне Л. Без многого может обойтись человек, только не без человека 15.56 KB
  Без многого может обойтись человек только не без человека Л. Берне Я считаю что высказывание Людвига Берне немецкого публициста и писателя о том что без многого может обойтись человек только не без человека верно и сохраняет свою актуальность сегодня поскольку о
13664. Жениться - это значит наполовину уменьшить свои права и вдвое увеличить свои обязанности 16.27 KB
  Жениться это значит наполовину уменьшить свои права и вдвое увеличить свои обязанности. А. Шопенгауэр А. Шопенгауэр выдающийся философ нового времени был пессимистом. Он считает что женитьба и создание семьи лишь увеличивает обязанности. Семья это объединени...
13665. Индивидом рождаются, личностью становятся, индивидуальность – отстаивают 16.52 KB
  Индивидом рождаются личностью становятся индивидуальность – отстаивают. А.Г.Асмолов Личностью не родятся личностью становятся. А.Н. Леонтьев Фундаментальная цель жизни человека – развить и выразить себя. Но ребенок не самодостаточен. Он слаб и физически и духовно ...
13666. Дарендорф. Кто умеет справиться с конфликтами путем их признания, берет под свой контроль ритм истории 14.32 KB
  Кто умеет справиться с конфликтами путем их признания берет под свой контроль ритм истории. Р.Дарендорф. Зададимся вопросом: А что значит конфликт Ученые дают такие варианты определений Конфликты представляют собой особый тип социального взаимодействия субъе...
13667. Личность – это человек как носитель сознания 13.9 KB
  Личность – это человек как носитель сознания К.К. ПлатоновЧеловек вечная проблема. Наши предки считали что человек предназначен для жизни бесконечной. И что свою суть он должен познавать в течение всей свой земной жизни а может быть и за пределами ее. И сейчас немало ...
13668. Личность человека, ни в каком смысле не является предсуществующей по отношению к его деятельности, как и его сознание, она ею порождается 13.85 KB
  Личность человека ни в каком смысле не является предсуществующей по отношению к его деятельности как и его сознание она ею порождается А.Н. ЛеонтьевЛеонтьев Алексей Николаевич советский психолог занимавшийся проблемами сознания и деятельности.Личность это конкр
13669. Люди рождаются только с чистой природой, лишь потом отцы делают их иудеями, христианами или огнепоклонниками 14.77 KB
  Люди рождаются только с чистой природой лишь потом отцы делают их иудеями христианами или огнепоклонниками. Саади Сложно не согласиться с данным высказыванием. Человек существо биосоциальное. От рождения мы обладаем по словам поэта Саади чистой природой. Мале...
13670. Люди существуют друг для друга 16.04 KB
  Люди существуют друг для друга Марк АврелийЧеловек по своей природе существо социальное. Такими нас сделала природа: с самых древних времен люди живут социумом т.е. коллективом. И даже когда не было создано речи люди общались с помощью жестов и звуков. Человек не мож
13671. Национализм малых народов есть проявление изоляции и самодовольства. Национализм больших народов есть империалистическая экспансия 14.14 KB
  Национализм малых народов есть проявление изоляции и самодовольства. Национализм больших народов есть империалистическая экспансия. Н. Бердяев На протяжении развития общества существовало много различных мнений по поводу того какой этнос считать нацией. Так н...