Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Решение задач на ЭВМ




Вопросы

Саша 18 10 1980

Средства обработки данных

Вопросы

Кон end

 

Сравнение алгоритма со сценарием показывает их полное соответствие друг другу.

 

 

1. Сколько ошибок содержится в программах?

2. Как долго длится отладка программ?

3. Что такое спецификации программ?

4. Зачем нужны спецификации?

5. Можно ли гарантировать отсутствие ошибок в программах?

6. Что такое систематический подход к алгоритмизации?

Задания

 

1. Составьте сценарий и алгоритм диалога «Распорядок дня», с помощью которого можно узнать, что запланировано на заданный час дня.

2. Составьте сценарий и алгоритм диалога с выбором по меню:

а) национальных флагов;

б) каталога строительных блоков;

в) набора рисунков;

г) каталога строений.

3. Предложите сценарии и алгоритмы рисования на экране абстрактных рисунков:

а) из случайных разноцветных точек;

б) из случайных разноцветных отрезков;

в) из случайных разноцветных рамок;

г) из случайных разноцветных окружностей;

д) из случайных разноцветных кругов;

е) из случайных разноцветных окошек.

4. Составьте сценарий и алгоритм, моделирующий на экране броуновское движение частиц.

 

Автоматизированная обработка данных — одна из основных массовых проблем, решаемых с помощью ЭВМ. На персональных компьютерах IBM PC базовым средством обработки данных является язык программирования Basic. В операционной системе Windows этот язык считается основным языком разработки программ для компьютеров IBM PC.

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

алг «день рождения» ' день рождения

нач сls

вывод («день рождения:») print «день рождения:»

чтение пт$, dn, ms, gd read nm$, dn, ms, gd

вывод nm$; dn; ms; gd print nm$; dn; ms; gd

кон end

дано: Саша, 18, 10, 1980 data «Саша», 18,10,1980

 

Выполнение программы на компьютере приведет к появлению на экране следующих строк:

 

день рождения:

 

Для решения этой задачи для других данных необходимо внести изменения в оператор данных data и вновь запустить программу на выполнение. Пример изменения данных:

 

дано: Оля, 1, 12, 1974 data «Оля»,1, 12,1974

 

В традиционных версиях языка Бейсик с нумерацией строк операторы data выделяются в отдельные группы и нумеруются обычно с числа 1000. Это позволяет четко отделить в программах описание данных от операторов их обработки:

 

алг «дни рождения» 10 ' дни рождения

нач 20 сls

вывод («день рождения:») 30 print «день рождения:»

чтение пт$, dn, ms, gd 40 read nm$, dn, ms, gd

вывод nm$; dn; ms; gd 50 print nm$; dn; ms; gd

кон 60 end

дано: Иванов, Саша, 18,10,1980 1000 data «Саша»,18,10,1980

 

При размещении нескольких таблиц или других групп данных в программах на Бейсике полезным средством являются операторы restore (операторы чтения данных с заданного номера или метки):

1) оператор чтения данных после метки test:

restore testчтение данных после метки test;

2) оператор чтения данных с оператора 1000:

restore 1000чтение данных, начиная с 1000-го оператора;

3) оператор чтения данных с самого начала:

restoreчтение данных сначала.

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

Символьные данные — это последовательности символов. В текстах программ на Бейсике символьные данные заключаются в двойные кавычки. Примеры: «мама», «корень=», «2 + 1» и т.д. Во входных данных символьные данные записываются в соответствии с входными спецификациями.

Символьные переменные — это переменные, значениями которых являются символьные данные. В программах на Бейсике символьными являются те переменные, к имени которых справа приписан знак $. Примеры символьных переменных: s$, p$, sl$, pr$.

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

 

n%, m%, nl%, m3%целочисленные;

х, у, xl, y5вещественные;

а#, b#, a1#, b8#вещественные двойной точности.

 

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

 

 

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

 

 

dni: ' дни рождения

data «мама», 26, 6, 1949

