В целом задачи были подобраны по принципу от простого к сложному. С одной стороны это дало всем успевающим в информатике ученикам довести до успешных результатов хотя бы одну программу, а с другой стороны - сложность и дифференциация задач были таковы, чтобы можно было увидеть уровень подготовки и оценить способности участников.
Рассмотрим формулировки задач, проверочные тесты и правильные решения в форме программ на языке Basic. Первая задача относится к классу информационно-логических.
Задача 1. «Экзамены».
Среди N абитуриентов, сдававших экзамены по информатике, математике и языку, выбрать всех отличников и всех учащихся, набравших в сумме не меньше проходного балла. Данные о проходном балле вводятся с клавиатуры, а данные о результатах сдачи экзаменов представлены таблицей:
фамилия | имя | информатика | математика | язык |
Иванов | Саша | 4 | 4 | 3 |
Петрова | Катя | 5 | 5 | 5 |
Сидоров | Алеша | 5 | 3 | 3 |
Приведем проверочные тесты и правильные результаты:
Тест 1:
Иванов | Саша | 4 | 4 | 3 |
Петрова | Катя | 5 | 5 | 5 |
Сидоров | Алеша | 5 | 3 | 3 |
проходной балл =? 12
Правильные результаты:
отличники:
Петрова Катя
не меньше проходного:
Иванов Саша
Петрова Катя
Тест 2:
Иванов | Саша | 4 | 4 | 3 |
Сидоров | Алеша | 5 | 3 | 3 |
проходной балл =? 12
Правильные результаты:
отличники:
отсутствуют
не меньше проходного:
Иванов Саша 4 4 4
Тест 3:
Сидоров | Алеша | 5 | 3 | 3 |
проходной балл =? 14
Правильные результаты:
отличники:
отсутствуют
не меньше проходного:
отсутствуют.
В приведенных тестах анализируются различные логические ситуации с отсутствием «отличников» или «успешно» сдавших экзамены. При составлении программы эти ситуации можно явно предусмотреть в сценарии диалога с ЭВМ:
Сценарий
оценки учащихся:<фам> <имя> <мат> <инф> <язык> *
………………………………….проходной балл=? <b1>
отличники: <фам> <имя> *……………
отсутствуют не меньше проходного: <фам> <имя> <sum>*……………..
отсутствуютПрограммаАлгоритм
' результаты экзаменов алг «результаты экзаменов»
clsнач
? «оценки учащихся:» вывод («оценки учащихся:»)
doцикл
read fm$, nm$, mt, in, zkввод fm$, nm$, mt, in, zk
if fm$ = «» then exit doесли fm$ = «» то выход
? fm$, nm$, mt, in, zkвывод (fm$, nm$, mt, in, zk)
loopкцикл
input «проходной балл=»,b1 запрос («проходной балл=»,b1)
restore ocenkiперезагрузка_ oценки
? «отличники:» вывод («отличники:»)
n = 0п = 0
doцикл
read fm$, nm$, mt, in, zkввод fm$, nm$, mt, in, zk
if fm$ = «» then exit doесли fm$ = «» то выход
if mt=5 and in=5 and zk=5 thenесли mt=5 иin = 5и zk=5 то
? fin$, nm$вывод (fm$, nm$)
n = n + 1 n =n + 1
end ifкесли
loop кцикл
if n=0 then ? «отсутствуют» если п=0 то вывод(«отсутствуют»)
restore ocenkiперезагрузка-оценок
? «не меньше проходного:» вывод («не меньше проходного:»)
n = 0п = 0
doцикл
read fm$, nm$, mt, in, zkввод fm$, nm$, mt, in, zk
if fm$ = «» then exit doесли fm$ = «» то выход
sum = mt + in + zk sum = mt + in + zk
if sum >= hi thenесли sum >= bl то
? fm$, nm$, sumвывод (fm$, nm$, sum)
n = n + 1 n =n + 1
end ifкесли
loop кцикл
if n = 0 then ? «отсутствуют» если п = 0 то вывод («отсутствуют»)
endкон
ocenki: 'оценки учащихся
data «Иванов», «Саша», 4, 4, 3
data «Петрова», «Катя», 5, 5, 5
data «Сидоров», «Алеша», 5, 3, 3
data «», «», 0, 0, 0
Рассмотренная задача имеет чисто квалификационный характер проверки знаний информатики по школьной программе и умения самостоятельно составлять алгоритмы и программы решения на ЭВМ простейших информационных задач. С этой задачей справилось большинство участников олимпиады. Однако далеко не все предусмотрели исключительные ситуации и в результате многие из них потеряли определенную часть баллов на указанных тестах.
Вторая олимпиадная задача также относится к классу информационно-логических задач. Ее содержание заключается в переработке символьных данных.
Задача 2. «Слова».
Для фразы на русском языке, в которой нет знаков препинания, а слова отделяются одним единственным пробелом, организовать циклическую перестановку слов.
Исходная фраза:
ВЕЧЕРАМИ МЫ СМОТРИМ ТЕЛЕВИЗОР
Циклическая перестановка слов:
МЫ СМОТРИМ ТЕЛЕВИЗОР ВЕЧЕРАМИ
СМОТРИМ ТЕЛЕВИЗОР ВЕЧЕРАМИ МЫ
ТЕЛЕВИЗОР ВЕЧЕРАМИ МЫ СМОТРИМ
ВЕЧЕРАМИ МЫ СМОТРИМ ТЕЛЕВИЗОР
Сценарий
Исходная фраза:
<строка>
Перестановка слов:<строка'> *
Проверочные .тесты:
Тест 1: Исходная фраза:
утром был дождь
Правильные результаты:
Перестановка слов:
был дождь утром
дождь утром был
утром был дождь
Тест 2: Исходная фраза:
правильно
Правильные результаты:
Перестановка слов:
правильно
Программа Алгоритм
¢ перестановка слов алг «перестановка слов»
clsнач
? «Исходная фраза:» вывод («Исходная фраза:»)
line input st$ввод-строки (st$)
? st$вывод st$
In = len(st$)in =len(st$)
? «Перестановка слов:» вывод («Перестановка слов:»)
s$ = st$ s$ = st$
doцикл
k = instr(s$,«») k =instr(s$,«»)
if k = 0 thenесли k = 0 то
? s$вывод (s$)
exit doвыход
end ifкесли
lf$ = left$(s$,k-l) lf$ =left$(s$,k-l)
rt$ = right(s$,ln-k) rt$ =right(s$,ln-k)
ns$ = rt$ + «» + lf$ ns$ =rt$ + «» + lf$
? ns$ вывод(ns$ )
if ns$ = st$ then exit doпри ns$ =st$ выход
s$ = ns$ s$ =ns$
loopкцикл
endкон
Третью задачу можно отнести к числу комбинаторных задач, решение которых заключается в организации перебора различных вариантов данных.
Задача 3.«4 точки».
Для заданных четырех точек на плоскости найти длину минимального и максимального обхода их по замкнутому маршруту. Данные о координатах точек представлены в таблице:
х | у |
0 | 0 |
0 | 3 |
4 | 0 |
5 | 10 |
Составление алгоритмов и программы для решения этой задачи также полезно начать с составления сценария диалога.
Сценарий
координаты точек:
<х1> <у1>