Главная страница «Первого сентября»Главная страница журнала «Информатика»Содержание №22/2009


Педагогический университет

Методика преподавания основ алгоритмизации на базе системы "КуМир". Контрольная работа № 2

Уважаемые коллеги!

Предлагаем вам выполнить вторую контрольную работу по нашему курсу. Решения задач должны быть присланы в электронном виде, в формате kum-файлов, подготовленных в системе “КуМир”. Полностью выполненная работа должна включать 8 файлов: Z1a.kum, Z1b.kum, Z2a.kum, Z2c.kum, Z3b.kum, Z4b.kum, Z5.kum и Z6.kum (описание содержимого каждого из файлов приведено ниже в условиях задач). Все файлы мы просим поместить в один архив с именем NNN-NNN-NNN, соответствующий вашему идентификатору слушателя.

Оценивание всей работы будет производиться по системе “зачет/незачет”. Решение каждой задачи будет оцениваться по трехбалльной шкале:

0 — задача не решена (не решалась или представленное “решение” не содержит ни одной правильной идеи);

1 — задача решена частично (в решении задачи имеются существенные недостатки, не позволяющие считать решение полным);

2 — задача решена полностью.

Для получения зачета в сумме за все задачи необходимо набрать не менее 5 баллов.

Желаем вам успехов!

Задача 1

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

алг число максимальных

. надо | напечатано: число максимальных

| среди чисел a,b,c равно ...

нач вещ a,b,c

. цел n, вещ M

. ввод a,b,c

. если a > b то M := a иначе M := b все

. если M < c то ... все

. утв (a <= M и b <= M и c <= M)

. n := 0

. если ... то ... все

. если ... то ... все

. если ... то ... все

. вывод "... ",a," ",b," ",c, " равно ",n

кон

а) Введите приведенный выше текст программы в системе “КуМир” и допишите алгоритм в местах, отмеченных многоточиями. Обратите внимание, что в алгоритме требуется напечатать не просто одно число, а строку “число максимальных среди чисел”, за которой следуют введенные числа, затем слово “равно”, и только потом печатается ответ.

Используя команду из меню системы “КуМир” “Сохранить как”, сохраните алгоритм в файле Z1a.kum.

б) Модифицируйте алгоритм для нахождения числа максимальных из четырех чисел.

Используя команду из меню системы “КуМир” “Сохранить как”, сохраните алгоритм в файле Z1b.kum.

Задача 2

Нахождение сумм, произведений элементов данной конечной числовой последовательности (массива).

использовать Файлы

алг сумма последовательности

. дано | Элементы последовательности

| находятся в файле

| C:\Program Files\Kumir\2.txt

. надо | Напечатать: сумма элементов

| последовательности

|...

|равна ...

нач цел Ключ, вещ а,сум

. сум := 0

. открыть на чтение("2.txt", Ключ)

. вывод "Сумма элементов

последовательности", нс

. начать чтение(Ключ)

. нц пока не конец файла(Ключ)

. . ф_ввод Ключ,а

. . вывод а, " "

. . сум := сум + а

. кц

. вывод нс, "равна ", сум

. закрыть(Ключ)

кон

а) Введите приведенный выше текст и модифицируйте алгоритм так, чтобы он находил не только сумму, но и произведение элементов последовательности. Обратите внимание, что в алгоритме требуется не только изменить его тело, но и исправить дано-надо и название алгоритма.

Используя команду из меню системы “КуМир” “Сохранить как”, сохраните алгоритм в файле Z2a.kum.

б) Модифицируйте алгоритм так, чтобы он искал сумму и произведение элементов одномерного массива. Oформитe этот алгоритм как вспомогательный.

алг сумпро(цел N, вещтаб A[1:N], рез вещ сум, рез вещ про)

. дано N >= 1 | Элементы

| последовательности

| находятся в массиве А

. надо | величина сум равна сумме

| элементов последовательности

| величина про равна произведению

| элементов последовательности

нач цел Ключ, инд, вещ а

. ...

. ...

. инд := 1

. нц пока инд <= N

. . a := A[инд]

. . сум := ...

. . про := ...

. . инд := ...

. кц

кон

в) Замените в предыдущем алгоритме цикл пока на цикл для . Используя команду из меню системы “КуМир” “Сохранить как”, сохраните алгоритм в файле Z2c.kum.

Задача 3

Нахождение двух наибольших по величине значений в последовательности вещественных чисел за один просмотр последовательности.

использовать Файлы

алг Два наибольших элемента

последовательности

. дано | Элементы последовательности

| из двух или более целых чисел

| находятся в файле

| C:\Program Files\Kumir\3.txt

. надо | найти и напечатать два

| наибольших по величине элемента

| последовательности, то есть найти

| максимальное значение m1

| исходной последовательности и

| максимальное значение m2

| последовательности,

| полученной из исходной удалением

| первого элемента, равного m1

нач цел Ключ, m1, m2, a

. открыть на чтение("3.txt", Ключ)

. вывод "два наибольших элемента

последовательности", нс

. ф_ввод Ключ, m1, m2

