Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

II. Программирование и структурирование блок-схем




ПРАКТИКУМ НА ЭВМ

 

МЕТОДИЧЕСКИЕ УКАЗАНИЯ И ЗАДАЧИ

ДЛЯ ПРОГРАММИРОВАНИЯ ПО ТЕМЕ:

«ОСНОВНЫЕ СТРУКТУРЫ УПРАВЛЕНИЯ»

 

№1

КАЗАНЬ – 2006


 

Кугураков В.С., Самитов Р.К., Кугуракова В.В. Практикум на ЭВМ. Методические указания и задачи для программирования по теме: «Основные структуры управления». – Казань: КГУ, 2006. – 39 с.

 

 

Пособие предназначено для студентов, обучающихся по специальности «Прикладная математика и информатика» и направлению «Информационные технологии», а также для преподавателей, ведущих практические занятия по информатике, алгоритмическим языкам и программированию. Учебный материал представлен задачами для программирования, которые рекомендуется использовать при изучении темы «Основные структуры управления».

 

Ó Казанский государственный университет, 2006 г.

Ó Кугураков В.С., Самитов Р.К., Кугуракова В.В.


I. РАЗРАБОТКА АЛГОРИТМОВ.
ГРАФИЧЕСКОЕ ИЗОБРАЖЕНИЕ (БЛОК-СХЕМЫ) И СЛОВЕСНАЯ ЗАПИСЬ АЛГОРИТМОВ

 

Для каждой из задач данного раздела требуется разработать алгоритм решения задачи. Следует рассмотреть различные способы записи алгоритмов. Используйте сначала блок-схемы – графический способ изображения алгоритмов. Разработайте соб­ственный язык (жаргон) для словесного описания алгоритмов "по шагам". Для проверки правильности составленного алгорит­ма следует строить (если это несложно) трассировочные табли­цы, "прокручивая" алгоритм на конкретных исходных данных и следя за изменением переменных. Хотя такими отладочными дей­ствиями нельзя доказать правильность алгоритма, они во мно­гих случаях позволяют выявить ошибки в алгоритме.

1. (Умножение натуральных чисел.) Вычислить n = m × k, используя операции сложения и а) вычитания; б) удваивания и деления пополам. (Операция div деления по­полам определена следующим образом: r div2 =s, если r= 2 s или 2 s+ 1.)

2. (Деление натуральных чисел.) Вычислить частное и ос­таток при делении m на n, используя операции сложения и вычитания.

3. (Возведение в степень.) Для заданных целых и вычислить , используя операции вычитания и умножения.

4. (Вычисление "показателя".) Для заданных целых m ³ 1 и n ³ 2 вычислить:

а) наименьшее целое k такое, что ;

б) наибольшее целое k такое, что ;

в) количество цифр в десятичной записи числа m.

5. (Выделение квадрата.) Для заданного целого вычислить k – наибольшее целое, при котором m делится на k 2 без остатка.

6. (Выделение показателя и степени.) Для заданных целых чисел m, вычислить наибольшее целое k, при котором m делится без остатка на: а) ;б) .

7. (Наибольший общий делитель.) Вычислить d = НОД(m, n) – наибольший общий делитель натуральных чисел m и n, используя следующие соотношения:

(1) если , то НОД(m, n) = НОД(m–n, n);

(2) НОД(m, n) = НОД(n, m);

(3) НОД(n, 0) = n.

8. (Алгоритм Евклида.) В задаче 7 использовать вместо (1) следующее соотношение:

(1¢) если , то НОД(m, n) = НОД(r, n), где r – остаток от деления m на п.

9. (Степенной алгоритм.)

а) Вычислить у = xn ( – целое число), используя следующее соотношения (сведение задачи к меньшему значению n):

если n четно,
если n нечетно,

где z = x 2, – целая часть числа , x 0 = 1.

б) "Прокрутить" данный алгоритм для нескольких значений n и построить соответствующие трассировочные таблицы. Доказать правильность этого алгоритма и сравнить его с алгоритмом, полученным для задачи 3, оценивая (приближен­но) число используемых операций.

10. (Вычисление "основания".) Для заданных целых и , вычислить, используя алгоритм из задачи 9:

а) наименьшее натуральное k, при котором ;

б) наибольшее целое k, при котором .

11. (Простое число.) Целое число , называется простым, если его натуральными делителями являются лишь 1 и само число p (в противном случае число p называется составным). Установить, является ли заданное число простым.

