Решение экзаменационных задач

Решение задач по информатике представляют интерес не только для всех студентов, но и для абитуриентов и учащихся средних школ, собирающихся поступать на профильные специальности и факуль­теты. Здесь рассматриваются задачи, предлагавшиеся на вузовских экзаменах по информатике, а также задачи выпускных и вступитель­ных экзаменов в 1994-1997 годах.

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

Основнойсложностью организации экзаменов по информатике является необходимость отладки программ и получения результатов на ЭВМ при разнообразии языков программирования -Бейсик,Паскаль, Си, Фортран, изучаемых в вузах и школах. В силу этих причин приводимые здесь формулировки задач носят содержательный характер, независимый от языков программирования и используемых ЭВМ.

Основной технической трудностью при решении экзаменацион­ных задач на ЭВМ являются вопросы организацииввода исходных данных, имеющих существенные различия в используемых языках программирования, что также отражается на формулировках и усло­виях задач.

Существуюттри основных общих способа организации ввода исходных данных в персональных ЭВМ, имеющихся в таких языках программирования как Бейсик, Паскаль, Си и Фортран. Рассмотрим их особенности и недостатки.

П е р в ы й с п о с о б - ввод исходных данных с клавиатуры ЭВМ. Этот способ может быть реализован на любых персональных ЭВМ с помощью любого языка программирования. Однако здесь весьма существенен порядок ввода данных, который должен явно указы­ваться в условиях задач.

В т о р о й с п о с о б - запись исходных данных в файлах на маг­нитных дисках. Это способ может быть реализован не на всех пер­сональных ЭВМ и не во всех языках программирования. К тому же не во всех действующих учебниках по информатике имеются примеры решения задач с вводом исходных данных из файлов на магнитных дисках.

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

Т р е т и й с п о с о б - наиболее удобный для отладки программ на персональных ЭВМ - описание исходных данных внутри текста программ в виде присваивании или операторовdata на языке Бейсик. Этот способ описания данных приведен в настоящем учебном по­собии, изложен во всех школьных учебниках по информатике и известен всем школьникам, изучавшим информатику в школах.

Однако этот способ, характерный и удобный для диалоговых программ, отсутствует в профессиональных языках программирова­ния таких как Паскаль, Си, Фортран, изучение которых выходит за рамки школьных учебников. По этой причине в формулировках задач по программированию, ориентированных на учащихся с углубленным изучением информатики, используется форматный способ ввода, принятый для професссиональных языков программирования.

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

Рассмотримобразцы решения экзаменационных задач с приме­рами составления как алгоритмов, так и сценариев диалога. Использо­вание сценариев диалога и является тем средством, которое уравнивает все используемые на персональных ЭВМ языки программирования и позволяет экзаменующимся избегать ошибок ввода-вывода данных, характерных для профессиональных языков программирования.

Составление сценариев диалога позволяет до составления алгорит­мов предусмотреть порядок ввода исходных данных и реакции про­грамм на самые различные входные ситуации, которые будут прове­ряться при тестировании на ЭВМ, и тем самым защитить программу и себя от ошибок в исходных данных.

В качествеосновного языка иллюстраций и примеров программ здесь и далее используется язык Basic для компьютеров IВМ PC как из-за удобств описания входных данных, так и из удобств отладки программ на Бейсике на персональных ЭВМ.

Многолетняяпрактика проведения экзаменов по информатике на ЭВМ показала, что отладка программ на Бейсике стабильно завер­шается на ЭВМ в два раза быстрее, чем на более «мощных» языках, таких как Паскаль, Си или Фортран, что весьма существенно при жестких ограничениях времени на экзаменах.

 

Задача 1. «Информационно-логическая».

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

 

фамилия имя рост вес пол
Иванов Вова муж
Петрова Катя жен
Сидоров Миша муж

 

Разработку программы решения данной задачи проведем с составления сценария диалога с ЭВМ, что существенно упрощает отладку и работу с программой при решении тестовых задач.

Сценарий

 

ученики:

           
     
 


<фам> <имя> <вес> <рост> <пол> *

… … …

 
 


самый легкий ученик:

<фам> <имя> <вес>

 
 


отсутствует

 

ПрограммаАлгоритм

' выбор самого легкого ученика алг «выбор самого легкого ученика»

сls ' нач

? «ученики:» ' вывод («ученики:»)

vs = 0 ' vs = 0

do ' цикл

read fm$, nm$, r, v, pl$ ' ввод fmS, nm$, r, v, pl$

if fm$ = «» then exit do ' если fm$ = «» то выход

fm$, nm$, r, v, pl$ ' вывод fm$, nm$, r, v, pl$

if р1$=»муж» then ' если pl$ = «мyж» то

if vs = 0 then ' если vs = 0 то

vs = v ' vs = v

fs$ = finS: ns$ = nm$ ' fs$ = fin$: ns$ = nm$

elseif v < vs then ' инес v < vs то

vs = v ' vs = v

fs$ = fm$: ns$ = nm$ ' fs$ =fm$: ns$ = nm$

end if ' кесли

end if ' кесли

loop ' кцикл

? «самый легкий ученик:» ' вывод («самый легкий ученик:»)

if vs = 0 then ' если vs = 0 то

? «отсутствует» ' вывод («отсутствует»)

elseif vs > 0 then ' инес vs > 0 то

? fs$, ns, vs ' вывод (fs$, ns, vs)

end if ' кесли

end ' кон