. вывод m1, " ", m2, " "

. если m1 < m2 то a := m1;

m1 := m2;

m2 := a все

. утв m2 <= m1

. нц пока не конец файла(Ключ)

. . ф_ввод Ключ, a

. . вывод a, " "

. . выбор

. . . при m1 <= a: m2 := m1; m1 := a

. . . при m2 < a < m1: m2 := a

. . . при а <= m2: | ничего не делать

. . все

. кц

. вывод нс, "равны ", m1, " ", m2

. закрыть (Ключ)

кон

a) Введите приведенный алгоритм и, меняя файл "3.txt" , проверьте правильность его работы на последовательностях{1,0}, {0,1}, {1,1}, {2,1,0}, {0,1,2}, {0,1,1}, {1,1,0}, {1,0,1}, {0,0,1}, {1,1,1} .

б) Модифицировав алгоритм Два наибольших элемента последовательности, составьте алгоритм Три наибольших элемента последовательности. Используя команду из меню системы “КуМир” “Сохранить как”, сохраните алгоритм в файле Z3b.kum.

Задача 4

Нахождение максимального четного элемента в массиве.

использовать Файлы

алг Нахождение максимального

четного элемента

. дано | Элементы последовательности

| натуральных чисел (то есть

| целых чисел, больших нуля)

| находятся в файле

| C:\Program Files\Kumir\4.txt

. надо | Напечатать одно четное число:

| максимальный четный элемент

| последовательности или число 0,

| если в последовательности нет

| ни одного четного числа

нач цел Ключ, a, макс

. открыть на чтение ( "4.txt", Ключ)

. макс := 0

. начать чтение(Ключ)

. нц пока не конец файла(Ключ)

. . ф_ввод Ключ, а

. . если mod(a,2) = 0 и а > макс то

макс := a все

. кц

. вывод макс

. закрыть (Ключ)

кон

а) Введите приведенный выше алгоритм и проверьте правильность его работы на различных последовательностях, в том числе и на последовательностях длины
1 и 0 (на пустом, но существующем файле).

Пояснение. Встроенная функция “КуМира” цел mod(цел x, цел y) определена при y > 0 и находит остаток от деления x на y, лежащий в диапазоне от 0 до y - 1. В частности, целое число a четно тогда и только тогда, когда mod(a,2) = 0.

б) Переделайте алгоритм Нахождение максимального четного элементатак, чтобы он искал максимальный четный элемент только среди членов последовательности с номерами, делящимися на 10 (считаем, что элементы последовательности нумеруются с 1). Не забудьте изменить название алгоритма и дано-надо. Используя команду из меню системы “КуМир” “Сохранить как”, сохраните алгоритм в файле Z4b.kum.

Задача 5

Подсчет частоты появления символа в строке.

алг Подсчет частоты

. надо | Подсчитать частоту появления

| символа в строке

нач сим симв, лит строк

. ввод симв,строк

. вывод "символ ",симв," встречается

в строке ",строк

. вывод нс, Число Символов(симв,строк),

" раз"

кон

алг цел Число Символов(арг сим х,

лит стр)

. надо | знач = число вхождений символа х

| в строку стр

нач цел инд

. знач := 0

.нц для ...

....

....

....

.кц

кон

Введите приведенный выше текст и допишите вспомогательный алгоритм в местах, отмеченных “...”.

Подсказка. Используйте встроенную функцию “КуМира”цел длин(лит S), которая возвращает количество символов в строке S.

Используя команду из меню системы “КуМир” “Сохранить как”, сохраните алгоритм в файле Z5.kum.

Задача 6

Число слов в строке.

Cловом будем называть любую непустую подстроку подряд идущих непробелов, окаймленную разделителями, где под разделителем понимается либо пробел, либо начало строки, либо конец строки.

Для пустой строки (длины 0) и строки, состоящей из одних пробелов, результат должен быть равен нулю.

алг Число слов в строке

нач лит строка, цел Отв

. ввод строка

. Найти Число Слов(строка, Отв)

. вывод "Число слов в строке", нс,

строка, нс

. вывод "равно ", Отв

кон

алг Найти Число Слов(арг лит строка,

рез цел Ответ)

. дано | Последовательность символов,

| состоящая из пробелов и непробелов

. надо | Ответ = число слов

| в последовательности

нач цел инд, лит строка1

. | Идея решения: каждое слово, начиная

| со второго, можно

. | распознать по его началу, которое

| является непробелом,

. | следующим за пробелом. Чтобы

| не пропустить первое слово в

. | строке, "прижатое к началу строки",

| добавим в начало строки

. | пробел с помощью операции

| "сложениe строк"

. строка1 :=" "+строка

. Ответ :=0

. нц для инд от 2 до длин(строка1)

. ...

. кц

кон

Введите приведенный выше текст и допишите строки вспомогательного алгоритма в месте, отмеченном многоточием. Используя команду из меню системы “КуМир” “Сохранить как”, сохраните алгоритм в файле Z6.kum.

Ан. Ге. Кушниренко ;
Ал. Ге. Леонов

TopList