- •Основы алгоритмизации и программирования лабораторный практикум
- •1 Семестр
- •Оглавление
- •Лабораторная работа № 1. Системы счисления
- •Лабораторная работа № 2. Способы представления алгоритмов
- •Задание
- •Лабораторная работа № 4. Ввод и вывод информации
- •Лабораторная работа № 5. Разветвляющиеся программы
- •Лабораторная работа № 6. Циклические программы
- •Лабораторная работа № 7. Отладка программ
- •Лабораторная работа № 8. Вычисление сумм, произведений, экстремумов
- •Лабораторная работа № 9. Алгоритмы вычисления интегралов и решения уравнений
- •Лабораторная работа № 10. Одномерные массивы
- •Лабораторная работа № 11. Указатели и ссылки
- •Лабораторная работа № 12. Обработка символьной информации
- •Лабораторная работа № 13. Многомерные массивы
- •Лабораторная работа № 14. Структура и назначение функций
- •Лабораторная работа № 15. Массивы и ссылки при работе с функциями
- •Лабораторная работа № 16. Динамические массивы
Учреждение образования
«БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ»
Н. Н. Пустовалова, Н. В. Пацей
Основы алгоритмизации и программирования лабораторный практикум
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
Пример: 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:
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) |