Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОАиП Практикум I-I.doc
Скачиваний:
111
Добавлен:
26.03.2015
Размер:
1.65 Mб
Скачать

Учреждение образования

«БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ»

Н. Н. Пустовалова, Н. В. Пацей

Основы алгоритмизации и программирования лабораторный практикум

1 Семестр

Минск 2014

ПРЕДИСЛОВИЕ

Практикум содержит задания для выполнения лабораторных работ на основе приложения Microsoft Visual Studio 2010. В каждой работе имеются краткие теоретические сведения по рассматриваемым вопросам.

Преподаватель определяет, какие лабораторные работы должны выполнять студенты и в каком объеме. Предполагается, что выполнение большинства лабораторных работ занимает у студентов два академических часа. Выполнение некоторых лабораторных работ занимает от четырех до шести академических часов.

Для облегчения процесса отладки программ удобнее записывать каждый оператор в отдельной строке. Но в данном пособии программы представлены в сжатом виде, поскольку такое отображение программ дает возможность видеть весь текст на одной странице и облегчает анализ алгоритмов.

Задания для выполнения лабораторных работ содержат также кнопки, при нажатии на которые открываются тесты, предназначенные для контроля знаний студентов. Тестирование происходит по команде преподавателя и занимает несколько минут. Для работы тестирующих программ предварительно в приложении Word надо разрешить использование макросов. При этом тексты ответов на формах располагаются каждый раз случайным образом, и ответить на вопросы можно только один раз, так как после нажатия на кнопку «Результаты» форма с вопросами и вариантами ответов исчезает.

Для оформления лабораторных работ используется приложение Word. Каждая работа должна содержать название работы, условия задач, алгоритмы, тексты разработанных программ, результаты.

Оглавление

Лабораторная работа № 1. Системы счисления

Лабораторная работа № 2. Способы представления алгоритмов

Лабораторная работа № 3. Основные элементы языка С++. Visual Studio 2010

Лабораторная работа № 4. Ввод и вывод информации

Лабораторная работа № 5. Разветвляющиеся программы

Лабораторная работа № 6. Циклические программы

Лабораторная работа № 7. Отладка программ

Лабораторная работа № 8. Вычисление сумм, произведений, экстремумов

Лабораторная работа № 9. Алгоритмы вычисления интегралов и решения уравнений

Лабораторная работа № 10. Одномерные массивы

Лабораторная работа № 11. Указатели и ссылки

Лабораторная работа № 12. Обработка символьной информации

Лабораторная работа № 13. Многомерные массивы

Лабораторная работа № 14. Структура и назначение функций

Лабораторная работа № 15. Массивы и ссылки при работе с функциями

Лабораторная работа № 16. Динамические массивы

Лабораторная работа № 1. Системы счисления

При организации вычислительных процессов в компьютерах используются десятичная система счисления (с/с), двоичная, восьмеричная и шестнадцатеричная

Задание

Краткие теоретические сведения

1. Перевести несколько чисел (например: 12, 77, 436 и др.) из восьмеричной системы счисления в двоичную.

Перевести несколько чисел (например: B8, 359, AA, 81 и др.) из шестнадцатеричной системы счисления в двоичную.

Д

Десятич-

ная

 с/c

Двоич-

ная

с/c

Восьме-

рич-

ная с/c

Шестнад-

цатерич-

ная с/c

0

0

0

0

1

1

1

1

2

10

2

2

3

11

3

3

4

100

4

4

5

101

5

5

6

110

6

6

7

111

7

7

8

1000

10

8

9

1001

11

9

10

1010

12

А

11

1011

13

B

12

1100

14

C

13

1101

15

D

14

1110

16

E

15

1111

17

F

16

10000

20

10

17

10001

21

11

ля перевода числаиз 8-й и 16-й в 2-ю с/c надо каждую цифру числа заменить эквивалентной ей двоичной триадой (из таблицы слева) или тетрадой (четверкой цифр).

Пример: 502(8 c/c) = 101 000 010(2 c/c)

2. Перевести несколько чисел (например: 101111001, 0110, 011 и др.) из двоичной системы счисления в восьмеричную.

Перевести несколько чисел (например: 1111, 10101010 и др.) из двоичной системы счисления в шестнадцатеричную.

Для перевода числа из 2-й с/c в 8-ю и 16-ю нужно разбить целую часть числа влево от  последнего разряда или от запятой (дробную часть числа – вправо от запятой) на триады или тетрады, и каждую такую группу заменить соответствующей

восьмеричной или шестнадцатеричной цифрой. В случае необходимости неполные триады дополняются нулями.

Пример: 1 111 110(2 c/c)  = 001 111 110(2 c/c) = 176(8 c/c)

0011 1101 0101, 1100(2 c/c) = 3D5,C(16 c/c)