Указание: p – простое число тогда и только тогда, ког­да ни одно из целых чисел т, для которого , не является его делителем.

12. (Гипотеза Гольдбаха.) Согласно известной гипотезе любое четное число представимо в виде суммы двух простых чисел. Установить, подтверждается ли эта гипотеза для заданного четного числа m.

13. (Эллиптическое сравнение.) Целые числа a и b называются сравнимыми по модулю n, если их остатки при делении на n совпадают. Этот факт обозначается как a º b (mod n). Для заданных целого и a, b Î Zm = {0,1,..., } установить, имеет ли сравнение (mod m) хотя бы одно решение в целых числах x, y Î Zm, причем , если b = 0.

14. (Проще, чем Большая Теорема Ферма.) Для заданных целых m, найти n – число решений сравнения (mod m) в целых числах x, y, z Î Zm = {0,1,..., m– 1}, x y . (Например, сравнение (mod 5) имеет 20 решений, одно из них: x = 3, y = 1, z = 1.)

15. (Совершенные и дружественные числа.)

а) Натуральное число n называет­ся совершенным, если , где – сумма дели­телей числа n. (Например, 6 – совершенное число, так как 12=1+2+3+6.) Вычислить, сколько имеется совершенных чисел £ 1000000.

б) Натуральные числа a и b называются дружественными, если . Найти все пары (a, b) дружественных чисел, для которых a + b < n, где n – заданное число.

16. (Теорема Лагранжа.) Всякое неотрица­тельное целое число можно представить в виде суммы четырех квадратов. (Например, 7=12+12+12+22.) Однако для неко­торых чисел достаточно и меньшего числа квадратов. (Напри­мер, 4=22, 13=22+32, 6=12+12+22.) Вычислить, сколько (минимально) квадратов требуется для указанного представ­ления заданного числа n.

17. (Гипотеза Эйлера.) Леонард Эйлер предполагал, что диафантово уравнение не имеет решений в натуральных числах для любого показателя степени , если .

Опровергнуть данную гипотезу.

Подсказка. Попробуйте простым перебором найти решение уравнения . Решение сущствует! Попутно отметим, что имеется уникальный результат для s = 3, опровергающий гипотезу Эйлера:

4224814 = 4145604 + 2175194 + 958004.


II. ПРОГРАММИРОВАНИЕ И СТРУКТУРИРОВАНИЕ БЛОК-СХЕМ

 

Следующие блок-схемы с одним входом (H – начало) и одним выходом (K – конец), объявляются для данного разде­ла базисными:

Символы S, S 1,... (называемые в дальнейшем операторами) служат для обозначения функциональных блоков , каждый из которых представляет некоторую последовательность действий (или вычислений) с одним входом и одним выходом. Символ В обозначает некоторое (логическое) условие, которое может как выполняться (+), так и не выполняться (–). Раз­ветвление интерпретируется следующим образом: если условие В выполняется, то происходит переход на левую ветку, в противном случае – на правую. Стрелки (®) опре­деляют последовательность выполнения операторов. Таким обра­зом, каждая из блок-схем (1) – (5) однозначно определяет по­рядок выполнения операторов S, S 1,... в зависимости от выполнения того или иного условия B.

Введем специальный язык для линейной записи блок-схем. Запись блок-схемы на таком языке будет называться программой. Для записи блок-схем (1) – (5) используются следующие конструкции (назовем их базисными операторами):

(1) begin S1;...; Sn end (составной оператор)
(2) if B then S1 else S2 (полный условный оператор)
(3) if B then S (неполный условный оператор)
(4) while B do S (оператор цикла ПОКА)
(5) repeat S1;...; Sn until B (оператор цикла ПОВТОР)

Определение. Структурной блок-схемой называется любая из базисных блок-схем, а также любая блок-схема, которая может быть получена из структурной блок-схемы заменой неко­торых из составляющих ее функциональных блоков на структур­ные блок-схемы. (Таким образом, программа структурной блок-схемы – это оператор вида (1) – (5), составные части S, S 1,... которого являются операторами того же вида.)

Одно ограничение. Если S – оператор вида (2), то вместо (3) будем писать

