Лабораторная работа №3 (к §7)
Программирование основных алгоритмических конструкций
В курсе информатики, изучавшемся вами в 8—9 классах, вы знакомились с языком программирования. Наиболее распространенными в российских школах являются языки Бейсик (версия QBasic) и Паскаль (версия PascalABC). В таблице на форзацах показано, как на этих языках выглядят основные алгоритмические конструкции. Если же вы изучали другой язык, то описание этих конструкций вам напомнит учитель или вы найдете его в соответствующем справочнике.
А теперь выполните несколько заданий.
1. Запрограммируйте алгоритм Евклида — он приведен в объяснительном тексте § 7. Протестируйте вашу программу на небольших числах, для которых легко найти НОД и без компьютера. Убедившись, что программа работает правильно, найдите НОД (178 357, 1 049 254).
2. Модифицируем алгоритм следующим образом:
Алгоритм НОДм
цел: m, n, k;
{ Запросить m;
Запросить n;
k:= m + n;
Делать пока (не (n = 0))
{ m:= n;
n:= k mod n;
k:= m;
}
Сообщить m;
}
Запрограммируйте и отладьте модифицированный алгоритм.
Давайте сравним эффективность этих двух алгоритмов. Для этого в программы надо вставить операторы, показывающие время.
В языке Бейсик можно воспользоваться функцией TIMER. По команде t = TIMER переменной t будет присвоено значение, равное числу секунд, которые прошли от 0 часов текущих суток.
В языке Паскаль для вывода времени нужно записать следующую конструкцию:
Uses Dos;
Var h, m, s, ss: word;
begin
gettime(h, m, s, ss);
end.
Переменной h будет присвоен текущий час, переменной m - минуты, s — секунды, ss — миллисекунды.
3. По результатам исполнения алгоритмов НОД и НОДм заполните таблицу:
Для каждой пары чисел найдите отношение времени работы алгоритма НОД к времени работы алгоритма НОДм. Как, на ваш взгляд, можно охарактеризовать это отношение?
4. Запрограммируйте алгоритм, представленный схемой алгоритма в задании 18 из § 7. Запустите отлаженную программу для некоторых начальных данных. Подтвердилась ли ваша гипотеза о том, для чего предназначен этот алгоритм?
5. Запрограммируйте алгоритм, приведенный в задании 23 из § 7. Напомним, что операция LEN(W) в языке Бейсик записывается LEN(W$), а в языке Паскаль — length(W), операция Часть (S, a, b) в языке Бейсик записывается MID$(S$, а, b), а в языке Паскаль — COPY(S, a, b).
Используемая литература:
Информатика и ИКТ. учебник для 10 кл. общеобразоват. учреждений : базовый и профил. уровни / А. Г. Гейн, А. Б. Ливчак, А. И. Сенокосов, Н. А. Юнерман. - 2-е изд. - М.: Просвещение, 2012. - 272 с. : ил.