data «папа», 22, 5, 1946

data «Сережа», 25, 10, 1973

data «Оля», 1, 12, 1974

data «», 0, 0, 0

Обратите внимание!

1. Каждый оператор data здесь отвечает одной строке таблицы.

2. Последний оператор data содержит пустую «запись» — пустое имя «» и три нуля, означающие конец данных.

 

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

Рассмотрим алгоритм и программу вывода списка дней рождения В семье, составленные в соответствии с выбранным представлением данных:

алг «дни рождения» ' дни рождения

нач cls

вывод («дни рождения») print «дни рождения»

чтение таблицы dni restore dni

цикл do

чтение (пп, d, т, g) read nn$, d, m, g

при пп = «» вых if nn$ = «» exit then do

вывод (пп, d, m, g) print nn$, d, m, g

кцикл loop

кон end

 

Для формирования и обработки новых групп данных в программах используются массивы. Массив в программе — это область оперативной памяти ЭВМ, используемая для размещения некоторой совокупности данных.

Использование массивов в программах на Бейсике требует описания их с помощью операторов dim. В операторах dim для каждого массива указывается его имя и размеры. Массивы в программах могут быть одномерными, двумерными, трехмерными и т. д.

Примеры описаний массивов:

одномерные массивы из 20 элементов —

dim nm$(20), d(20), m(20)

двумерные массивы из 2х10 и 10х10 элементов —

dim fm$(2,10), tb(10,10)

Обращения к элементам массивов записываются в зависимости от размерности, указанной в их описаниях. Примеры обращений к одномерным и двумерным массивам:

nm$(4) = «Костя»

d(4) =10

fm$(l,10) = «Петров»

tb(3,4) = 3*4

 

В программах на Бейсике операторы dim являются выполняемыми. Результатом их выполнения является выделение участков памяти для хранения соответствующих массивов. По этой причине в качестве размеров массивов могут указываться переменные, которые должны получить конкретные положительные значения до выполнения оператора dim.

Описание двумерного массива с переменной n в качестве его размеров:

п = 5 ' n = 5

dim tb(n,n) ' массив tb[1:n,1:n]

 

В качестве примера использования массивов с переменными размерами приведем алгоритм и программу формирования «Таблицы умножения n х n».

 

 

В приведенных ниже алгоритме и программе расчета и вывода таблицы умножения для ее размещения используется двумерный массив tb(n,n) с n = 5:

 

алг «таблица умножения» ' таблица умножения

п = 5 n = 5

массив tb[1:n,1:n] dim tb(n,n)

нач сls

от k = 1 до п цикл for k = 1 to n

оm l = 1 до п цикл for 1 = 1 to n

tb[k,l]: =k*l tb(k,l) = k*l

вывод tb[k,l] print tb(k,l);

кцикл next l

нов_строка print

кцикл next k

кон end

 

Запуск этой программы на ЭВМ приведет к получению приведенной выше картинки с таблицей умножения размера 5х5. Для получения таблицы умножения размера 8х8 или 10х10 достаточно изменить в программе значение n = 5 на n = 8 или n = 10.

Перечисленных базовых средств достаточно для решения большого числа задач обработки данных: экономических, статистических, инженерных, научных и т.п. Однако при постановке решения задач обработки данных важно четко различать место размещения и виды обрабатываемых данных.

По способу использования при решении задач различаются следующие данные:

исходные;

результирующие.

Исходные данные — конкретные данные решаемых задач, отвечающие принятой постановке. Исходные данные могут оказаться как допустимыми, так и недопустимыми по постановке решаемых задач.

Результирующие данные — это результаты решения поставленных задач при введенных исходных данных. Сообщения о невозможности решения задачи также считаются результирующими данными.

По способу размещения и использования в обрабатывающих алгоритмах и программах данные подразделяются на:

• входные;

• выходные;

• сохраняемые.

Входные данные — это данные, вводимые в ЭВМ во время работы программы. Входные данные могут вводиться с клавиатуры, магнитных дисков или с помощью других устройств ввода информации.

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

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