(3') if B then begin S end  

Если такого ограничения не вводить, то существенно разным блок-схемам (6) и (7):

 

соответствовала бы одна и та же программа

if B1 then if B2 then S1 else S2.

Для записи неструктурных блок-схем введём дополни­тельное средство – оператор goto L (переход по стрелке), где L – метка, отмечающая оператор, на который осуществ­ляется переход. Например, блок-схемы, изображенные на рис. 1, могут быть записаны как

1: S1; if B then begin S2; goto 1 end и

if B1 then goto 2 else goto 3; 2: S; 3: if B2 then goto 2.

Известно, что любая блок-схема с одним входом и одним выходом без зацикливаний и недостижимых операторов может быть структурирована, т.е. приведена к "эквивалентной" струк­турной форме, если согласиться на дублирование операторов и введение в блок-схему некоторых дополнительных операторов, вычисляющих "флажки". Например, блок-схемы на рис. 1 мо­гут быть структурированы, как показано на рис. 2.

1. (Написание программ.) Написать программы по заданным блок-схемам (8) – 24) на стр. 10 и 11, используя:

а) составные и условные операторы (схемы (8) – (15));

б) базисные операторы, т.е. составные, условные и цикла (схемы (16) – (21));

в) составные, условные операторы и операторы перехода (схемы (22) – (24)).

2. (Структурирование блок-схем.) Блок-схемы (25) – (30) на стр. 12 преобразовать в их структурные эквиваленты.

3. (Структурирование и программирование.) Написать про­граммы для блок-схем (31) – (42) на стр. 12 – 13. Блок-схемы предварительно преобразовать в структурные.

4. (Блок-схемы программ.) Составить блок-схемы для задан­ных фрагментов программ:

a) if B then begin S1; if B1 then begin S2; S3 end else ifB2 thenS4 end else ifB3 then beginS5; S6; ifB4 thenS7 end;
б) ifB then beginS1; repeatS2; S3 untilB1 end else ifB1 thenS3 elseS4; ifB2 then begin ifB3 then beginS1; S2; S3 end elseS4; S5 end else begin whileB4 doS6; ifB5 thenS7; repeatS8 untilB6; S9 end;
в) whileB do ifB1 then S1; if B2 then repeat S1; S2; S3 untilB3; ifB4 then repeatS4 until B1 else if B4 then S5 else whileB5 do beginS6; S7; S8; if B6 then S9 end.

5. (Структурирование программ.) Составить блок-схемы для заданных фрагментов программ. Полученные блок-схемы преобра­зовать в структурные и заново запрограммировать:

a) 5: if B1 then begin S1; S2; S3 end; 6: if B2 then S4 else goto 5; if B3 then S5 else if B4 then S6 else if B5 then goto 6;
б) 2: if B1 then begin if B2 then S1 else while B3 do S2; goto 1 end else if B4 then S3 else goto 2; 1: if B3 then S4 else S5;
в) 2: S1; if B1 then begin S2; if B2 then repeat S3; S4 until B3 else if B4 begin S5; S6; S7; S8; end end else if B7 then S9 else S10; 1: if B6 then begin S11; goto 1 end else begin while B7 do S12; goto 2 end; if B8 then begin repeat S13 until B9; goto 1 end.

6. (Ограниченные инструментальные средства.) Показать, что любой из трех базисных операторов (2), (4) или (5) может быть выражен через два остальных, если дополнительно разрешено использовать составной оператор (1) и операторы присваивания следующего вида: x:=true и x:=false (или x:=0 и x:=1).





III. НЕБОЛЬШИЕ ПРОГРАММЫ

 

Для каждого из заданий этого раздела требуется написать программу вычисления некоторой величины по заданной формуле. Программу необходимо соответствующим образом оформить: пре­дусмотреть определение констант и описание переменных; исходные данные определить вводом; результаты напечатать.

 

Поделиться:





Читайте также:

Алгоритмизация и программирование. Технологии программирования. Языки программирования высокого уровня. 1 страница
Алгоритмизация и программирование. Технологии программирования. Языки программирования высокого уровня. 2 страница
Алгоритмизация и программирование. Технологии программирования. Языки программирования высокого уровня. 3 страница
Алгоритмизация и программирование. Технологии программирования. Языки программирования высокого уровня. 4 страница
Алгоритмизация и программирование. Технологии программирования. Языки программирования высокого уровня. 5 страница
Алгоритмизация и программирование. Технологии программирования. Языки программирования высокого уровня. 6 страница
Алгоритмизация и программирование. Технологии программирования. Языки программирования высокого уровня. 7 страница
Алгоритмизация и программирование. Технологии программирования. Языки программирования высокого уровня. 8 страница
Алгоритмизация и программирование. Технологии программирования. Языки программирования высокого уровня. 9 страница






Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...