Смекни!
smekni.com

Лекции по информатики 2 (стр. 33 из 43)

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

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

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

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

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

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

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

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

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

Сценарий

ученики:

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

… … …


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

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


отсутствует

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

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

с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' кон

data «Иванов», «Вова», 160, 85, «муж»

data «Петрова», «Катя», 167, 67, «жен»

data «Сидоров», «Миша», 180, 80, «муж»

data «», «», 0, 0, «»

Отметим, что при использовании языка Basic тексты программ и описания алгоритмов полностью идентичны друг другу и по форме и по содержанию. Можно сказать, что текст программы на Бейсике получается переводом русских слов и словосочетаний на язык Бейсик и наоборот.

Задача 2. «Экономическая».

Составить алгоритм и программу определения общей стоимости промышленных товаров по данным из таблицы:

товар тип цена кол-во
ананасы прод 8000 40
утюги пром 60000 3
сахар прод 6000 20

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

Сценарий

промышленные товары


отсутствуют


<товар> <цена> <кол> <стоим> *

… … …


общая стоимость = <sum>

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

' стоимость промтоваров 'алг «стоимость промтоваров»

сls ' нач

? «промтовары:» ' вывод («промтовары:»)

n = 0: sum = 0 ' п = 0: sum = 0

do ' цикл

read tv$, tp$, сn, kl ' ввод tv$, tp$, сn, kl

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

if tp$ = «пром» then'если tp$ = «пром» то

n = n + 1 'n =n + 1

st = cn*kl 'st = cn *kl

? tv$, en; kl; st ' вывод (tv$, en, kl, st)

sum = sum + st 'sum =sum +st

end if' кесли

loop' кцикл

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

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

else' иначе

? «общая cтoимocть=»,sum ' вывод(«общая стоимость=»,sum)

end if ' кесли

end' кон

data «сахар», «прод», 6000, 20

data «утюги», «пром», 60000, 3

data «книги», «пром», 4000, 30

data «», «», 0, 0

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

Задание на экзаменах в МЭСИ состоит из пяти задач. Первая задача по системам счисления. Вторая задача - на алгебру логики. Третья задача - тест или анализ блок-схемы. Четвертая и пятая задача - задача на составление алгоритмов и программ.

Первые три задачи в экзаменационных билетах МЭСИ по слож­ности оцениваются на два балла, а четвертая и пятая задача - на четыре и пять баллов. Положительную оценку на экзамене получает та работа, в которой набрано не менее 8 баллов.

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

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

Задача 1. Написать программу на любом языке программирова­ния согласно следующему условию.

Дана целочисленная матрица А размера M´N, где M,N - задан­ные натуральные числа. Найти количество столбцов матрицы, со­держащих одни нулевые элементы.

Пример матрицы:

Для представления матрицы в программе на языке Бейсик можно использовать операторы data, в первой строке которых указывается размерность матрицы:

data 5

data 1, 0, 1, 0, 0

data 0, 1, 0, 0, 0

data 0, 0, 1, 0, 0

data 0, 1, 0, 0, 0

data 0, 0, 0, 0, 0

Для вывода исходных данных и результатов их обработки можно воспользоваться следующим сценарием:

Матрица А<n><n>:

11> ... <a1n>

… … …

<anl> … <ann>