В качестве примера рассмотрим задачу поиска номеров телефонов по телефонному справочнику. Исходной информацией в этой задаче является «Телефонный справочник», который можно представить следующей таблицей:

 

 

Результирующая информация — номера телефонов и сообщения об отсутствии таких сведений. Информация о результатах поиска информации может выводиться на экран ЭВМ. Диалог с компьютером может проходить по следующему сценарию, в котором отражаются исходные и выходные данные:

 

 

Для хранения таблицы «Телефонного справочника» в программе можно воспользоваться следующими операторами data:

tel: 'номера телефонов:

data «Вова», «125-14-80»

data «Саша», «222-01 -02»

data «Маша», «102-99-00»

data «», «»

 

При выбранных представлении данных и сценарии диалога решением могут служить следующие алгоритм и программа:

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

алг «Телефонный справочник» ' Телефонный справочник

нач cls

вывод («поиск номера телефона») print «поиск номера телефона»

запрос(«имя=», NN) input «имя=», NN$

чтение-таблицы tel restore tel

цикл do

чтение (имя, пот) read im$, nm$

если имя = NN то if im$ = NN$ then

вывод («номер:»,пот) print «номер:»,nm$

выход [из цикла] exit do

инеc имя = «» то elseif ini$ = «» then

вывод («нет такого») print «нет такого»

выход [из цикла] exit do

все end if

кцикл loop

кон end

 

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

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

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

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

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

 

 

Примем, что запросы на поиск друзей по росту и результаты поиска будут выводиться на экран по следующему сценарию:

 

 

Для представления данных о друзьях в программе воспользуемся следующими операторами data:

dan: 'данные о друзьях

data «Иванов», «Саша», 180

data «Петров», «Вова», 160

data «Сидоров», «Миша», 190

data «», «», 0

 

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

 

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

алг «выбор друзей» ' выбор друзей

нач cls

вывод («выбор друзей по росту») print «выбор друзей по росту»

запрос («мин_рост =>», min) input «мин_рост =>», mn

запрос («макс_рост =<», max) input «макс_рост =<», mx

чтение-таблицы dan restore dan

n: = 0 n = 0

цикл do

чтение (фам, имя, r) read fm$,im$,r

при фам = «» вых if fm$ = «» then exit do

если min < r и r < max то if mn<=r and r<=mx then

вывод (фам, имя) print fm$, im$

n: = n + 1 n = n+1

все end if

кцикл loop

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

вывод «нет таких» print «нет таких»

кон end

 

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

 

1. Что такое исходные и результирующие данные?

2. Что такое входные, выходные и сохраняемые данные?

3. Что такое представление данных?

4. Как описываются массивы в программах на Бейсике?

5. Какие типы переменных есть в программах на Бейсике?

6. Как описываются данные в программах на Бейсике?

 

Задания

 

1. Составьте сценарий, алгоритм и программу поиска номера телефона по фамилии с представлением сведений в последовательности операторов data.

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

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

а) о росте друзей;

б) о весе друзей;

в) о цвете глаз.

4. Составьте сценарий, алгоритм и программу поиска сведений о расписании занятий по дням недели, используя операторы data.

5. Составьте сценарий, алгоритм и программу поиска сведений о расписании занятий, используя операторы data:

а) по названию предмета;

б) по дням недели;

в) по номеру урока.

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

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

 

Глава 5. ТЕХНОЛОГИЯ РЕШЕНИЯ ЗАДАЧ

 

 

Решение задач должно начинаться с их точной постановки. Постановка задач — это четкое выделение того, что требуется, и того, что дано:

 

 

Следующий этап — определение способа решения задачи. Способ решения — это набор действий, позволяющих получить требуемое из исходного:

 

Результат правильный, если он отвечает требованиям. Получение результатов — главное в решении любых задач. Отсутствие или неправильность результатов говорит о неуспехе деятельности.

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

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

 

 

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

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

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

 

 