3. Перевести несколько чисел (например: 1011(2 c/c), 36,02(8 c/c) , и др.) из разных систем счисления в десятичную.

Для перевода из произвольной системы счисления в десятичную надо учесть следующее обстоятельство: пусть имеется система счисления с основанием k и некоторое число a1 ...an в этой системе счисления, где a1, . . , an – цифры этого числа. Данное число можно представить в виде: a1  kn –1+a2  kn – 2+...+an  k0

Пример: 110011(2 c/c) = 1 ∙ 10101+1 ∙ 10100+0 ∙ 1011+0 ∙ 1010+1 ∙ 101+1 ∙ 10(2 c/c)=

=1∙ 25+1∙ 24+0∙ 23+0∙ 22+1∙ 21+1∙ 20 (10 c/c)= 32 + 16 + 2 + 1 = 51(10 c/c),

1216,04(8 c/c) = 1 ∙ 83 + 2 ∙ 82 + 1 ∙ 81 + 6 ∙ 80+4 ∙ 8–2= 512 + 128 + 8 + 6 + 0,0625 = 654,0625(10 c/c)

4. Перевести несколько чисел (например: 153, 236 и др.) из десятичной системы счисления в двоичную.

Здесь алгоритм является обратным к алгоритму, рассмотренному выше, т. е. исходное число делится на основание с/с, в которую требуется перевести число.

Надо разделить исходное число на основание новой с/c, зафиксировать остаток от деления и частное. Затем частное снова разделить на основание с/с и зафиксировать остаток от деления. Процесс деления частных продолжать до тех пор, пока частное не станет меньше основания с/с. Все полученные в процессе деления остатки от деления и последнее частное будут образовывать цифры нужного результата в обратном порядке.

Например, 25(10 c/c) = 11001(2 c/c)  = 1 ∙ 24 + 1 ∙ 23 + 0 ∙ 22 + 0 ∙ 21 + 1 ∙ 20 = 25(10 c/c).

5. Сложить и умножить различные числа в двоичной системе счисления, например: 11 и 101, 10000000100 и 1101010 и др.

При сложении необходимо помнить, в какой системе счисления введутся расчеты. Так, если получаем число два при сложении чисел в 2 с/с, то заменяем его на 10, т.к. цифры 2 в двоичной с/с нет. При выполнении арифметических операций в системе счисления с основанием r необходимо иметь соответствующие таблицы сложения и умножения. Ниже представлены таблицы сложения и умножения для r = 2:

+Сложение

0

1

 

×Умножение

0

1

0

0

1

 

0

0

0

1

1

10

 

1

0

1

10000000100(2 c/c) + 111000010(2 c/c) = 10111000110(2 c/c)

100111(2 c/c) × 1000111(2 c/c) = 101011010001(2 c/c)

6. Выполнить задания из таблицы, представленной ниже в соответствии с вариантом. Номер варианта определяет преподаватель. Результаты оформить в документе Word.

варианта

Условие

1

Выполнить перевод чисел

122(8 c/c) → ? (2 c/c) → ? (16 c/c) ; 110101(2 c/c) → ? (10c/c); 65(10 c/c) → ? (2 c/c)

0, 25(10 c/c) → ? (8 c/c)   (получить три знака после запятой в восьмеричном представлении)

Выполнить арифметическую операцию: 110,100(2 c/c) – 100,001(2 c/c)

2

Выполнить перевод чисел

212(8 c/c) → ? (2 c/c) → ? (16 c/c); 110011(2 c/c) → ? (10c/c); 322(10 c/c) → ? (2 c/c)

0, 21(10 c/c) → ? (8 c/c) (получить четыре знака после запятой в восьмеричном представлении)

Выполнить арифметическую операцию: 1111(2 c/c) – 101(2 c/c) 

3

Выполнить перевод чисел

25 (8 c/c) → ? (2 c/c) → ? (16 c/c); 111111(2 c/c) → ? (10c/c); 122(10 c/c) → ? (2 c/c)

0, 35(10 c/c) → ? (8 c/c) (получить три знака после запятой в восьмеричном представлении)

Выполнить арифметическую операцию: 111001(2 c/c) – 10100(2 c/c) 

4

Выполнить перевод чисел

332(8 c/c) → ? (2 c/c) → ? (16 c/c); 1011(2 c/c) → ? (10c/c); 11111(10 c/c) → ? (2 c/c)

0, 115(10 c/c) → ? (8 c/c) (получить три знака после запятой в восьмеричном представлении)

Выполнить арифметическую операцию: 11111(2 c/c) + 11111(2 c/c) 

5

Выполнить перевод чисел

11(8 c/c) → ? (2 c/c) → ? (16 c/c); 1111(2 c/c) → ? (10c/c); 168(10 c/c) → ? (2 c/c)