Приведенная схема представляет основной принцип систематических методов составления алгоритмов и программ для решения различных прикладных задач — экономических, математических, физических, инженерных и т. д.

Особенностью систематических методов является возможность полного устранения ошибок из алгоритмов и программ. При этом подходе программы сверяются с описаниями алгоритмов, а алгоритмы — с описаниями сценариев и методов решения.

Такой систематический подход к составлению алгоритмов и программ может применяться к решению на ЭВМ любых прикладных задач с использованием самых различных языков программирования — Бейсик, Паскаль, Си и им подобные. Приведем примеры систематического решения задач.

Первая задача: подсчет площади треугольника по длинам сторон.

 

 


 

Постановка

Дано: а, b, с — длины сторон.

Треб.: S — площадь треугольника.

При: a > 0, b > 0, с > 0,

a < b + c, b < a + c, c < a + b.

Метод решения

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

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

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

алг «площадь треугольника» ' площадь треугольника

нач сls

вывод («площадь треугольника»)? «площадь треугольника»

вывод («длины сторон:»)? «длины сторон:»

запрос («а=», a) input «a=»,a

запрос («b=», b) input «b=»,b

запрос («с=», с) input «c=»,c

если не (а > 0 и b > 0 и с > 0) то if a<=0 or b<=0 or c<=0 then

вывод («недопустимы длины»)? «недопустимы длины»

инес не (а < b + с и b < а + c elseif not (a < b + с and b < а + с

и с < а + b) то and с < а + b) then

вывод («недопустимы длины»)? «недопустимы длины»

иначе else

р:= (а + b + с)/2 р = (а+b+с)/2

S:= S = sqr (p*(p-a)*(p-b)*(p-c))

вывод («площадь=», S)? «площадь=», S

все end if

кон end

 

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

В общем случае математическая постановка задач должна содержать не только условия допустимости данных, но и точное описание требований к результатам:

1) дано: перечень исходных данных;

2) треб.: перечень требуемых данных;

3) где: требования к результатам;

4) при: условия допустимости данных.

Вторая задача: определение среднего арифметического последо­вательности из N чисел х1, х2,..., хN. Приведем постановку, метод решения и сценарий диалога для решения этой задачи.

 

Постановка задачиСценарий

Дано: N - количество чисел, среднее N чисел

x1, х2,.., хN - числа, чисел =? <N>

Треб.: s - среднее N чисел. *

Где: s = (х1, + х2 +...+ хN)/ N. 1: <х1>

При: N > 0. 2: <х2>

………..

Метод решения N: <хN>

               
       
 
 
 


S0 = 0 среднее = <s>

Sk = Sk-1 + хk

[k = 1,..., N] недопустимо N

s = SN / N

 

Обратите внимание: метод вычисления среднего N чисел здесь описан через подсчет суммы чисел. Правильность метода может быть проверена по отношению к требованиям постановки задачи.

Приведем алгоритм и программу обработки данных, составлен­ные в точном соответствии с выбранным сценарием и методом решения:

 

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

алг «среднее арифметическое» ' среднее арифметическое

нач cls

вывод («среднее N чисел»)? «среднее N чисел»

запрос («чисел=», N) input «чисел=», N

S:= 0 S = 0

если N <= 0 то if N <= 0 then

вывод («недопустимо N»)? «недопустимо N»

инеc N > 0 то elseif N > 0 then

от k = 1 до N цикл for k = 1 to N

вывод (k, «:»)? k, «:»

запрос (x) input x

S:= S + x S = S + x

кцикл next k

s:= S/N s = S/N

вывод («среднее =», s)? «среднее=», s

все end if

кон end

 

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

Приведем пример разработки программы обработки данных с математической постановкой задачи и полным описанием метода решения.

Третья задача: определение самого легкого из учеников по данным из таблицы, содержащей N строк:




Поделиться с друзьями:


Дата добавления: 2017-01-14; Просмотров: 168; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.016 сек.