0, 347(10 c/c) → ? (8 c/c) (получить три знака после запятой в восьмеричном представлении)

Выполнить арифметическую операцию: 10,100(2 c/c) – 1,001(2 c/c) 

6

Выполнить перевод чисел

1005(8 c/c) → ? (2 c/c) → ? (16 c/c); 10101(2 c/c) → ? (10c/c); 152(10 c/c) → ? (2 c/c)

0, 98(10 c/c) → ? (8 c/c) (получить четыре знака после запятой в восьмеричном представлении)

Выполнить арифметическую операцию: 100100,10(2 c/c) + 100001(2 c/c) 

7

Выполнить перевод чисел

45(8 c/c) → ? (2 c/c) → ? (16 c/c); 11101(2 c/c) → ? (10c/c); 43(10 c/c) → ? (2 c/c)

0, 23(10 c/c) → ? (8 c/c) (получить три знака после запятой в восьмеричном представлении)

Выполнить арифметическую операцию: 1110001(2 c/c) – 10001(2 c/c) 

8

Выполнить перевод чисел

106(8 c/c) → ? (2 c/c) → ? (16 c/c); 10011001(2 c/c) → ? (10c/c) 24(10 c/c) → ? (2 c/c)

0, 11(10 c/c) → ? (8 c/c) (получить три знака после запятой в восьмеричном представлении)

Выполнить арифметическую операцию: 10011001(2 c/c) + 11001(2 c/c) 

9

Выполнить перевод чисел

31(8 c/c) → ? (2 c/c) → ? (16 c/c); 1001(2 c/c) → ? (10c/c); 76(10 c/c) → ? (2 c/c)

0, 222(10 c/c) → ? (8 c/c) (получить четыре знака после запятой в восьмеричном представлении)

Выполнить арифметическую операцию: 100111(2 c/c) – 10011(2 c/c) 

10

Выполнить перевод чисел

54(8 c/c) → ? (2 c/c) → ? (16 c/c); 10111011(2 c/c) → ? (10c/c); 40(10 c/c) → ? (2 c/c)

0, 897(10 c/c) → ? (8 c/c) (получить три знака после запятой в восьмеричном представлении)

Выполнить арифметическую операцию: 101010(2 c/c) + 10(2 c/c)

11

Выполнить перевод чисел

131(8 c/c) → ? (2 c/c) → ? (16 c/c); 10000001(2 c/c) → ? (10c/c); 98(10 c/c) → ? (2 c/c)

0, 48(10 c/c) → ? (8 c/c) (получить три знака после запятой в восьмеричном представлении)

Выполнить арифметическую операцию: 10111(2 c/c) + 10011(2 c/c) 

12

Выполнить перевод чисел

11(8 c/c) → ? (2 c/c) → ? (16 c/c); 11111001(2 c/c) → ? (10c/c); 77(10 c/c) → ? (2 c/c)

0,19(10 c/c) → ? (2 c/c) (получить три знака после запятой в восьмеричном представлении)

Выполнить арифметическую операцию: 11111(2 c/c) – 1010(2 c/c) 

13

Выполнить перевод чисел

1003(8 c/c) → ? (2 c/c) → ? (16 c/c); 1010111(2 c/c) → ? (10c/c); 29(10 c/c) → ? (2 c/c)

0, 95(10 c/c) → ? (8 c/c) (получить три знака после запятой в восьмеричном представлении)

Выполнить арифметическую операцию: 111111(2 c/c) + 1000111(2 c/c)

14

Выполнить перевод чисел

41(8 c/c) → ? (2 c/c) → ? (16 c/c); 1001(2 c/c) → ? (10c/c); 66(10 c/c) → ? (2 c/c)

0, 232(10 c/c) → ? (8 c/c) (получить четыре знака после запятой в восьмеричном представлении)

Выполнить арифметическую операцию: 100111(2 c/c) – 10011(2 c/c) 

15

Выполнить перевод чисел

316(8 c/c) → ? (2 c/c) → ? (16 c/c); 11100001(2 c/c) → ? (10c/c); 764(10 c/c) → ? (2 c/c)

0, 12(10 c/c) → ? (8 c/c) (получить три знака после запятой в восьмеричном представлении)

Выполнить арифметическую операцию: 110,1000(2 c/c) + 11,0011(2 c/c) 

16

Выполнить перевод чисел

653(8 c/c) → ? (2 c/c) → ? (16 c/c); 111001(2 c/c) → ? (10c/c); 100(10 c/c) → ? (2 c/c)

0, 33(10 c/c) → ? (8 c/c) (получить три знака после запятой в восьмеричном представлении)

Выполнить арифметическую операцию: 100111(2 c/c) – 1011(2 c/c)