Постановка и решение задач
Решение задач состоит в получении определенных результатов. Это относится к в работе, жизни или учебе: сдача экзаменов, написание сочинений, выполнение чертежей, изготовление приборов, инструментов и машин, сбор урожая, накопление капитала и т. п. - все это получение или достижение результатов.
Ключом к любой задаче является способ решения,
дающий необходимые результаты. Знание способов решения и умение их применять для решения практических задач - важнейшая характеристика профессиональной квалификации.
Результаты правильные, если они отвечают требованиям решаемых задач. Однако, если требования сформулированы недостаточно четко, то нельзя однозначно судить о правильности полученных результатов.
Результаты неправильные, если они противоречат заданным требованиям. Как однозначно определить правильность результатов? Ответ: для этого необходима точная постановка задач с четким выделением требований.
Для решения задач необходимо определение:
1) что требуется?
2) что дано?
Ответ на первый вопрос - что требуется? -
точное определение требуемых результатов. При отсутствии требований к конечным целям оценка полученных результатов может быть неоднозначной.
Ответ на второй вопрос - что дано? - определение исходных условий, при которых требуется получить результаты. Неоднозначность в определении исходных условий может привести к получению неправильных результатов.
Рассмотрим задачу: «Добраться домой».
Исходным будет место, где мы находимся, а требуемым - свой дом. Способов решения этой задачи может быть много, но правильные среди них только те, которые обеспечат достижение своего дома.
Рассмотрим вторую задачу. «Решение уравнения 2×х+1
= 0». Здесь требуемым является корень уравнения. В качестве решения уравнения можно рассмотреть два числа х1 = 1 и х2 = -1/2. Правильным из них является то решение, при подстановке которого уравнение превратится в тождество.
Подстановка первого числа х1 = 1 в уравнение дает противоречие
2.(1) +1= 3 ¹ 0.
Следовательно, значение х1 = 1 - это неправильное решение, так как оно противоречит требованиям и не может быть корнем уравнения.
Подстановка второго решения х2 = -1/2 в уравнение дает тождество
2.(-1/2) +1= 0.
Таким образом значение х2 = -1/2 удовлетворяет исходному уравнению и является правильным решением.
Способ решения правильный, если он дает правильные результаты. Для определения правильности способов решения задач необходима четкая постановка решаемых задач, в которых должны быть строго определены требуемые результаты.
Способ - неправильный, если его применение приводит к получению неправильных результатов либо вовсе не дает никаких результатов. Использование неправильных способов решения может вообще не давать результатов.
Способы могут быть частными и общими. Частные способы
дают конкретные решения частных задач. Частный способ может оказаться неприменимым для решения сходных задач, отличающихся деталями.
Общий способ может давать решения для целого класса задач, отвечающих определенным исходным условиям и отличающихся друг от друга конкретными исходными данными.
Так, для рассмотренной задачи решения уравнения 2-х + 1 = 0 можно использовать общий способ решения линейных уравнений вида а×х + b = 0:
х0 = - b/а.
Применение этой формулы при а = 2, b = 1 дает решение х0 = - b/а = -1/2, которое нам уже известно как правильное.
В правильности общего способа решения уравнений вида а×х + b = 0 можно убедиться подстановкой формулы х0 = - b/а в само уравнение:
а×х + b º а×(- b/а) + b º -b + b º
0.
При постановке обобщенных задач кроме выделения требуемого необходимо определить исходные условия, при которых должно быть получено требуемое. В такой постановке задач должно быть определено, какие исходные условия будут считаться допустимыми, а какие нет.
Постановка задачи:
1. Что дано?
2. Что требуется?
3. Что допустимо?
Приведем полное описание постановки рассмотренной выше задачи:
Задача: решить уравнение а-х + b = 0.
Треб: х - корень уравнения.
Дано: а, b - коэффициенты уравнения.
При: а ¹ 0.
Уравнения данного типа можно решать в общем виде с помощью электронных таблиц, применяя описанный общий метод решения и следующую калькуляцию:
A |
B |
C |
D |
|
1 |
уравнение: |
|||
2 |
2 |
* х + |
1 |
= 0 |
3 |
корень: |
х = -0.5 |
Особую ценность для решения задач представляют обобщенные методы решения. Метод - единый способ решения некоторого класса задач. Знание методов позволяет находить решения для любой конкретной задачи данного класса.
Метод решения правильный, если он дает правильные результаты для любой задачи данного класса. Применение таких методов гарантирует правильность результатов для любой из задач данного класса.
Метод решения неправильный, если можно указать конкретную задачу данного класса, для которой применение метода даст неправильные результаты либо не даст результатов вовсе.
Например, для уравнения а×х + b = 0 формула х = - b/а не дает результата при а = 0. Но при значении а = 0 уравнение превращается в соотношение b = 0, что говорит о недопустимости этого значения. Следовательно, условием допустимости данных в рассматриваемой задаче будут значения а ¹
0.
Правильность методов решения можно проверять на конкретных примерах. Достаточно привести хотя бы один контрпример, на котором способ или метод дает неправильный результат, чтобы утверждать о неправильности метода решения в целом.
Однако демонстрация правильности результатов на двух-трех примерах не может служить достаточным основанием для утверждений о правильности метода или способа решения в целом.
Полное обоснование правильности методов решения дает только исчерпывающий анализ результатов, получаемых с их помощью для любых задач данного класса.
Пример - приведенное выше обосно вание общего метода решения линейных уравнений.
В общем случае
обоснование правильности обобщенных методов решения требует математического исследования получаемых результатов и математического доказательства их правильности для всех конкретных случаев.
В о п р о с ы
1. Когда результаты правильные?
2. Когда результаты неправильные?
3. Когда способ решения правильный?
4. Что такое постановка задачи?
4. Что такое метод решения?
5. Когда метод решения правильный?
6. Когда метод решения неправильный?
З а д а н и я
1. Приведите постановку задачи и общий метод решения квадратного уравнения.
2. Приведите калькуляцию для решения квадратных уравнений на компьютере.
3. Докажите правильность общего метода решения квадратного уравнения.
4. Приведите калькуляцию для решения системы уравнений с двумя неизвестными:
а×х + b×у = е
с×х + d×y = f
с помощью следующего общего метода:
х = Dx/D у = Dy/D
Dx = e×d - b×f Dy
= a×f - b×e
D = a×d - b×c
Правила записи вопросов
Вопросы в Прологе служат для записи простых или сложносоставных запросов к базам знаний или обращений к процедурам и программам. Ответами на запросы к базам данных и знаний могут быть логические значения ДА (истина) или НЕТ (ложь) либо список конкретных данных, отвечающих запросу.
Общая форма записи сложносоставных вопросов:
сложный вопрос:
? <вопрос>[,<вопрос> ...]
В сложносоставных вопросах составляющие его подвопросы разделяются запятыми. Любой вопрос в Прологе начинается со знака вопроса «?» и заканчивается знаком «точка с запятой». Пример сложносоставного вопроса:
? папа (х,у), папа (у,вова);
Простые вопросы имеют следующую форму записи:
простой вопрос:
? <имя>(<арг>[,<арг> ...])
Здесь <имя> - это имя некоторого факта или правила в программе или базе знаний. Количество аргументов в таком простейшем вопросе должно строго совпадать с количеством аргументов (параметров) в описаниях соответствующих фактов и правил.
В роли аргументов в вопросах могут указываться как конкретные значения, так и переменные. Если в вопросе указаны только конкретные значения, то ответом будет логическое значение ДА или НЕТ. Если же в вопросе указываются переменные, то при положительном ответе дополнительным результатом будет вывод конкретных значений переменных, указанных в исходном вопросе.
В роли переменных в Прологе могут указываться латинские и русские буквы, как строчные, так и прописные: а, b, с, ...,
х, у, z; A, В, С, ..., X, Y, Z;
а, б, в, ... , э, ю, я; А, Б, В, ..., Э, Ю, Я.
Кроме того, в качестве имен переменных могут употребляться любые слова и словосочетания, заканчивающиеся знаком апострофа ['].
Примеры имен: дед ', х1 ', оценка4 ' и т. п.
Кроме того, в вопросах и правилах на Пролог аргументы могут иметь неопределенные значения. Для этого вместо конкретных значений или имен переменных в вопросе указывается знак подчеркивания [ _ ].
Пример вопроса с использованием неопределенных значений:
? мама (мать', _ );
Ответом на указанный вопрос будет перечень имен всех матерей, сведения о которых имеются в базе знаний.
Проверка программ на ЭВМ
В экзаменационных задачах и заданиях проверка правильности составленных программ проводится на ЭВМ путем их испытания на специально подбираемых тестах. Эта работа проводится преподавателями или экзаменаторами по завершении отладки программ на ЭВМ.
Напомним два основных определения, на которых базируется оценка правильности программ по результатам их тестирования:
1) программа объявляется содержащей ошибки,
если можно указать тесты, при которых выполнение программы на ЭВМ приводит к отказу, сбою или получению неправильных результатов;
2) программа является правильной,
если при любых допустимых исходных данных она дает правильные результаты.
Напомним два дополнительных, но весьма существенных определения допустимости исходных данных:
1) исходные данные считаются допустимыми,
если для этих данных существует решение поставленных задач;
2) исходные данные недопустимы, если для этих данных поставленная задача не имеет решений.
Наконец правильность результатов решения регламентируется следующими двумя определениями:
1) результаты решения правильные,
если они соответствуют требованиям поставленной задачи;
2) результаты решения неправильные,
если они противоречат требованиям поставленной задачи.
Подбор тестов для проверки программ опирается на некоторые общие принципы, среди которых можно выделить следующие:
1) проверка частных случаев задачи;
2) проверка основных случаев задачи;
3) проверка граничных случаев.
Частные случаи - те, которые допускают простейшие способы решения и проверки правильности результатов. Граничными случаями объявляются данные, которые лежат на границе между допустимыми и недопустимыми данными.
Разбор этих понятий проведем на примере типичной экзаменационной задачи по информатике.
Задача. «Средняя зарплата».
Среди N сотрудников отдела выделить тех, кто получает зарплату выше средней по данным из следующей таблицы:
Иванов | начальник | 2500 | |||
Петров | сотрудник | 1800 | |||
Сидоров | секретарь | 900 |
Типичность этой задачи заключается в том, что она является одной из задач обработки данных, представленных в нашем случае таблицей. Частным случаем в этой задаче является таблица, состоящая из одной строки (случай N = 1). Граничным случаем - ситуация, когда все сотрудники получают одинаковую зарплату и никто из них не получает зарплату выше средней.
Типичными ошибками в программах решения этой задачи может быть отсутствие обработки частного случая, когда N = 1, либо отсутствие ответа на граничную ситуацию, когда все получают одинаковую зарплату.
Приведем примеры тестов, применявшихся при проверке на ЭВМ правильности программ решения этой задачи:
1) тест1 (проверка основного случая):
Иванов |
начальник |
2500 |
Сидоров |
секретарь |
900 |
Иванов |
начальник |
2500 |
Иванов |
начальник |
2000 |
Петров |
сотрудник |
2000 |
Правильными ответами с точностью до формулировок в этой задаче являются:
ответ1 (основной случай):
Иванов |
начальник |
2500 |
«никто не получает зарплату выше средней»
ответ3 (граничный случай):
«никто не получает зарплату выше средней»
Приведем правильное решение поставленной задачи в форме программы на языке Basic, в которой исходные данные записываются в списке операторов data. Разработку приводимой ниже программы проведем, начиная с составления сценария, в котором учитываются все ситуации и частные случаи постановки задачи.
Сценарий
список сотрудников:
… … …
з/ плата выше средней:
… … …
Программа Алгоритм
' выше средней з/платы алг «выше средней з/платы
сls нач
? «сотрудники:» вывод «сотрудники:»
do цикл
read Hn$, dl$, zp чтение fm$, dl$, zp
if fm$=«» then exit do если fm$=«» то выход
? fm$, dl$, zp вывод fm$, dl$, zp
sum = sum + zp sum
=
sum + zp
n = n + 1 n = n + 1
loop кцикл
sr = sum/n sr
=
sum/n
? «средняя з/плата=»; sr вывод («средняя 3/nлama=»;sr)
? «з/плата выше средней:» вывод(«з/плата выше средней:»)
restore zplts перезагрузка данных
ns = 0 ns
= 0
for k = 1 to n от k = 1 до п
read fm$, dl$, zp чтение fm$, dl$, zp
if zp > sr then если zp > sr то
? fni$, zp вывод (fm$, zp)
ns = ns + 1 ns
=
ns + 1
end if кесли
next k кцикл
if ns = 0 then если ns = 0 то
? «нe получает никто» вывод («не получает никто»)
end if кесли
end кон
zplts: 'данные о зарплате:
data «Иванов», «начальник», 250000
data «Сидоров», «секретарь», 90000
data «», «», 0
Проверку правильности этой программы следует провести на указанных выше трех тестах. Достоинства приведенной программы:
1) хорошо организованный вывод результатов, совмещенный с выводом исходных данных (свойства, заложенные в сценарий);
2) удобная организация структуры программы, позволяющая локализовать возможные ошибки (свойства структурированных алгоритмов);
3) удобная организация исходных данных в тексте программы, позволяющая упростить процедуру тестирования и отладки программы на ЭВМ.
Экзаменационные задачи ГУУ
(Государственный университет управления)
Задача 1
Каждое из N фермерских хозяйств представило свой перечень из М машин разных наименований (марок) на их приобретение в единственном экземпляре (N и М заданы). Составить общий перечень необходимых марок машин с указанием их количества, расположив марки в порядке убывания потребности в них.
Задача 2
N сотрудников (известны фамилии) работают в 2 смены по индивидуальному графику (1-й день - «утро», 2-й день - «вечер», 3-й день - «выходной»). Все они в свое нерабочее время должны пройти диспансеризацию в медпункте, который работает ежедневно в 2 смены. В день начала диспансеризации о каждом сотруднике известно в какую смену он работает или то, что он выходной. Составить ежедневные списки посещения сотрудниками медпункта с указанием времени посещения («утро» и «вечер»), учитывая, что в каждой смене медпункта могут быть приняты не более М человек должен посетить медпункт один раз. Числа N и М заданы.
Задача 3
На кинофестивале 35 стран представили свои фильмы. Общее число фильмов не превышает 100. Известны названия стран - участниц и фильмов, а также баллы, полученные каждым из фильмов. Определить фильм, завоевавший первый приз (максимальный балл) и страну, получившую наибольший средний балл за представленные фильмы.Считать, что фильмы в общем списке по странам не упорядочены, а фильм и страна, его представляющая, является единственными победителями.
Задача 4
Известны очки, полученные каждым из М спортсменов-многоборцев в каждом из N видов соревнований (N и М заданы). Для каждого из спортсменов определить, в каких видах соревнований он получил результат не хуже других спортсменов и какой конкретно. Фамилия спортсменов и названия видов соревнований известны.
Задача 5
Даны сведения о соревновании N фигуристов ( N - заданное число): фамилия, наименование спортивного общества, 10 оценок за выступление. Требуется по каждому спортивному обществу определить фигуриста, показавшего наивысший результат, считая его единственным. Баллы, полученные фигуристом, подсчитываются следующим образом: максимальная и минимальная оценки отбрасываются, а из остальных формируется средняя.
Работа на персональных ЭВМ
Работа на ЭВМ обычно проходит в форме диалога человека с компьютером. Человек просматривает информацию на экране компьютера, указывает на нее мышкой, нажимает клавиши, набирает команды, вводит слова, числа, фразы и т. п. В ответ компьютер выводит свою информацию: сообщения, меню, заставки, диаграммы, рисунки, результаты вычислений и обработки данных.
Работа ЭВМ основана на использовании программ.
Программы для ЭВМ - это форма представления данных и команд, предназначенных для получения определенных результатов или способа функционирования ЭВМ.
Совокупность программ для данного типа ЭВМ определяет все многообразие их применений. На персональных компьютерах наиболее часто применяются игры, редакторы текстов, базы данных, информационные системы, электронные таблицы, системы программирования и т. п.
Главной среди программ на ЭВМ является операционная система, которая постоянно хранится в долговременной памяти компьютера. Работа ЭВМ начинается с загрузки операционной системы, а все остальные программы запускаются с помощью операционной системы.
Операционная система - это главная программа, управляющая работой компьютера в целом. На персональных компьютерах типа IBM PC используются в основном операционные системы MS DOS и Windows. В персональных компьютерах Macintosh применяется операционная система OS/7.
Операционная система MS DOS - это самая простая операционная система для компьютеров IBM PC. Она используется на всех младших моделях IBM PC и может применяться на всех старших моделях компьютеров этого же типа.
Операционная система Windows - наиболее современная и удобная операционная система для старших моделей персональных компьютеров IBM PC. Эта система может использоваться только на компьютерах старших моделей с оперативной памятью более 2 Мбайт и памятью на жестких дисках не менее 80 Мбайт.
На персональных компьютерах IBM PC используются несколько версий операционной системы Windows; созданных всемирно известной фирмой Microsoft: Windows 3.1, Windows-95, Windows-98, Windows-2000, отличающихся своими функциями и возможностями.
Основными объектами во всех операционных системах на ЭВМ являются файлы, программы и каталоги. Все программы в ЭВМ представляются отдельными файлами или наборами файлов, хранящихся в определенном каталоге.
Файлы - это последовательность записей на машинных носителях - магнитных или оптических дисках, магнитных или перфолентах и т.п. Все данные и программы на ЭВМ записываются в виде файлов или наборов файлов. Все файлы в памяти ЭВМ имеют уникальные имена.
Совокупности файлов в памяти ЭВМ объединяются в форме каталогов и подкаталогов. Каждый каталог имеет свое уникальное имя. Имя подкаталога образуется из его собственного имени и имени каталога, в котором он находится. Имена каталогов (оглавлений) записываются большими (прописными) буквами, а имена файлов - малыми (строчными) буквами.
В операционных системах MS DOS и Windows имена файлов
образуются из латинских букв и цифр с добавлением трехбуквенных окончаний после точки. Для записи окончаний в этих операционных системах приняты правила:
.ехе - программа, готовая к выполнению;
.com - программа, готовая к выполнению;
.bat - командный файл операционной системы;
.txt - текстовый файл;
.doc - текстовый файл.
Работа с любыми операционными системами - это в основном работа над каталогами файлов и программ, размещенных на магнитных и оптических дисках. Эта работа состоит в просмотре каталогов и подкаталогов, копировании файлов и запуске тех или иных программ.
В любой современной операционной системе работа с ЭВМ происходит в основном с помощью менеджеров программ и файлов. Эта программа позволяет человеку в диалоге с компьютером просматривать каталоги программ и файлов во внешней памяти:
С: А:
Name |
Name |
Name |
Name |
Name |
Name |
… |
begin.bat |
file2.dat |
TUTOR |
MUSIC |
|
DOS |
prog1.exe |
TEACHER |
GRAF |
||
NC |
prog2.exe |
CALC |
DOC |
||
KAYMIN |
text1.txt |
EDIT |
|||
BOOK |
text2.txt |
BASE |
|||
PAСET |
file1.dat |
PROLOG |
|||
text1.txt |
4096 |
26.12.96 |
6720 bytes in 1 files selected |
В приведенном примере указаны два каталога:
каталог на жест ком диске С, на котором размещена операционная система DOS, и каталог на гибком диске А с пакетом программ, включающим электронный учебник TEACHER, клавиатурный тренажер TUTOR и другие учебные программы из пакета программ для лабораторных работ по информатике.
Запуск программ на персональных ЭВМ обычно проводится перемещением курсора на экране с помощью клавиш-стрелок или мышки на имя программы в каталоге, подлежащей выполнению, а затем - нажатием клавиши ввода Enter на клавиатуре либо нажатием клавиши на мышке.
Для установки новых программ на ЭВМ они должны быть предварительно записаны на оптическом или гибких дисках, либо получены по электронной почте через Интернет. Для этого диск с новыми программами должен быть установлен в соответствующий дисковод.
Для перезаписи программ и файлов необходимо выявить каталог, где они записаны; далее указать или создать каталог, куда они должны быть переписаны и только после этого указать команду «запись» и нажать клавишу Enter либо клавишу на мышке.
В любом случае до записи новых программ на жесткие диски вашей ЭВМ необходимо проверить отсутствие вирусов на этих дисках или в файлах, полученных по Интернет. При обнаружении вирусов немедленно пролечите эти файлы и диски с помощью антивирусных программ.
Компьютерные вирусы - это специальные саморазмножающиеся программы. Эти программы могут испортить или уничтожить программы и файлы, хранящиеся в памяти компьютера. Заражение компьютерными вирусами происходит исключительно при копировании файлов с помощью дискет или при их передаче по сети Интернет.
Наиболее опасные вирусы могут испортить или уничтожить всю информацию в ЭВМ и сделать неработоспособным компьютер и даже сеть ЭВМ. Для предотвращения от таких последствий используются специальные меры и программы.
Для защиты от вирусов используются специальные
антивирусные программы, которые необходимо устанавливать и периодически обновлять на ЭВМ.
Работа антивирусных программ заключается в диагностике и удалении компьютерных вирусов в файлах и программах на ЭВМ.
Для надежной работы Ваших компьютеров и предотвращения потерь информации на дисках придерживайтесь следующих правил «компьютерной гигиены»:
1) при вводе чужих дисков в свою машину первым делом проверьте их на вирусы;
2) после работы на чужой машине сразу же проверьте свои диски на вирусы.
Для защиты от компьютерных вирусов при работе в сети Интернет придерживайтесь следующих правил:
3) не открывайте файлы, полученные по почте, без проверки их на вирусы;
4) не запускайте программы, полученные по Интернет, без их проверки на вирусы.
Для борьбы с компьютерной заразой постоянно обновляйте свои антивирусные программы. Учтите, что «супер-программисты», создающие компьютерные вирусы, постоянно ищут средства и способы для преодоления защиты от вирусов и проникновения в чужие компьютеры.
Кроме защиты от вирусов на любых ЭВМ может быть предусмотрена также защита от несанкционированного доступа к ЭВМ и хранящимся в них данным. Простейшим средством для этого является введение паролей для доступа к ЭВМ или определенным сегментам ее памяти.
В о п р о с ы
1. Что такое - программы для ЭВМ?
2. Каковы основные типы программ?
3. Что такое операционная система?
4. Какие операционные системы используются на IBM PC?
5. Что такое файл на ЭВМ?
5. Как записываются имена файлов и каталогов на ЭВМ?
6. Как проводится перезапись программ на компьютере?
7. Что такое компьютерные вирусы?
8. Как предохраняться от компьютерных вирусов?
9. Для чего используются пароли на ЭВМ?
З а д а н и е
1. Проработайте на компьютере с клавиатурным тренажером следующие наборы слов:
а) русские слова; в) английские слова;
б) числа и формулы; г) слова языка Бейсик.
2. Узнайте, как на Вашем компьютере запускаются антивирусные программы.
3. Проверьте память своего компьютера на наличие вирусов.
4. Проверьте свои диски на наличие компьютерных вирусов.
5. Узнайте - сколько свободной памяти на Ваших дисках.
Редактирование текстов на ЭВМ
Подготовка и редактирование текстов - это одно из наиболее частых применений персональных компьютеров. Простота и удобство редактирования текстов на ЭВМ привели к тому, что для подобных работ практически перестали использоваться пишущие машинки.
Редакторы текстов на ЭВМ - это специальные программы, позволяющие вводить, искать, редактировать и сохранять различные тексты на ЭВМ вплоть до научных отчетов и литературных произведений, а также личных и служебных архивов.
Редакторы текстов на ЭВМ - это наиболее удобное средство для подготовки различного рода документов и создания архивов документов на ЭВМ. Ведение такого рода архивов составляет основу работы большого числа людей - бизнесменов, юристов, писателей, ученых, журналистов, инженеров, секретарей, референтов и многих других специалистов.
Документом считается информация, зафиксированная на материальном носителе, имеющем реквизиты, позволяющие его идентифицировать. К числу реквизитов документа относится фамилия автора (исполнителя) и дата его создания (подписания), а также входящая или исходящая регистрация при размещении его в архивах.
На персональных компьютерах IBM PC наибольшее распространение получили редакторы текстов Word и Лексикон. Word - это лучший редактор текстов для операционной системы Windows. Лексикон
- это один из лучших отечественных редакторов текстов для компьютеров с операционной системой MS DOS.
В ЭВМ с накопителями на жестких магнитных дисках могут храниться и редактироваться целые книги. Одна страница текста, имеющая 30 строк по 60 знаков в строке, требует для хранения 1800 байт »
1,76 Кбайт памяти.
Книга из 100 страниц указанного размера занимает около 176 Кбайт на магнитных дисках. Соответственно, на дисках объемом 200 Мбайт может храниться более 100 таких книг.
Набор текстов на клавиатуре компьютера проводится так же, как и на пишущих машинках. Но при этом тексты выводятся не на бумагу, а на экран дисплея, на котором и производятся все исправления.
Если текст большой, то на экране будет видна только его часть, а весь текст будет храниться в памяти ЭВМ.
Экран ЭВМ:
Я помню чудное мгновенье:
Передо мной явилась ты,
Как мимолетное виденье,
Как гений чистой Ü
Значок Ü для указания на экране места исправления символа или слова называется курсором. Перемещение курсора по экрану проводится с помощью мышки или клавиш стрелок. Для исправления букв, слов или фраз курсор подводят к их началу.
Исправления в тексте на персональных компьютерах можно вносить неоднократно. Вставка или замена символов и слов проводится набором их на клавиатуре. Удаление символов и слов выполняется нажатием клавиши Del или Bs. Для переключения режима вставка/замена нажимается клавиша Ins. Удаление строк и вставка новых строк проводятся выделением их на экране с последующим нажатием клавиши Del.
Используя выделение фрагментов текстов на экране компьютера, их можно переносить из одного места текста в другое. Можно выделять их курсивом, подчеркиванием, изменением толщины или вида шрифта.
В многооконных редакторах фрагменты можно переносить из одного текста в другой. Для этого на экране одновременно открывается два или более текстов сразу в нескольких окнах.
Поиск текстов на магнитных дисках также проводится через основное меню указанием на слово «файл» (file), а затем на режим «открытие» (open). Результатом будет появление оглавления с именами файлов и других каталогов, на которые можно указывать с помощью мышки или клавиш-стрелок. Нажатие клавиши Enter приведет к появлению текста на экране ЭВМ.
Запись текстов на диски в редакторах проводят обращением к основному меню, указав на слово «файл» (file). Далее в появившемся на экране подменю нужно указать вид операции - «запись»(write), а затем имя файла, под которым текст записывается на магнитные диски, после чего нажимается клавиша ввода Enter.
Во многих редакторах можно создавать сложные тексты, вставляя различные таблицы, диаграммы, рисунки и даже фотографии.
С помощью этих средств можно создавать письма, документы и отчеты, сохраняя их на магнитных дисках и печатая в необходимом количестве экземпляров.
Возможности современных текстовых редакторов на персональных ЭВМ таковы, что с их помощью можно выполнять не только редакционную подготовку документов, писем и отчетов, но и издательскую подготовку
газет, журналов и книг практически в домашних условиях.
Создание книг на ЭВМ приводит к появлению электронных книг и журналов как новых видов литературных произведений. Копирование и распространение электронных книг, газет и журналов должно подчиняться законам авторского права, так же как и создание и распространение бумажных книг, журналов и газет.
Авторские права на произведения состоят в следующем:
1) право на имя - в произведении должно присутствовать имя автора;
2) право на изменения - только автор может вносить изменения в произведение;
3) имущественные права - автор является собствеником созданного произведения.
Автором считается лицо, творческим трудом которого создано произведение. Автор имеет права требовать указания своей фамилии на всех экземплярах (копиях) своего произведения. В соответствии с законом об авторских правах только автор может вносить изменения при модификации произведения.
Защита прав собственности на произведение фиксируется знаком © (copyright - права на копирование) с указанием фамилии или псевдонима автора. Включение в произведение копирайта (знака ©) означает, что никто не имеет права копировать произведения без заключения письменного договора с его автором (авторами).
Согласно международному праву на электронные книги, учебники, базы данных и программы для ЭВМ распространяются те же авторские права, как и на обычные литературные произведения.
Использование программ, баз данных, электронных книг и учебников в коммерческих целях возможно только при заключении договоров с владельцами авторских прав. Нарушители авторских прав обязаны возмещать ущерб издателям и авторам произведений.
В о п р о с ы
1. Что такое редактор текстов?
2. Что такое - документ?
3. Каковы основные операции редактирования текстов?
4. Сколько страниц текста может быть записано:
а) на кассете магнитной ленты с объемом памяти 100 Кбайт;
б) на гибком диске с объемом памяти 1 Мбайт?
5. Как тексты записываются на магнитные диски?
6. Как узнать, какие тексты хранятся в памяти компьютера?
7. Что такое авторские права на произведение?
8. В чем состоят имущественные права авторов?
9. Как называются нарушители авторских прав?
З а д а н и я
1. Введите с помощью редактора текстов любимое четверостишие, выведите его на бумагу и запишите на магнитные диски.
2. Подготовьте текст поздравления с Новым годом для родителей, близких и друзей. Выведите на печать два-три поздравления для разных адресатов.
3. Перепишите четверостишие и поздравления на ваши диск и попробуйте прочитать их с помощью диспетчера файлов или программы Norton Commander.
4. Подготовьте на ЭВМ договор на издание сборника ваших рассказов с указанием Ваших авторских прав.
Решение прикладных задач
Решение задач на ЭВМ является одним из основных источников для создания алгоритмов и программ. Экономические задачи и проблемы обработки данных - один из важнейших классов прикладных задач, решаемых на ЭВМ.
Применение компьютеров для решения экономических задач существенно упрощает работу по подготовке и обработке данных. Одной из причин в использовании ЭВМ для решения этих задач - снижение трудоемкости и уменьшение числа ошибок при обработке данных.
Для решения многих экономических задач на ЭВМ используются электронные таблицы и специальные пакеты программ. Однако решение любых новых прикладных задач на ЭВМ предполагает необходимость создания новых алгоритмов и программ на основе определенных математических методов решения и обработки данных.
Особое значение правильность алгоритмов
имеет для экономических задач, поскольку ошибки в их решении могут дорого стоить. Неправильные экономические расчеты могут нанести материальный ущерб или даже привести к банкротству целую организацию.
Для предотвращения ошибок можно использовать систематические методы конструирования алгоритмов и программ с одновременным анализом их правильности. Последовательное применение этих методов обеспечивает составление прикладных алгоритмов и программ с гарантиями их правильности.
Общий принцип систематического подхода к составлению алгоритмов и программ заключается в последовательной разработке спецификаций: постановок задач, способов и методов их решения, а также сценариев работы в процессе решения задач.
Составление программ
задача ® способы
¯ ¯
постановка ® методы
¯ ¯
сценарий ® алгоритмы
¯ ¯
ЭВМ ¬ программы
Систематический анализ правильности алгоритмов и программ сводится к сопоставлению этих спецификаций друг с другом: программ - с алгоритмами, алгоритмов - со сценариями и описаниями методов, а методы решения - с постановками задач.
Анализ правильности
задача ¬ способ
постановка ¬ методы
сценарий ¬ алгоритмы
ЭВМ ® программы
Приведем примеры систематической разработки алгоритмов и программ решения экономических задач на ЭВМ с обоснованием их правильности. Главной особенностью этих задач является то, что все они относятся к задачам обработки данных.
Первый пример экономической задачи - определение средней зарплаты в организации. Допустим, что данные о зарплате представлены таблицей:
фамилия должность зарплата
Иванов |
директор |
300000 |
Петров |
менеджер |
240000 |
Сидорова |
секретарь |
120000 |
Приведем постановку задачи и описание метода вычисления средней зарплаты.
Постановка задачи Метод расчета
Определение средней зарплаты.
Дано:
(D1, ..., DN) - данные о сотрудниках,
где D = [Fam, Т, Z] - состав данных,
Fam - фамилия, D1-
должность, S0
= 0
Z - зарплата. Sk = Sk-1*(k-l )/k + Zk/k
Треб: Zcpeдн - средняя зарплата. [k=(l...N)]
Где:
Zcpeдн = (Z1 + Z2
+ ... + ZN)/N. Zcpeдн = SN
При: N > 0.
Прежде всего убедимся, что выбранный метод вычисления правилен. Для этого воспользуемся индукцией. Рассмотрим результаты вычислений на первых трех шагах.
При k = 1 результат
S1=S0(1 - 1)/1 +Z1/1 =Z1/1.
При k = 2 результат
S2
= S1(2 - 1)/2 + Z2/2 = Z1/2 + Z2/2.
При k = 3 результат
S3 = S2(3 - 1)/3 + Z3/3 = (Z1 + Z2)/3 + Z3/3.
По этим трем результатам можно утверждать, что в общем случае результатом k-го шага вычислений будет
Sk
= (Z1 + ... + Zk-1)/k.
Справедливость этого утверждения можно доказать по индукции. Допустим, что оно справедливо для (k-l)-ro шага:
Sk-1
= (Z1 + ... + Zk-1)/(k-l).
Тогда из описания метода вычислений очередное k-e значение будет равно
Sk = Sk-1(k-l)/k + Zk/k =
= (Z1 + ... + Zk-1)/(k-l)×(k-l)/k + Zk/k = (Z1 + ... + Zk-1)/k + Zk/k.
Что и требовалось показать. Следовательно, в силу математической индукции это утверждение справедливо для всех k = 1, 2,..., N. В частности, для последнего шага вычислений при k = N конечным результатом будет
SN
= (Z1 + ... + ZN-1)/N + ZN/N = (Z1 + ... + ZN)/N.
Таким образом, выбранный метод дает правильный результат для любой последовательности величин Z1, Z2, ..., ZN.
Для конструирования алгоритма и программы решения задачи на ЭВМ примем следующий сценарий, а для представления данных воспользуемся операторами data.
Сценарий Представление данных
список сотрудников: dan: 'данные сотрудников
{<фам> <должн> <з/плата>}* data «Иванов»,«директор», 300000
{...................} data «Петров»,«менеджер», 240000
средняя з/плата= <Zcpeд> data «Сидорова»,«секретарь», 120000
data «», «», 0
При выбранных сценарии, методе расчета и представлении данных систематическое конструирование приводит к следующим алгоритму и программе.
Алгоритм Программа
алг «средняя зарплата» ' средняя зарплата
нач cls
вывод («список сотрудников:») ? «список сотрудников:»
s
:= 0: k := 0 s = 0: k = 0
цикл do
чтение (fam$, dl$, zpl) read fam$, dl$, zpl
при fam$ = «» выход if fam$ = «» then exit do
вывод (fam$, dl$, z) ? fam$; dl$; z
k
:= k + 1 k = k + 1
s
:= s*(k - 1)/k + z/k s = s*(k - 1)/k + z/k
кцикл loop
zsr = s zsr = s
вывод («средняя 3/nлama=»,zsr) ? «средняя з/плата=»; zsr
кон end
Для полного обоснования отсутствия ошибок в приведенном алгоритме и программе приведем описание результатов их выполнения на ЭВМ.
Алгоритм Результаты выполнения
алг «средняя зарплата»
нач
вывод («список сотрудников:») список сотрудников:
s := 0: k := 0 S0 = 0 [ k = 0 ]
цикл
чтение (fam$, dl$, z)
при fam$ = «» выход
вывод (fam$, dl$, z) <famk> <dlk> <zk> }*
k:=k + 1 [ k= (1...N) ]
s := s*(k - 1)/k + z/k sk = sk - 1×(k - 1)/k + zk/k
кцикл
zsr
= s zsr = sN
вывод («средняя з/nлama=»,zsr) средняя з/плата= <zsr>
кон
Сравнение результатов выполнения программы с описанием метода вычисления и выбранного сценария подтверждает их соответствие друг другу и как следствие правильности выбранного метода вычислений - правильность составленных алгоритма и программы расчета средней зарплаты.
В качестве второго примера рассмотрим решение типичной задачи подсчета суммарной стоимости товаров с выделением товаров наибольшей стоимости. Допустим, что исходные данные представлены следующей таблицей:
товар цена кол-во
яблоки |
8000 |
3 |
бананы |
4000 |
2 |
арбузы |
1000 |
20 |
Приведем постановку задачи и описание способа ее решения.
Постановка задачи Способ решения
Определение суммарной
и максимальной стоимости товаров.
Дано:
(D1, ...,
DN) - данные о товарах,
где D = [Tov, C, M] - состав данных, s0 = 0
Tov - товар, С - цена товара, от k = 1 до N цикл
М - количество товара, sk
= sk-1 + СkМk
Треб: если k = 1 то
Sum - суммарная стоимость товаров, mах1
= С11М11
TovMax - товар максимальной инеc СkМk > mахk-1 то
стоимости.
Где: mахk
= СkМk
Sum = C1M1 + С2М2
+ ... + СNМN, все
TovMax: C×M = Мах(С1М1, ... ,СNМN). кцикл
При:
N > 0.
Прежде чем приступить к составлению алгоритмов и программ, убедимся в правильности выбранного способа решения. Для этого проверим результаты на первых шагах, в середине и в конце вычислений. На первом шаге при k = 1 результат
s1
= s0 + С1М1 = С1M1,
max1
= С1М1.
На втором шаге вычислений будут получены следующие значения:
s2
= s1 + С2М2 = C1M1
+ С2М2,
max2 = С2М2, при С2М2 > max1 = Мах(mах1, С2М2),
max1, при С2М2
£ max1 = Мах(mах1, С2М2).
На третьем и последующих шагах в общем случае будут получаться результаты:
sk
= sk-1 + CkMk = C1M1 + … + CkMk,
maxk
= Max(maxk-1, СkМk) = Мах(С1М1, ..., СkМk).
Для доказательства этих утверждений необходимо предположить, что они выполняются для случая k-1:
sk-1
=C1M1 +...+ Ck-1Mk-1,
maxk-1
= Max (C1M1, …,Ck-1Mk-1),
и подставить эти выражения в соотношения для sk и mахk:
sk
= sk-1 + CkMk = C1M1 + … Ck-1Mk-1 + CkMk,
maxk
= Max(maxk-1, СkМk) = Мах(С1М1, ..., СkМk).
В силу математической индукции эти утверждения верны для всех k = 1, 2, ..., N. Поэтому на последнем шаге вычислений при k = N будут получены окончательные результаты:
sN
= sN-1 + CNMN = C1M1 + … + CNMN,
maxN
= Max(maxN-1, СNМN) = Max(C1M1, ... , СNМN).
Что и требовалось в постановке задачи. Следовательно, выбранный способ решения поставленной задачи правилен и на его основе можно приступать к составлению соответствующих алгоритма и программы.
Для систематичности разработки примем следующий сценарий диалога и представление исходных данных в операторах data.
Сценарий Представление данных
список товаров
товар цена кол-во
<тов1> <с1> <т1> * dan: 'сведения о товарах
… .... ... data яблоки, 8000, 3
сумма = <Sum> data бананы, 4000, 2
Максимум data арбузы, 1000, 20
<товар> <стоим> data «», 0, 0
Приведем алгоритм и программу решения поставленной задачи в соответствии с выбранным сценарием и представлением данных.
Алгоритм Программа
алг «сумма и максимум» '
сумма и максимум
нач сls
вывод («список товаров») ? «список товаров»
вывод («товар цена кол-во») ? «товар цена кол-во»
s := 0; k = 0 s = 0: k = 0
цикл do
чтение (тов, с, т) read tv$, с, m
при тов = «» выход if tv$ = «» then exit do
k := k + 1 k = k + 1
вывод (тов, с, т) ? fv$; с; m
s :=s + cm s= s + c(m
если k = 1 то if k = 1 then
max
:= c×m max = c×m
ToвMax
:= тов ТМ$ = tv$
инес c(m > max то elseif c(m > max then
max
:= c×m max = c×m
ToвMax := тов TM = tv$
кесли end if
кцикл loop
вывод («cyммa=»,s) ? «cyммa=»,s
вывод («Максимум») ? «Максимум»
вывод (ToвMax, max) ? TM$, max
кон end
Сравнение результатов выполнения представленных алгоритма и программы с описанием выбранного способа решения показывает их полное соответствие друг другу.
Алгоритм Результаты выполнения
алг «сумма и максимум»
нач
вывод («список товаров») список товаров
вывод («товар цена кол-во») товар цена кол-во
s :=0; k = 0 s0 =0 [k = 0]
цикл
чтение (тов, с, т)
при тов = «» выход
k:=k+1 [k= 1,2,...,N]
вывод (тов, с, т) { <тов> <с> <m> }*
s := s + с×т sk = sk-1 + ck×mk
если k =1 то при k = 1
тах
:= c×m max1 = c1×m1,
ТовМах
:= тов ToвMaх1 = тов1
uнес c×m > тах то при сk×mk
> mах
тах
:= с×т mахk
= сk×mk
ТовМах
:= тов ТовМахk
= товk
кесли
кцикл
вывод («сумма=», s) cуммa = <sN>
вывод («Максимум») Максимум
вывод (ТовМах, тах) <ToвMaxN> <maxN>
кон
Из расмотренных примеров следует, что правильность алгоритмов и программ зависит прежде всего от правильности выбранных методов решения. Составление соответствующих им алгоритмов и программ сводится к решению технических проблем.
Можно утверждать, что правильные алгоритмы и программы - это корректная реализация правильных методов решения. Ошибки в выбранных методах решения носят не алгоритмический, а принципиальный характер и их следует искать не с помощью отладки программ на ЭВМ, а исследованием самих методов.
Рассмотрим самую популярную экономическую задачу -
расчет семейного бюджета в целях анализа достатка семьи. Напомним, что достаток семьи - это остаток от разности доходов и расходов:
достаток = доходы - расходы.
Допустим, что данные о семейном бюджете представлены двумя таблицами: - таблицей доходов и таблицей расходов:
Доходы Расходы
папа |
3000 |
питание |
200 |
мама |
1200 |
одежда |
120 |
брат |
2000 |
транспорт |
60 |
я |
600 |
отдых |
30 |
разное |
50 |
Приведем точную постановку задачи и опишем метод ее решения.
Постановка задачи Метод решения
Определение достатка семьи.
Дано: S = Sd - Sr
D = (дох1, ..., дох N) - доходы, Sd = сN
R = (расх1, ..., расхМ) - расходы, сk = сk-1 + dk
где дох = (имя, d), [k = (1...N)]
расх = (стат, r). с0
= 0
Треб.:
S - достаток семьи. Sr = bM
Где: bi = bi-1 + ri
S = Sum (d1, …, dN) - Sum (r1, .... rM). [i =
(1 ... M)]
При: N, M > 0. b0
= 0
Для решения задачи на ЭВМ в качестве представления данных примем два списка операторов data, а для организации вывода результирующих данных - следующий сценарий.
Сценарий Представление данных
Подсчет достатка 'doch: ' доходы
Доходы семьи: data «папа», 300000
<имяk>
<dk> * data «мама», 120000
... ... data «брат», 200000
Доходов = <Sd> data «», 0
Расходы семьи:
<статk> <rk> * rash: ' расходы
... ... data «питание», 200000
Расходов = <Sd> data «одежда», 120000
Достаток = <S> data «транспорт», 60000
data «», 0
Приведем соответствующие этому сценарию и выбранному методу представления данных алгоритмы и программу на Бейсике:
алг «достаток семьи» 'достаток семьи
нач cls
вывод («Подсчет достатка»)
? «Подсчет достатка»
вывод («Доходы семьи:») ? «Доходы семьи:»
подсчет_доходов gosub dchs 'доходы
вывод («Доходов=», Sd) ? «Доходов=», Sd
вывод («Расходы семьи:») ? «Расходы семьи:»
подсчет_расходов gosub rashs 'расходы
вывод («Расходов =», Sr) ? «Расходов=», Sr
S
:= Sd - Sr S = Sd - Sr
вывод («Достаток=», S) ? «Достаток=», S
кон end
алг «подсчет доходов» dchs: 'подсчет доходов»
нач '
загрузка_доходов restore doch 'доходы
Sd := 0 Sd = 0
цикл do
чтение (имя, d) read namS, d
при имя
= «» вых if nam$ = «» then exit do
вывод (имя, d) ? nam$, d
Sd =
Sd + d Sd = Sd + d
кцикл loop
кон return
алг «подсчет расходов» rashs ' подсчет расходов
нач '
загрузка_расходов restore rach 'расходы
Sr := 0 Sr = 0
цикл do
чтение (стат, r) read stat$, r
при стат
= «» вых if st$ = «» then exit do
вывод (стат, r) ? st$, r
Sr =
Sr + r Sr = Sr + r
кцикл loop
кон return
Правильность составленного комплекса алгоритмов и программы расчета достатка семьи можно проверить по описанию результатов их выполнения:
«достаток семьи» «подсчет доходов» «подсчет расходов»
Подсчет достатка
Доходы семьи: Sd0
= 0 [k = 0] Sr0
= 0 [i = 0]
<подсчет_доходов>
Доходов = <Sd>
Расходы семьи: [k =(1...N)] [i =(1...M)]
<подсчет_расходов> <имяk> <dk> <стат1> <r1>
Расходов = < Sr> Sdk
= Sd/k-l/+dk Sri
== Sri-1 + ri
{ S = Sd - Sr
Достаток = <S>
Для обоснования правильности всего комплекса алгоритмов и программы в целом необходимо показать правильность каждого из вспомогательных алгоритмов: «подсчет доходов» и «подсчет расходов».
Для первого алгоритма для первых шагов вычисления получаем:
Sd0 = 0,
Sd1 = Sd0 + d1 = d1,
Sd2 = Sd1
+ d2 = d1
+ d2.
Для последующих шагов можно заключить, что
Sdk = Sdk-1 + dk = d1 + d2 + ... + dk-1 + dk.
Это доказывается с помощью математической индукции. В силу этого утверждения окончательным результатом вычислений станет сумма доходов
SdN
= d1 + d2
+ ... + dN-1 + dN.
Следовательно, алгоритм подсчета доходов - правильный.
Для второго алгоритма подсчета расходов получаются аналогичные оценки:
Sr0
= 0,
Sr1 = Sr0 + r1
= r1,
Sr2 = Sr1
+ r2 = r1 + r2
и для последующих шагов вычислений:
Sri
= Sri-1 + ri = r1
+ r2 +... + ri-1+ ri.
Это доказывается также с помощью математической индукции. На основании этого утверждения можно сделать заключение о конечном результате выполнения алгоритма:
SrM = r1 + r2 + ... + rM-1+ rM.
Следовательно, алгоритм подсчет расходов правильный. Но в основном алгоритме содержится единственная расчетная формула
S = Sd - Sr.
В силу доказанных утверждений о результатах выполнения алгоритмов «подсчета доходов» и «подсчета расходов» конечным результатом вычислений станет величина
S = Sd - Sr = (d1
+ d2 + ... + dN) - (r1 + r2 + ... + rM).
Что и требовалось доказать. Следовательно, весь комплекс алгоритмов и программа в целом правильны.
В о п р о с ы
1. К чему приводят ошибки в экономических программах?
2. Кто отвечает за ошибки в экономических программах?
3. Что дают постановки задач?
4. Зачем нужны описания методов?
5. Как проверяется правильность методов?
6. Зачем нужны описания результатов?
З а д а ч и
1. В магазине имеются товары различных наименований. В течение дня каждый из М покупателей (М - заданное число) сообщил о своем намерении приобрести определенное количество товара одного из наименований. Требуется определить суммарный спрос на товары каждого наименования, расположив товары в порядке убывания дневного спроса на них.
2. Каждый из N магазинов в течение месяца работал D дней (N и D - заданные числа 1, 2, ....
N). Известна прибыль каждого магазина в каждый день его работы. Необходимо напечатать упорядоченный по месячным доходам список названий магазинов, имеющих прибыль в пересчете на один день работы выше средней дневной прибыли по всем магазинам.
3. Каждое из N предприятий города выпускает М одинаковых наименований продукции (N и М, наименования продукции и названия предприятий известны). Заданы объем выпуска и стоимость единицы продукции каждого вида для каждого из предприятий. Необходимо для каждого вида продукции определить предприятия, выпускающие наибольший объем этой продукции.
4. Из разных городов выбрали N семей (N - заданное число). Каждая семья характеризуется числом членов и доходом каждого из них. Для каждого города сформировать перечень семей с минимальным доходом в пересчете на отдельного члена семьи, указав порядковые номера семей из общего списка.
5. Ассортимент N магазинов состоит из М товаров (N, М и названия товаров заданы). Каждый товар характеризуется наличием или отсутствием его в магазине, а также наличием или отсутствием на него спроса покупателей. Требуется перечислить названия ходовых (есть спрос и товар имеется хотя бы в одном магазине), неходовых (спрос отсутствует, а товар имеется хотя бы в одном магазине) и дефицитных (спрос есть, а товара нет ни в одном из магазинов) товаров.
Решение сложных задач
Большинство практических задач обработки данных относится к числу сложных. Сложность задач оценивается сложностью обрабатываемых данных и сложностью алгоритмов их решения. Сложность данных обычно оценивается их количеством. Сложность алгоритмов оценивается объемом вычислений, необходимых для получения требуемых результатов.
При решении сложных задач, требующих составления сложных алгоритмов, особенно сказываются преимущества доказательного программирования. Для этого программы решения сложных задач составляются из вспомогательных алгоритмов и подпрограмм, решающих более простые подзадачи.
Анализ правильности сложных алгоритмов и программ распадается на анализ правильности каждого из вспомогательных алгоритмов и на анализ правильности программ в целом. Необходимым условием для этого является составление спецификаций для каждого из вспомогательных алгоритмов и каждой подпрограммы,
При таком подходе доказательство правильности
сложных алгоритмов и программ подразделяется на доказательство ряда лемм о правильности вспомогательных алгоритмов и подпрограмм и доказательство правильности программ в целом.
В качестве иллюстрации рассмотрим две задачи, которые можно отнести к сложным проблемам обработки данных. Для каждой из этих задач приведем спецификации, алгоритмы и доказательства правильности.
Первая задача: упорядочение массивов данных. Пример, для чисел 3, 7, 9, 1, 4 упорядоченная последовательность имеет вид: 1, 3, 4, 7, 9.
Существует несколько способов и методов упорядочения массивов и последовательностей. Простейший из них называется методом «пузырька».
Метод «пузырька» состоит в нахождении в массиве наименьшего числа и перестановке его на первое место. Это как бы «пузырек», поднимающийся к началу массива. Затем в остатке массива находится наименьшее число, которое перемещается на второе место, и так далее - до исчерпания всего массива.
Для рассматриваемых чисел метод «пузырька» дает следующие перестановки:
исходные числа: 3, 7, 9, 1, 4.
перестановка1: 1, 7, 9, 3, 4.
перестановка2: 1, 3, 9, 7, 4.
перестановка3: 1, 3, 4, 7, 9. ¬ упорядочено.
Приведем точную математическую постановку задачи.
Постановка задачи
Упорядочение последовательности чисел.
Дано:
x1, х2, ..., хN - исходные числа.
Треб.: x1', x2', ..., хN' - упорядоченные числа.
Где: х1' £
х2' £
... £ хN'.
При: N > 0.
Упорядочение чисел по методу «пузырька» в общей форме имеет вид:
Способ «упорядочение чисел»
нач
от k=1 до N-1 цикл
хтп := xk
imn := k
от i=k+1 до N цикл
если xi < хтп то
хтп := xi
imn : = i
кесли
кцикл
xmn = Min (хk, ..., хN)
xk' = хтп
ximn ' = xk
кцикл хk¢ = Min (хk, ..., хN)
кон x1 < х2
< ... < хk¢
Приведенный алгоритм можно рассматривать как алгоритм, сложенный из нескольких фрагментов - вспомогательных алгоритмов, решающих определенные подзадачи.
Первый фрагмент (внутренний цикл) решает подзадачу нахождения минимального значения в подмассиве x[k:N]. Второй фрагмент решает подзадачу перемещения k-го минимального значения на k-e место в массиве.
Лемма 1. Для вспомогательного алгоритма
алг «поиск минимума»
нач
хтп
:= xk
imn := k
от i
= k + 1 до N цикл
если
xi < хтп то
хтп
:= xi
imn := i
кесли
кцикл { xmn = Min (хk, ..., х1) }
кон
конечным результатом вычислений будет значение
xmn = Min (хk, ..., хN).
Доказательство. Применим индуктивную схему рассуждений. Первое присваивание дает
xmnk =
xk.
Далее на первом шаге цикла при i = k + 1 будет получен минимум первых двух чисел:
xk+1 при xk+1 < xmnk,
xmnk+l =
xmnk при xk+1
³ xmnk.
На втором шаге цикла будет получен минимум первых трех чисел:
xmnk+2
= min (xk+2, min (хk+1, хk)) = Min (хk+2,
хk+1, хk).
Теперь можно утверждать, что на третьем и последующих шагах цикла результатом будет минимальное значение среди чисел xk , ..., xi
хmni = Min (хk, ..., хi).
Данное утверждение доказывается с помощью математической индукции. На первых двух шагах при i = k + 1, k + 2 оно уже установлено. Покажем, что оно будет выполняться на (i + 1)-м шаге. Действительно, на следующем шаге цикла результатом будет:
xi+1
при хi+1 < xmni = min(xi+1, хmni)
хmni+1
=
хmni при хi+1 ³ хmni = min(xi+1, xmni)
= min (xi+1, Min (хk , ..., хi)) = Min (хk, ..., хi, xi+1).
Что и требовалось показать. Следовательно, в силу принципа математической индукции конечным результатом выполнения рассматриваемого цикла будет значение:
xmnN
= Min (xk, ...,
хN)
Что и требовалось доказать.
Лемма 2. Для вспомогательного алгоритма
алг «перестановки»
нач { xmn = Min (хk, ..., хN) }
xi¢mn= xk
кон
конечным результатом будет значение хk' = Min (хk, ..., хN).
Доказательство. В силу леммы 1 xmn = Min (xk, ..., хN). А так как в этом алгоритме хk' =
xmn, то в итоге получим
хk' = xmn = Min (хk, ..., хN).
Что и требовалось.
Утверждение. Конечным результатом выполнения алгоритма будет упорядоченная последовательность чисел х1', ..., хN', удовлетворяющая условию х1' £ х2' £ ... £ хN'.
Доказательство проводится по индуктивной схеме рассуждений. Рассмотрим результаты выполнения основного цикла основного алгоритма:
алг «упорядочение чисел»
нач
от k = 1 до N - 1 цикл
xmn
:= хk
............... { xmn = Min (хk, ..., хi) }
х¢k
= xmnN
хmп¢
= хk
кцикл { хk' = Min (хk, ..., хN) }
кон { х1' £ х2' £ ... £ хk' }
На первом шаге при k = 1 первый элемент последовательности
х1' = Min (x1, х2, ..., хN),
На втором шаге второй элемент последовательности
x2' = Min (х2, ..., хN).
В силу свойств минимума последовательности чисел будем иметь
х1' = Min(x1, x2, ..., хN) = min (x1, Min (х2, ..., хN) £ (Min (х2, ..., хN) = x2'.
Таким образом, при k = 2 результатом станут значения х1' и x2', такие что
х1' £ x2'
На третьем шаге выполнения основного цикла результатом станет
х3 = Мin(х3, ..., хN).
Опять же в силу свойств минимума последовательности имеем
х2' = Min (х2, х3, ..., хN) = min (x2, Min (x3, ..., хN)) £ Min (x3, ..., хN) = x2'.
Таким образом, после третьего шага при k = 3 первые три значения последовательности х1', x2', x3' будут удовлетворять условию
х1'£ x2'£ x3'
Из приведенных выкладок можно сделать индуктивное предположение, что на каждом очередном k-м шаге выполнения основного цикла первые k членов последовательности х1', x2', .... хk' будут удовлетворять условию
х1'£ x2'£ … £ xk'.
Данное предположение доказывается с помощью математической индукции. На начальных шагах при k == 2 и k = 3 оно уже показано. Покажем, что оно будет выполнено на (k + 1)-м шаге, если это условие выполнено на k-м. шаге.
В силу Леммы 2 на k-м и (k + 1)-м шагах выполнения основного цикла промежуточными результатами будут
хk' = Min(xk, xk+1, ..., хN),
хk+1' = Min (xk+1, ..., хN).
В силу свойств минимума последовательности чисел имеем
хk' = Min(xk, xk+1, ..., хN) = min (хk, Min (хk+1, ...,хN)) £ Min (xk+1, ..., хN) = хk+1'.
Таким образом, хk £ xk+1 и в силу индуктивного предположения получаем, что
x1' £ х2' £ ... £ хk' £ xk+'1.
Что и требовалось доказать.
Осталось уточнить результаты выполнения последнего шага цикла при k = N - 1. В силу Леммы 2 результатом будет значение
xN-'1 = Min (xN-1, xN) £
хN'.
Таким образом, после N - 1 шагов выполнения основного цикла для последовательности в целом будут выполнены соотношения упорядоченности
x1' £ x2' £ ... £ хN' .
Что и требовалось доказать. Следовательно, рассмотренный алгоритм упорядочения чисел правильный в целом.
Применим теперь данный способ упорядочения для решения задачи сортировки. Рассмотрим следующую задачу. Пусть дана некоторая партия товаров с заданной отпускной ценой, указана цена товаров и известны остатки от их продажи. Требуется подсчитать выручку от продажи и отсортировать товары по их остатку.
Данные о товарах представлены двумя таблицами:
товар стоим кол-во
яблоки |
500 |
200 |
огурцы |
400 |
250 |
арбузы |
200 |
600 |
товар цена остаток
яблоки |
2500 |
100 |
огурцы |
2000 |
150 |
арбузы |
1200 |
200 |
Приведем точную постановку задачи и сценарий диалога с компьютером для решения поставленной задачи.
Постановка задачи Сценарий
Сортировка товаров по остатку.
Дано: товары:
D = (d1, d2, .... dN) - данные товара, <товар1> <s1> < m 1> *
d = (товар, s, m), ...... ... ...
s - стоимость, m - кол-во, остатки:
R = (r1, r2, ..., rN) - данные об остатках, <товap1> <c1> < р1> *
г = (товар, с, р), ...... ... ...
с - цена, р - остаток.
Треб.:
S - сумма выручки, выручка = <S>
R' = (r1', ..., rN') - упорядоченные данные, сортировка:
Где: <товар1'> <с1'> <р1'> *
S = (c1-s1)×(m1-p1) +...+ (сN-sN)×(mN-рN), ............
р1' £
р2' £
... £ рN',
рk' = рi для k = 1 ... N и i = 1 ... N.
При:
N > 0.
Для представления исходных данных в программе примем операторы data:
tovs: 'товары: osts: 'остатки:
data «яблоки», 500, 200 data «яблоки», 2500, 100
data «огурцы», 400, 250 data «огурцы», 2000, 150
data «арбузы», 200, 600 data «арбузы», 1200, 200
data «персик», 800, 100 data «персик», 2000, 0
data «», 0, 0 data «», 0, 0
Приведем теперь алгоритм и программу решения поставленной задачи в соответствии с выбранным сценарием и рассмотренным выше способом упорядочения массивов методом «пузырька».
При составлении алгоритмов и программы решения этой задачи будем использовать принцип нисходящей разработки «сверху-вниз»: от основного алгоритма и основной части программы к алгоритмам и подпрограммам решения вспомогательных подзадач.
При решении сложных задач существенным становится организация и представление данных: подбор массивов и переменных для размещения и обработки данных в памяти ЭВМ, а при выделении подпрограмм - процедуры доступа к этим данным.
Для размещения исходных данных о товарах в поставленной задаче примем пять массивов: tv(l:N), s(l:N), m(l:N), с (1:N), p(l:N). Общий размер этих массивов ограничим числом N = 200, которое явно выделено в описании массивов с тем, чтобы в дальнейшем его можно было увеличить для большего количества данных без других изменений программы.
алг «выручка и остатки товаров» 'выручка и остатки товаров
N
= 100 N = 100
массив tv[1:N],s[1:N],m1l:N] dim tv$(N),s(N),m(N)
массив L[1:N],c[1:N],p[1:N] dim L(N),c(N),p(N)
нач сls
вывод («товары:») ? «товары:»
данные-товаров gosub tovar 'товары
вывод («остатки:») ? «остатки:»
данные-остатков gosub ostatok 'остатки
вывод («-----») ? «-----»
подсчет-выручки gosub vyruch 'выручка
вывод («выручка», S) ? «выручка=»;S
вывод («сортировка:») ? «сортировка:»
сортировка-товаров gosub sortdan 'сортировка
кон end
По приведенному алгоритму и основной части программы видно, что последовательность ввода-вывода данных о товарах и результатов обработки полностью соответствует выбранному сценарию. Загрузку исходных данных в выбранные массивы в соответствии с принятым представлением выполнят два следующих вспомогательных алгоритма
алг «данные товаров» tovar: 'данные товаров
нач '
загрузка-товаров restore tovs
от k = 1 до N цикл for k = 1 to N
чmeнue(tv(k),s(k),m(k)) read tv$(k),s(k),m(k)
при tv(k) = «» то if tv$(k) = «» then exit for
вывод (tv(k),s(k),m(k)) ? tv$(k);s(k);m(k)
кцикл next k
если k< Nmo N := k-1 if k < N then N = k-1
кон return
Последний условный оператор изменяет верхнюю границу N массивов в том случае, если фактическое число данных меньше числа мест в массивах, размещенных в памяти компьютера.
алг «данные остатков» ostatok: 'данные остатков
нач '
загрузка-остатков restore osts
от k = 1 до N цикл for k = 1 to N
чmeнue(tv(k),c(k),p(k)) read tv$(k),c(k),p(k)
при tv(k) = «» выход if tv$(k) = «» then exit for
вывод (tv(k),c(k),p(k)) ? tv$(k);c(k);p(k)
кцикл next k
если k < N mo N := k-1 if k < N then N = k-1
кон return
Подсчет выручки в соответствии с постановкой задачи по данным, введенным в эти массивы, выполнят следующие вспомогательный алгоритм и подпрограмма:
алг «подсчет выручки» vyruch: 'подсчет выручки
нач '
S := 0 S = 0
от k = 1 до N цикл for k = 1 to N
S := S+(c(k)-s(k)) *(m(k)-p(k)) S = S+(c(k)-s(k))*(m(k)-p(k))
кцикл next k
кон return
Лемма 3. Конечным результатом выполнения данного вспомогательного алгоритма будет сумма
SN
= (с(1) - s(l))×(m(l) - р(1)) + ... + (c(N) - s(N))×(m(N) - p(N)).
Доказательство проводится с помощью индуктивных рассуждений. Первое присваивание S := 0 обеспечивает начальное значение суммы S0 = 0.
О результатах k-го шага выполнения цикла можно сделать индуктивное утверждение
Sk = Sk-1
+ (c(k)-
s(k))-(m(k) - p(k)) = (с(1) - s(l))×(m(l) - p(l)) + ... + (c(k) - s(k))×(m(k) - p(k)).
Это утверждение доказывается с помощью математической индукции. На его основании можно сделать заключение о том, что конечным результатом выполнения цикла и алгоритма в целом будет сумма
SN
= (с(1) - s(l))×(m(l) - р(1)) + ... + (c(N) - s(N))×(m(N) - p(N)).
Что и требовалось доказать.
Для сортировки данных воспользуемся алгоритмом упорядочения чисел по методу «пузырька», предполагая, что исходная и упорядоченная последовательность чисел r1, r2, ..., rN будут записаны в массиве x[l:N].
Для формирования результирующих упорядоченных данных используется массив индексов L(1:N), в котором будут записаны номера элементов исходной последовательности так, что x(k) = p(L(k)) для всех k = 1, ..., N.
алг «сортировка данных» sortdan: 'сортировка данных
массив x[1:N] dim x(N)
нач '
от k = 1 до N цикл for k = 1 to N
L(k) = k L(k) = k
x(k)=p(L(k)) x(k)=p(L(k))
кцикл next k
сортировка-массива gosub sortmas 'сортировка
от k = 1 до N цикл for k = 1 to N
i := L(k) i = L(k)
вывод (tv(i),c(i),p(i)) ? tv$(i);c(i);p(i)
кцикл next k
кон return
Модификация алгоритма упорядочения чисел, размещаемых в массиве x[l:N], с учетом перестановок значений в массиве индексов L[1:N] получает следующий вид:
алг «сортировка массива» sortmas: 'сортировка массива
нач '
от k = 1 до N-1 цикл for k = 1 to N-1
xmn := x(k) xmn = x(k)
imn := k imn = k
от i = k + 1 до N цикл for i = k + 1 to N
если x(i) < xmn то if x(i) < xmn then
xmn := x(i) xmn = x(i)
imn := i imn = i
кесли end if
кцикл next i
Imn := L(imn) Imn = L(imn)
xmn := x(imn) xmn = x(imn)
L(imn) := L(k) L(imn) = L(k)
x(imn) := x(k) x(imn) = x(k)
L(k) :=Imn L(k) = Imn
x(k) := xmn x(k) = xmn
кцикл next k
кон return
Лемма 4. Результатами выполнения алгоритма сортировки массива будут последовательность чисел, упорядоченная по возрастанию
х(1)' £ х(2)' £ ... £ x(N)'
и последовательность индексов в массиве L[1:N], удовлетворяющих условиям
x(k)' = p(L(k)) для всех k = 1, .... N.
Доказательство. Первое утверждение об упорядоченности значений х(1)' £ х(2)' £... £ x(N)' массива x[l:N] по завершении алгоритма следует из доказательства правильности алгоритма упорядочения последовательности чисел. Для доказательства второго утверждения рассмотрим результаты перестановок значений элементов:
Imn := L(imn) Imn = L(imn)
xmn
:= x(imn) xmn = x(imn)
L(imn) := L(k) L(imn)' = L(k)
x(imn) := x(k) x(imn)' = x(k)
L(k) := Imn L(k)' = Imn = L(imn)
x(k) := xmn x(k)' = xmn = x(imn)
Перед началом выполнения алгоритма упорядочения массива в алгоритме сортировки данных массив индексов L[1:N] и упорядочиваемый массив x[l:N] получают значения, удовлетворяющие следующим соотношениям:
х(i)' = P(L(i) для всех i = 1, ..., N.
Покажем, что эти соотношения сохраняются после каждого шага цикла. Действительно, на каждом очередном k-м шаге цикла будут получены следующие результаты:
Imn = L(imn)
xmn = x(imn) == p(L(imn))
L(imn)' = L(k)
x(imn)' = x(k) = p(L(k)) = p(L(imn)')
L(k)' = Imn = L(imn)
x(k)' = xmn = x(imn) = p(L(imn)) = p(L(k)')
Следовательно, после каждого шага цикла для переставленных элементов массивов сохраняются соотношения
x(i)' = p(L(i)) для всех i = 1, ..., N.
Что и требовалось доказать.
Утверждение. Конечным результатом выполнения алгоритма и подпрограммы сортировки данных будет список данных, в котором последовательность значений р1', р2', ..., рN' будет упорядочена:
p1' £ р2' £ … £ pN'
Доказательство. В соответствии с доказанной выше леммой 4 значения в массиве x[l:N] после выполнения алгоритма упорядочения чисел будут удовлетворять условиям
х(1)' £ х(2)' £ ... £ x(N)'.
В силу этой же леммы 4 значения индексов в массиве
L[1:N] будут удовлетворять соотношениям x[k]' = p(L(k)) для всех k = 1, ..., N.
Конечным результатом алгоритма сортировки данных является вывод значений из массива p[l:N] в соответствии с массивом индексов L[1:N]. Таким образом, очередные значения последовательности p1', p2',... будут равны:
р1' = p(L(l)) = х(1)',
p2'= р(L (2)) = х(2)'и т. д.
В силу упорядоченности значений х(1)', х(2)', ...,
x(N)' получаем, что значения выходной последовательности будут также упорядочены:
p1' £ р2' £ … £ pN'
Что и требовалось доказать.
Следовательно, весь комплекс алгоритмов и подпрограмм полностью соответствует поставленной задаче и гарантирует получение правильных результатов, при любых допустимых исходных данных.
Проверка на ЭВМ программы сортировки товаров, составленной таким систематическим образом, при указанных исходных данных дает следующие результаты:
товары:
яблоки, 500, 200
огурцы, 400, 250
арбузы, 200, 600
персики, 800, 100
остатки:
яблоки, 2500, 100
огурцы, 2000, 150
арбузы, 1200, 200
персики, 2000, 0
выручка = 880000
сортировка:
персики, 2000, 0
яблоки, 2500, 100
огурцы, 2000, 150
арбузы, 1200, 200
Таким образом, выполнение программы подтверждает правильность составленного комплекса алгоритмов. Полное и исчерпывающее обоснование их правильности приведено выше.
В о п р о с ы
1. Что такое сложные алгоритмы и программы?
2. Что такое упорядоченная последовательность?
3. Что такое упорядочение методом «пузырька»?
4. Как доказывается правильность сложных программ?
5. Что такое разработка программ «сверху-вниз»?
З а д а ч и
1. Составьте алгоритм и программу обработки данных о товарах и постройте обоснование их правильности для следующих задач:
а) подсчет планируемых доходов от продажи товаров;
б) подсчет начальной суммы вложений реализации товаров;
в) подсчет планируемой прибыли от продажи товаров;
г) подсчет текущей задолженности.
2. Составьте алгоритм и программу сортировки данных о товарах и постройте обоснование их правильности для следующих задач:
а) сортировка данных по начальному количеству;
б) сортировка данных по остаточному количеству;
в) сортировка данных по начальной стоимости;
г) сортировка данных по продажной цене.
3. Составьте алгоритм и программу сортировки данных о товарах по следующим признакам и приведите обоснование их правильности:
а) по доле планируемых доходов от реализации товаров;
б) по доле прибыли от реализации товаров;
в) по доле убыточности реализации товаров.
Решение задач на ЭВМ
Решение задач должно начинаться с их точной постановки. Постановка задач - это четкое выделение того, что требуется, и того, что дано:
Постановка
Задача
требуется?
дано?
Следующий этап - определение способа решения задачи. Способ решения - это набор действий, позволяющих получить требуемое из исходного:
Решение
Задача
исходное ® способ ® результаты
Результат правильный, если он отвечает требованиям. Получение результатов - главное в решении любых задач. Отсутствие или неправильность результатов говорит о неуспехе деятельности.
Результат неправильный, если он не соответствует требованиям. Однако при отсутствии четких требований невозможно однозначно судить о правильности или неправильности результатов.
При решении на ЭВМ постановка задач предполагает представление требуемого и исходного в виде данных. Способы решения задач на ЭВМ в такой постановке должны быть представлены соответствующими алгоритмами и программами обработки данных.
Решение на ЭВМ
Задача
¯
Программа
¯
данные ® ЭВМ ® результаты
При отсутствии готовых программ для решения задач возникает проблема создания соответствующих алгоритмов и программ. В любом случае необходимо подобрать и определить способы, методы и средства для решения поставленных задач.
Систематический подход к составлению программ предполагает в качесте первого этапа составление спецификаций - описаний форм ввода и хранения данных в ЭВМ, а также получения и вывода результатов. Эти спецификации в дальнейшем будут использоваться для оценки правильности созданных программ.
Для диалоговых программ в роли таких спецификаций выступают сценарии диалога - полные описания результатов и правил работы с ЭВМ при решении поставленных задач. Только после создания таких спецификаций должны составляться соответствующие им алгоритмы и программы.
Составление программ
задача ® способы
¯ ¯
сценарий ® алгоритмы
¯ ¯
ЭВМ ¬ программа
Приведенная схема представляет основной принцип систематических методов составления алгоритмов и программ для решения различных прикладных задач - экономических, математических, физических, инженерных и т. д.
Особенностью систематических методов является возможность полного устранения ошибок из алгоритмов и программ. При этом подходе программы сверяются с описаниями алгоритмов, а алгоритмы - с описаниями сценариев и методов решения.
Такой систематический подход к составлению алгоритмов и программ может применяться к решению на ЭВМ любых прикладных задач с использованием самых различных языков программирования - Бейсик, Паскаль, Си и им подобные. Приведем примеры систематического решения задач.
Первая задача: подсчет площади треугольника по длинам сторон.
a b
c
Постановка Сценарий
Дано: а, b, с - длины сторон, площадь треугольника
Треб.: S - площадь треугольника, длины сторон:
При: а > 0, b > 0, с > 0, а =? <а>
a < b +c, b < a + c, c < a + b. b =? <b>
с =? <с>
Метод решения площадь = <S>
S = недопустимы длины
р = (а + b + с)/2
Обратите внимание: в постановке задачи в исходные условия включены ситуации, когда решение может не существовать.
А именно, здесь указаны три неравенства треугольника и условия положительности длин сторон. При нарушении этих условий треугольника просто не существует и тем более нельзя говорить о его площади.
Для надежности программ такого рода ситуации (когда нет решений) должны быть предусмотрены в сценарии диалога. В этих случаях в сценарий необходимо включить сообщения с диагностикой причин отказов: отсутствие решений, недопустимость данных, некорректность команд, противоречивость фактов и т. п.
Алгоритм Программа
алг «площадь треугольника» ' площадь треугольника
нач cls
вывод («площадь треугольника») ? «площадь треугольника»
вывод («длины сторон:») ? «длины сторон:»
запрос («а=», a) input «a=», a
запрос («b=», b) inpnt «b=», b
запрос («с=», с) input «c=», c
если не (а > 0 и b > 0 и с > 0) то if a<=0 or b<=0 or c<=0 then
вывод («недопустимы длины») ? «недопустимы длины»
инеc не (а < b
+ с и b < а + 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 строк:
фамилия рост вес
Иванов |
185 |
85 |
Петрова |
165 |
65 |
Сидоров |
170 |
80 |
Постановка задачи Сценарий
Дано: (D1, ..., DN) - данные учеников. Данные об учениках
где D = [Fam, R,V] - состав данных, фамилия вес
Fam - фамилия, R - рост, V -вес
Треб.: Famm
- фамилия ученика. <Fam1> <V1> *
Где: m: Vm = Min (V1
..., VN). … …
При: N > 0. <FаmN> <VN>
Метод решения самый легкий:
Min (V1,.. Vn): Fam m > <Vm >
min = V1
от k = 1 до п цикл Представление данных
если Vk < min то dan: 'данные учеников:
min: = Vk data «Иванов», «Вова», 180,80
кцикл data «»,»»,0 ,0
Выбранному сценарию, методу решения и представлению данных соответствуют следующие алгоритм и программа на Бейсике.
Алгоритм Программа
алг «самый легкий ученик» ' самый легкий ученик
нач cls
вывод («Данные об учениках») ? «Данные об учениках»
вывод («фамилия вес») ? «фамилия вес»
N: = 0 n = 0
цикл do
чтение (Fam, r, v) read famS, r, v
при Fam = «» выход if fam$ = «» then exit do
вывод (Fam, v) ? fam$, v, r
N:=N+1 n = n+1
если N == 1 или V < Vmin то if n=l or v < vmin then
Vmin: =
V vmin = v
Fmin: =
Fam fmin$ = fam$
все end if
кцикл loop
вывод («самый легкий:») ? «самый легкий:»
вывод (Fmin, Vmin) ? fmin$, vmin
кон end
В общем случае систематический подход к решению задач на ЭВМ требует для проверки правильности алгоритмов и программ не только математической постановки задач, но и обязательного описания выбранных методов решения.
Систематический подход:
задача ® способы
¯ ¯
постановка ® методы
¯ ¯
сценарий ® алгоритмы
¯ ¯
ЭВМ ¬ программа
Рассмотрим пример систематического составления алгоритма и программы для решения на ЭВМ достаточно сложной задачи обработки данных.
Четвертая задача: Определить суммы элементов столбцов в матрице Anxm:
Приведем обобщенную постановку задачи и описание соответствующих общего метода решения и сценария диалога.
Постановка задачи Сценарий
Дано: Матрица <N>´<M>
(a11 … a1N) < a11> ... < a1N >
(... ... ... ) - матрица Anxm ... ... ...
(aMl
… aMN) < aMl > … < aMN
>
Треб.: Суммы элементов:
(S1
..., SN) - суммы столбцов <S1> ... <SN>
Где:
Si
= аi1 + ...+ аiM
[i = (1… N)]
При: N > 0, М > 0.
Метод вычислений Представление данных
sk0 = 0 matr: ' матрица Anm:
sk1 = ak1
+ sk1-1 data 3, 4
[1 = (1 ... M)] data I, 2, 3, 4
Sk = SkN data 0, 1, 2, 3
[k = (1 ... N)] data 0, 0, 1, 2
В предлагаемой ниже программе для представления матриц используются операторы data. В первом из этих операторов записаны размеры, а в каждом последующем операторе - строки матрицы:
Алгоритм Программа
алг « сумма строк матрицы» ' сумма строк матрицы
нач cls
чтение (п, т) . read n, m
если п > 0 и т > 0 то if N > 0 and М > 0 then
массив А[1:п,1:т] dim A (N,M)
массив S[1:n] dim S(n)
ввод-вывод_матрицы gosub vvod 'ввод-матрицы
суммирование_строк gosub sum 'суммирование
от k = 1 до п цикл for k= 1 to n
выв (s[k]) ? s[k]
кцикл next k
все end if
кон end
алг «суммирование строк» sum: 'суммирование строк
нач ' нач
от k = 1 до N цикл for k = 1 to n
s[k] := 0 s[k] = 0
от l = 1 до М цикл for I = 1 to m
s[k] := s[k] + A[k,l] s[k] = s[k] + a[k,l]
кцикл next I
кцикл next k
кон return
алг «ввод-вывод_матрицы» vvod: 'ввод-вывод_матрицы
нач ' нач
вывод («Матрица», N, «х», М) ? «Матрица»; m; «х»; m
от k = 1 до N цикл for k = 1 to n
от I = 1 до М цикл for l = 1 to m
чтение (A [k,l]) read A (k,l)
вывод (A [k,l]) ? A (k,l)
кцикл next 1
нов_строка ?
кцикл next k
кон return
В о п р о с ы
1. Что такое постановка задачи?
2. Что включается в постановку задач?
3. Что такое способ решения?
4. Что такое метод решения?
5. Каков порядок решения новых задач?
6. Что такое систематическая разработка алгоритмов и программ?
З а д а ч и
1. Приведите постановку задачи, сценарий, алгоритм и программу подсчета сумм:
а) нечетных чисел;
б) квадратов целых чисел;
в) кубов целых чисел.
2. Приведите постановку задачи, сценарий, алгоритм и программу подсчета сумм:
а) членов арифметической прогрессии;
б) членов геометрической прогрессии.
3. Для последовательности чисел х1, х2 ..., хN приведите постановку задачи, составьте сценарий, алгоритм решения и программу:
а) подсчета суммы всех чисел;
б) вычисления среднего арифметического чисел;
в) определения наибольшего из чисел;
г) определения наименьшего из чисел.
4. Для данных об учениках, содержащих сведения об их росте и весе, приведите постановку задачи, составьте сценарий, алгоритм и программу определения:
а) самого высокого ученика; г) самого легкого ученика;
б) самого низкого ученика; д) средний рост учеников;
в) самого тяжелого ученика; е) средний вес учеников.
5. Для данных о днях рождения своих друзей и родных приведите постановку задачи, составьте сценарий, алгоритм решения и программу:
а) определения ровесников;
б) определения людей, родившихся в один день;
в) самого молодого из своих друзей и родных;
г) самого старшего из своих родных и друзей.
Список рекомендуемой литературы
1. Государственный образовательный стандарт высшего профессионального образования. - М.: Госкомвуз России, 1995.
2. Каймин В.А. Информатика. Учебник для вузув. - М.: «Высшее образование», 1998.
3. Информатика. Учебник/Под ред. Н.В. Макаровой. - М.: Финансы и статистика, 1997.
4. Каймин В.А.
Информатика//Программы авторских курсов по гуманитарным и социально-экономическим дисциплинам для высшей школы. - М.: Госкомвуз, 1996.
5. Каймин В.А. Информатика и дистанционное обучение. - М.: Научная книга, 1996.
6. Каймин В.А. Информатика. Учебник для дистанционного обучения. М., МЭСИ, 1999.
7. Дистанционное образование в России: состояние и перспективы. - М.: МЭСИ, 1998.
8. Евреинов Э.В., Каймин В.А.
Информатика и дистанционное образование. - М., 1998.
9. Лобачев С.Л., Солдаткин В.И.
Дистанционные образовательные технологии: информационный аспект. - М.: МЭСИ, 1998.
10. Информатика. Энциклопедический словарь для начинающих/ Сост. Д.А. Поспелов. - М.: «Просвещение», 1994.
11. Глушков В.М. Основы безбумажной информатики. - М.: Наука, 1982.
12. Брой М. Информатика. Основополагающее введение. - М.: ДИАЛОГ-МИФИ, 1998.
13. Байков В. ИНТЕРНЕТ: от E-MAIL к WWW в примерах. -СПб.: BHV, 1996.
14. Артамонов Б.Н. и др. Основы современных компьютерных технологий. - Спб.: КОРОНА, 1998.
15. Фигурнов Э.В. IBM PC для пользователя. - М.: ИНФРА-М, 1999.
16. Ершов А.П. и др. Основы информатики и вычислительной техники. Пробный учебник для 10-11-х классов. - М.: Просвещение, 1985.
17. Каймии В.А. и др. Основы информатики и вычислительной техники. Пробный учебник для 10-11-ых классов. - М.: Просвещение, 1989.
18. Гейн А.Г. и др. Основы информатики и вычислительной техники. Пробный учебник для 10-11 классов. - М.: Просвещение, 1996.
19. Семакин И.Г. и др. Информатика. Учебник для 7-9 классов. - М.: БИНОМ, 1998.
20. Каймин В.А. и др. Информатика. Пособие для поступающих в вузы. - М.: Бридж, 1994.
21. Шафрин Ю.А. Основы компьютерной технологии.
Учебное пособие для учащихся старших классов. - М.: ABF, 1996.
22. Громов Г.Р. Очерки информационной технологии. - М.: Инфоарт, 1993.
22. Каймин В.А. Основы компьютерной технологии. - М.: Финансы и статистика, 1992.
23. Лихачева Г.Н. Информационные технологии в экономике. - М.: МЭСИ, 1999.
24. Кураков Л.П., Смирнов С.Н.
Информация как объект правовой защиты. М., Гелиос, 1998.
25. Крылов В.В. Информационные компьютерные преступления. М., ИНФРА-М, 1997.
26. Терещенко Л.К. и др. Защита прав создателей и пользователей программ для ЭВМ и баз данных. М.: МЮ РФ, 1996.
Средства обработки данных
Автоматизированная обработка данных - одна из основных массовых проблем, решаемых с помощью ЭВМ. На персональных компьютерах IBM PC базовым средством обработки данных является язык программирования Basic. В операционной системе Windows это язык считается основным языком разработки программ для компьютеров IBM PC.
Основной особенностью языков структурного и графического программирования Бейсика как языка обработки данных являются операторы данных data, позволяющие описывать данные непосредственно в текстах программ. Пример и реализация алгоритма обработки данных:
алг «день рождения» '
день рождения
нач cls
вывод («день рождения») print «день рождения:»
чтение пт$, dn, ms, gd read nm$, dn, ins, gd
вывод nm$; dn; ms; gd print nm$; dn; ms; gd
кон end
дано: Саша, 18, 10, 1980 data «Саша», 18,10,1980
Выполнение программы на компьютере приведет к появлению на экране следующих строк:
день рождения:
Саша 18 10 1980
Для решения этой задачи для других данных необходимо внести изменения в оператор данных data и вновь запустить программу на выполнение. Пример изменения данных:
дано: Оля, 1, 12, 1974 data «Оля», 1,12,1974
В традиционных версиях языка Бейсик с нумерацией строк операторы data выделяются в отдельные группы и нумеруются обычно с числа 1000. Это позволяет четко отделить в программах описание данных от операторов их обработки:
алг «дни рождения» 10 ' дни рождения
нач 20 cls
вывод («день рождения:») 30 print «день рождения:»
чтение nт$, 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#, al#, b8# - вещественные двойной точности
В качестве примера решения задач обработки данных рассмотрим алгоритм и программу вывода списка дней рождения членов семьи по данным, представленным в следующей таблице:
Дни рождения:
Мама |
26 |
6 |
1949 |
Папа |
22 |
5 |
1946 |
Сережа |
25 |
10 |
1973 |
Оля |
1 |
12 |
1974 |
Дни рождения:
Мама |
26 |
6 |
1949 |
Папа |
22 |
5 |
1946 |
Сережа |
25 |
10 |
1973 |
Оля |
1 |
12 |
1974 |
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, а добавление или удаление строк в таблице отображается добавлением или удалением соответствующих операторов в программе.
Рассмотрим алгоритм и программу вывода списка дней рождения в семье, составленные в соответствии с выбранным представлением данных:
алг «дни рождения» '
дни рождения
нач сls
вывод («дни рождения») 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
в качестве его размеров:
n = 5 ' n = 5
dim tb(n,n) , ' массив tb[1:n, 1:n]
В качестве примера использования массивов с переменными размерами приведем алгоритм и программу формирования «Таблицы умножения n´n».
Таблица умножения
1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
4 8 12 16 20
5 10 15 20 25
В приведенных ниже алгоритме и программе расчета и вывода таблицы умножения для ее размещения используется двумерный массив tb(n, n) c n = 5:
алг «таблица умножения» ' таблица умножения
п=5 n=5
массив tb[1:n, 1:n] dim tb(n,n)
нач сls
от k = 1 до п цикл for k = 1 to n
от 1
= 1 до п цикл for l = 1 to п
tb[k,l]:
= k*l tb(k,l) = k*l
вывод tb[k,l] print tb(k,l);
кцикл next 1
нов_строка print
кцикл next k
кон end
Запуск этой программы на ЭВМ приведет к получению приведенной выше картинки с таблицей умножения размера 5х5. Для получения таблицы умножения размера 8х8 или 10 х 10 достаточно изменить в программе значение n =5 на n = 8 или n = 10.
Перечисленных базовых средств достаточно для решения большого числа задач обработки данных: экономических, статистических, инженерных, научных и т.п. Однако при постановке решения задач обработки данных важно четко различать место размещения и виды обрабатываемых данных.
По способу использования при решении задач различаются следующие данные:
исходные;
результирующие.
Исходные данные - конкретные данные решаемых задач, отвечающие принятой постановке. Исходные данные могут оказаться как допустимыми, так и недопустимыми по постановке решаемых задач.
Результирующие данные - это результаты решения поставленных задач при введенных исходных данных. Сообщения о невозможности решения задачи также считаются результирующими данными.
По способу размещения и использования в обрабатывающих алгоритмах и программах данные подразделяются на:
· входные;
· выходные;
· сохраняемые.
Входные данные - это данные, вводимые в ЭВМ во время работы программы. Входные данные могут вводиться с клавиатуры, магнитных дисков или с помощью других устройств ввода информации.
Выходные данные - данные, выводимые ЭВМ как результат ра боты программ. Выходные данные могут выводиться на экран, на печать, на магнитные диски или другой носитель информации.
Сохраняемые данные - данные, которые хранятся в долговременной памяти ЭВМ и могут обновляться как результат работы программ. Эти данные могут храниться и многократно обновляться на магнитных дисках в течении длительного промежутка времени.
В качестве примера рассмотрим задачу поиска номеров телефонов по телефонному справочнику. Исходной информацией в этой задаче является «Телефонный справочник», который можно представить следующей таблицей:
Телефонный справочник
Вова |
125-14-70 |
Саша |
222-01-02 |
Маша |
102-99-00 |
Сценарий:
поиск номера телефона имя = ? <имя> |
телефон: <номер> |
нет такого |
tel: 'номера телефонов:
data «Вова», «125-14-80»
data «Саша», «222-01 -02»
data «Маша», «102-99-00»
data «», «»
При выбранных представлении данных и сценарии диалога решением могут служить следующие алгоритм и программа:
Алгоритм Программа
алг «Телефонный справочник» '
Телефонный справочник
нач сls
вывод («поиск номера телефона») print «поиск номера телефона»
запрос(«имя=», NN) input «имя=», NN$
чтение-таблицы tel restore tel
цикл do
чтение (имя, пот) read im$, nm$
если имя
= NN то if im$ = NN$ then
вывод («номер:»,пот) print «номер:»,nm$
выход [из цикла] exit do
инес имя
= «» то elseif im$ = «» then
вывод («нет такого») print «нет такого»
выход [из цикла] exit do
все end if
кцикл loop
кон end
Из приведенного примера видно, что при составлении алгоритмов и программ обработки данных важную роль играют не только сценарии ввода-вывода данных в ЭВМ, но и представление данных. От выбора этих представлений существенно зависят способы доступа к данным и процедуры обработки.
Однако наиболее важным при составлении алгоритмов и программ обработки данных прежде всего является четкое определение исходных и результирующих данных, а уже затем - подбор представлений входных, выходных и сохраняемых данных на ЭВМ.
Систематические методы разработки алгоритмов и программ обработки данных состоят в том, что постановка решаемых задач, выбор представлений данных и составление спецификаций диалога проводятся до составления детальных алгоритмов и программ обработки данных.
Подобный подход к составлению алгоритмов и программ обработки данных позволяет проверять правильность составляемых алгоритмов и программ по отношению к этим спецификациям и обеспечить в них полное устранение ошибок.
Приведем пример систематического составления алгоритмов и программ обработки данных с использованием спецификаций для решения задачи «Выбор друзей по росту». Допустим, что исходные данные этой задачи представлены следующей таблицей:
фамилия |
имя |
рост |
Иванов |
Саша |
180 |
Петров |
Вова |
160 |
Сидоров |
Миша |
190 |
Примем, что запросы на поиск друзей по росту и результаты поиска будут выводиться на экран по следующему сценарию:
Сценарий «Поиск друзей»
выбор друзей по росту мин_рост = ? <min> макс_рост = ? <max> |
<фамилия> <имя> |
нет таких |
data:
dan: 'данные о друзьях
data «Иванов», «Саша», 180
data «Петров», «Вова», 160
data «Сидоров», «Миша», 190
data «», «», 0
Тогда в качестве решения на ЭВМ поставленной задачи в соответствии с выбранными сценарием и представлением сохраняемых данных, могут быть приняты следующие алгоритм и программа обработки данных.
Алгоритм Программа
алг «выбор друзей» ' выбор друзей
нач сls
вывод («выбор друзей по росту») print «выбор друзей по росту»
запрос («мин_рост =>», min) input «мин_рост =>», mn
запрос («макс_рост =<», тах) input «макс_рост =<», mх
чтение-таблицы 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. Как описываются данные в программах на Бейсике?
3 а д а ч и
1. Составьте сценарий, алгоритм и программу поиска номера телефона по фамилии с представлением сведений в последовательности операторов data.
2. Составьте сценарий, алгоритм и программу поиска по имени дней рождения родных: мамы, папы, сестер и братьев, используя операторы data.
3. Составьте сценарий, алгоритм и программу поиска следующих данных о друзьях, используя операторы data для получения сведений:
а) о росте друзей;
б) о весе друзей;
в) о цвете глаз.
4. Составьте сценарий, алгоритм и программу поиска сведений о расписании занятий по дням недели, используя операторы data.
5. Составьте сценарий, алгоритм и программу поиска сведений о расписании занятий, используя операторы data:
а) по названию предмета;
б) по дням недели;
в) по номеру урока.
6. Составьте алгоритм и программу построения изображения ломаной по координатам точек, записанных в последовательности операторов data.
7. Составьте алгоритм и программу вывода изображений ткани из цветных кругов по данным об их центрах и радиусах, записанных в последовательности операторов data.
Технология дистанционного обучения
Дистанционное образование - это новая технология обучения, основанная на использовании персональных компьютеров, электронных учебников и сетей телекоммуникации. Эта новая технология и форма обучения самым тесным образом связана с развитием сети Интернет [7, 8, 9].
В Российской Федерации подготовлен законопроект, по которому дистанционное образование приравнивается к традиционным формам очного, заочного и вечернего обучения. В настоящее время пять ведущих вузов России ведут эксперименты по отработке технологий дистанционого обучения студентов.
В Республике Казахстан дистанционные формы обучения получили официальное признание после принятия нового закона об образовании летом 1999 года. В Законе об образовании Казахстана дистанционное обучение определено как «одна из форм обучения лиц, находящихся в отдалении от организаций образования, с помощью электронных и телекоммуникационных средств».
Началом распространения новых компьютерных технологий обучения послужило введение в середине 80-х годов курса информатики во всех средних школах нашей страны [16]. Основной целью школьного курса информатики с конца 80-х годов было обучение всех учащихся компьютерной грамотности - умениям читать, писать и получать информацию с помощью персональных ЭВМ [17].
Эксперименты с дистанционным образованием в вузах России начались с середины 90-х годов. Технологической базой для дистанционного обучения являются персональные компьютеры, электронные учебники и вычислительные сети. Развитие сети телекоммуникаций и появление образовательных серверов в сети Интернет сделало реальностью распространение новых технологий дистанционного обучения [7, 8. 9].
За рубежом развитие сети Интернет в 90-х годах привело к появлению первых электронных университетов как новых компьютерных форм получения образования. Насыщение персональными компьютерами университетов, колледжей и средних школ создает предпосылки для создания новых дистанционных форм обучения студентов и старшеклассников у нас в стране и зарубежом.
В США, Великобритании, Австралии, Канаде, Германии развитие сети Интернет создало условия для организации сетей дистанционного обучения, переживающих настоящий бум. При этом наиболее продвинутые проекты дистанционного образования развиваются на базе или при поддержке крупнейших компьютерных фирм - IBM, Apple, DEC, Sun, Novel, Microsoft и т. д.
Одним из наиболее известных зарубежных проектов дистанционного обучения является создание Открытого университета Великобритании.
В этом университете обучение в форме компьютерных телеконференций началось в конце 80-х годов.
Основной технологической идеей этого проекта была передача заданий и результатов их выполнения с помощью электронной почты и обсуждение работ посредством телеконференций. К середине 90-х годов эти курсы пользовались успехом более чем у 5000 студентов, имевших домашние компьютеры.
Однако главным достижением проекта стали комплекты бумажных учебников, изданные университетом для дистанционного обучения и подготовки менеджеров в области информационных технологий. Это позволило Открытому университету перейти к дистанционному обучению студентов на международном уровне.
Одна из ветвей этого международного проекта получила развитие в России на базе образовательной корпорации LINK, использующей эти учебники. В настоящее время в Открытом Университете в дистанционной форме обучается несколько тысяч студентов.
Вторым по развитию у нас в стране является проект
Института дистанционного образования Московского государственного университета экономики, статистики и информатики (МЭСИ). В российском проекте дистанционного образования в настоящее время обучается более 25 тысяч студентов по различным экономическим специальностям, для которых созданы соответствующие комплекты бумажных и электронных учебников [6, 7].
Еще один проект дистанционного образования был развернут в середине 90-х годов Российским Государственным технологическим
университетом (МАТИ) на базе более 120 школ Москвы, Подмосковья, Челябинска и Приднестровья.
Целью этого проекта была дистанционной подготовка учащихся средних школ к вступительным экзаменам в вузы Российской Федерации.
Для данного проекта были созданы учебные пособия для поступающих в вузы по информатике, математике и английскому языку с использованием тестов, электронных учебников и электронных задачников. В рамках данного проекта был разработан и апробирован электронный учебник по информатике, используемый в настоящем учебном пособии [20].
Особую роль в развитии дистанционного образования, на наш взгляд, может и должен сыграть вузовский курс информатики, который позволит отработать технологию компьютерного обучения с использованием сети Интернет и электронных учебников и организацией компьютерной технологии приема и сдачи экзаменов.
Новыми в дистанционном обучении для отечественной системы образования являются электронные учебники с использованием компьютерных методов тестирования знаний. Отличительной особенностью электронных учебников является то, что работа с ними имеет форму диалога, в ходе которого учащиеся усваивают знания в виде фактов, вопросов, суждений, утверждений и т. п.
Кроме того, в электронных учебниках система контрольных тестов позволяет учащимся самостоятельно проверять усваиваемые знания. Большую помощь при этом могут оказать бумажные учебники, поскольку в них могут быть найдены ответы на вопросы, которые заложены в электронный учебник.
В этом назначении электронные учебники для систем дистанционного обучения могут выполнять функции репетиторов, оказывающих учащимся помощь в изучении различных учебных дисциплин. Консультации преподавателей при этом переносятся на обсуждение индивидуальных заданий с учетом интересов учащихся.
Настоящий бумажный учебник по информатике вместе со своими электронными версиями - пример новой технологии обучения, которая может использоваться в вузах и школах для изучения курса информатики, в домашних условиях и учебных центрах - для самообразования и дистанционного обучения.
Необходимым условием для этого является возможность доступа к персональным компьютерам и электронной версии настоящего учебника. Для работы в системе дистанционного обучения необходим доступ к сети Интернет, а также электронный почтовый ящик, по которому можно получать электронную корреспонденцию из центра дистанционного обучения.
Сетевые электронные версии настоящего учебника по информатике можно найти в сети Интернет с помощью информационно-поисковых систем Яндекс или Апорт по запросу «Каймин учебник информатика». Отличием этих электронных учебников является то, что в них можно не только листать и читать текст учебника, но и найти тесты, с помощью которых можно перепроверить свои знания по информатике.
Данные тесты по информатике с 1997 года используются в системе дистанционного контроля знаний учащихся средних школ, созданных на психологическом факультете Московского Государственного Университета и получившей название Телетестинг. Использование психологами этих тестов в течение последних трех лет показало удивительные результаты.
Все школьники, прошедшие телетестинг
(дистанционный контроль знаний), показали самый высокий уровень компьютерной грамотности. Однако на вопросы об алгоритмизации и о программировании выпускники школ в основном продемонстрировали удовлетворительные либо даже неудовлетворительные знания.
Объяснением этим фактам может служить следующее. Участвовать в телетестинге могут только те школьники, которые умеют работать на ЭВМ,
а для этого необходимо получить соответствующие знания. Самые первые учебники ориентировались на изучение основ алгоритмизации без работы и отладки программ на ЭВМ [16].
В новейших учебниках по информатике изучение элементов программирования либо вовсе отсутствует, либо проходит в отрыве от изучения основ алгоритмизации [18, 19, 21]. По этой причине знания учащихся либо фрагментарны, либо неверны.
Освоению компьютерной грамотности с последующим изучением алгоритмизации и отладки программ на ЭВМ был посвящен базовый школьный учебник
[17], признанный лучшим в 1997 году. Однако он не переиздавался и стал недоступен.
Настоящий учебник, созданный в соответствии с
требованиями государственных стандартов образования, ориентирован на изучение студентами современного уровня развития информатики как информационной индустрии и освоение техники решения профессиональных задач на ЭВМ.
В этом смысле он является развитием и продолжением нашего школьного учебника по информатике и построен так, чтобы его можно было использовать как в условиях очного, так и дистанционного обучения. При этом в учебник введена линия на
опережающее изучение Интернет, для того чтобы студенты как можно скорее могли получить доступ к его информационным ресурсам, электронным книгам, журналам и центрам дистанционного образований.
Самую большую библиотеку электронных книг и учебников по экономике можно найти на серверах Института дистанционного образования МЭСИ. В этой библиотеке можно найти электронную версию настоящего учебника по информатике для студентов.
В настоящее время практически все ведущие вузы Российской Федерации, имеющие отделения или факультеты информатики или информационных технологий, включились в развитие технологий дистанционного обучения и ввели в той или иной форме вступительные экзамены или испытания по информатике.
Подробную информацию о всех Российских вузах
и новостях дистанционного образования можно найти в сети Интернет на сервере Информатика Министерства образования Российской Федерации.
Толковый словарь
Автор - лицо, творческим трудом которого создано произведение (программа или база данных на ЭВМ).
Авторские права - права на имя, внесение изменений и имущественные права на созданное произведение.
Алгоритм - совокупность действий со строго определенными правилами выполнения.
Алгоритм массовый, если он применим для решения некоторого класса задач.
Алгоритм однозначный, если однозначны правила его выполнения.
Алгоритм правильный, если он дает правильные результаты для любых допустимых данных и ситуаций.
Алгоритм результативен, если его выполнение завершается определенными результатами.
Алгоритм содержит ошибки, если его выполнение приведет к неправильным результатам, либо не дает никаких результатов.
Алгоритмизация - составление алгоритмов для решения поставленных задач.
Алгоритмические ошибки - ошибки в методе, постановке, сценарии и реализации.
Алгоритмические языки - языки описания алгоритмов.
Антивирусные программы - программы для защиты от вирусов.
База данных - форма представления и организации совокупности данных, допускающие поиск и обработку с помощью ЭВМ.
База знаний - форма представления и организация совокупности данных и правил вывода, допускающих логический вывод и осмысленную обработку данных в ЭВМ.
Байт - 8-разрядное двоичное число (1 байт = 8 бит).
Бит - величина, принимающая значение 0 или 1.
Безошибочное программирование - составление алгоритмов и программ без ошибок.
Бейсик - диалоговый язык программирования для персональных компьютеров.
Бумажные технологии - информационные технологии, связанные с бумагой.
Вопрос в Прологе - запрос к базе знаний или программе.
Входные данные - данные, вводимые в ЭВМ.
Выходные данные - данные, выводимые из ЭВМ.
Вычислительная машина - устройство для организации автоматических вычислений и обработки информации.
Вычислительные процессы - процессы вычислений и обработки информации в вычислительных машинах и системах.
Вычислительная система - объединение вычислительных машин для организации хранения, обработки и поиска информации.
Вычислительная сеть - совокупность ЭВМ, объединенных сетью связи, позволяющей компьютерам проводить обмен информацией.
Вычислительные науки - науки об организации вычислительных процессов, а также вычислительных машин, систем и сетей.
Глобальная сеть - сеть, в которой объединены компьютеры в различных странах на различных континентах.
Дизъюнкция - логическая связка «или».
Дизъюнкция А или В истинна, когда истинно хотя бы одно из суждений А или В.
Дизъюнкция А или В ложна, когда ложны оба суждения А и В.
Дисплей - устройство отображения информации на электронном экране.
Дистанционное обучение - обучение на расстоянии с использованием учебников, персональных компьютеров и сетей ЭВМ.
Доказательство - последовательность суждений, обосновывающих некоторое утверждение.
Доказательное программирование - составление алгоритмов и программ одновременно с доказательством их правильности.
Документ - информация, зафиксированная на материальном носителе, имеющем реквизиты, позволяющие его идентифицировать.
Закон достаточных оснований: «Всякое утверждение должно предполагать наличие аргументов и фактов, достаточных для его обоснования».
Закон двойного отрицания; «Если неверно отрицание, то суждение - истинно».
Закон исключения третьего: «Истинно суждение либо его отрицание - третьего не дано».
Закон противоречия: «Не могут быть истинны одновременно суждение и его отрицание».
Закон тождества: «Предмет рассмотрения должен быть строго определен и не должен меняться до конца обсуждения».
Законы логики - общие законы логического вывода.
Защита информации - действия и средства по предотвращению утечки, хищению, искажению или подделки информации.
Импликация - логическое следование А ® В.
Импликация А ® В
ложна, когда посылка А истинна, а следствие В ложно.
Импликация А ® В
истинна, когда истинно следствие, либо ложны и следствие, и посылка.
Имущественные права - права собственности на произведение (программы и базы данных для ЭВМ).
Индукция - вывод общих суждений из частных примеров.
Интеллектуальная собственность - результаты и продукты творческого интеллектуального труда.
Интеллект - способность производить логические умозаключения и осмысленную переработку информации.
Интернет - международная компьютерная телекоммуникационная сеть.
Интерпретатор - это система интерпретации (выполнения) программ на ЭВМ.
Информатика - научная дисциплина, изучающая законы и методы накопления, обработки и передачи информации с помощью ЭВМ.
Информация - сведения о лицах, предметах, фактах, событиях, и процессах независимо от формы их представления.
Информационная культура - умение читать книги, искать данные, осмысливать информацию и предоставлять ее людям.
Информационные процессы - процессы сбора, обработки, накопления, хранения, поиска и распространения информации.
Информационные ресурсы - совокупность документов в архивах, библиотеках, фондах, банках данных и других информационных системах.
Информационная система - организация совокупности документов с использованием средств вычислительной техники и телекоммуникационной связи.
Информационные технологии - технологии передачи, накопления и обработки информации.
Информационные услуги - действия людей, организаций и служб по сбору, поиску, хранению и предоставлению информации.
Искусственный интеллект - компьютерные системы, моделирующие или воспроизводящие интеллектуальную деятельность.
Исходные данные - данные, исходные по постановке решаемых задач.
Калькуляция - таблица с определенным набором надписей, формул и данных, используемых для расчетов.
Компакт-диск - оптический диск, используемый для постоянного хранения больших объемов информации.
Компилятор - система трансляции программ с одного языка на другой.
Компьютер - электронная вычислительная машина.
Компьютерная грамотность - умение читать, писать и искать информацию с помощью ЭВМ.
Компьютерные вирусы - саморазмножающиеся программы, способные разрушать информацию на ЭВМ.
Контрпример - пример, опровергающий некоторое общее утверждение.
Конфиденциальная информация - информация, доступ к которой ограничен.
Конъюнкция - логическая связка «и».
Конъюнкция А и В истинна, когда истинны оба суждения А и В.
Конъюнкция А и В ложна, когда ложны суждения А или В.
Курсор - значок для указания места на экране ЭВМ.
Лексикон - редактор текстов для компьютеров IBM PC с операционной системой MS DOS.
Лемма - вспомогательное утверждение, предполагающее самостоятельное доказательство.
Лицензия - документ, подтверждающий права на использование программ для ЭВМ.
Логика - наука, изучающая правильность суждений, рассуждений и доказательств.
Логические функции - функции, принимающие логические значения «истина» или «ложь».
Логические элементы - устройства, на входах и выходах, на которые могут появляться сигналы 0 или 1.
Локальная вычислительная сеть - сеть, объединяющая компьютеры в комнате или соседних помещениях.
Магнитные диски - средство хранения информации, программ и данных в ЭВМ.
Массив - область машинной памяти, выделяемая для размещения совокупности данных.
Математическая индукция - принцип доказательства истинности последовательностей утверждений.
Математическая логика - дисциплина, изучающая технику математических доказательств.
Массовая информация - информация, предназначенная для неограниченного круга лиц.
Машинная программа - последовательность машинных команд и данных, реализующих определенные функции ЭВМ.
Метод - единый способ решения некоторого класса задач.
Метод правильный, если он дает правильные результаты для любой задачи данного класса.
Метод неправильный, если существует задача данного класса, для которой он дает неправильные результаты или вовсе не дает результатов.
Мобильность программ - возможность переноса программы на другую ЭВМ.
Модем - устройство связи компьютеров для передачи файлов по каналам связи.
Мышка - приспособление, которое можно перемещать по столу и которое подсоединено к ЭВМ.
Объем понятия - совокупность вещей или явлений, отвечающих данному понятию.
Операционная система - главная управляющая программа на ЭВМ.
Отказ - ситуация, когда прекращается выполнение программы.
Отладка программ - процесс поиска и исправления ошибок в программах на ЭВМ.
Паскаль - язык структурного программирования.
Персональные компьютеры - малогабаритные вычислительные машины.
Поиск данных - отбор данных по определенной комбинации признаков.
Почтовый сервер - компьютер, выделенный для переписки по электронной почте.
Постановка задачи - четкое выделение в задаче требуемого и исходного.
Правила в Прологе - правила логического вывода.
Правильность программ - правильность результатов, получаемых при выполнении программ на ЭВМ.
Предикаты - математические высказывания о некоторых объектах или их свойствах.
Представление данных - подбор массивов, переменных и других структур для размещения данных в памяти ЭВМ.
Принтеры - печатающие устройства, подсоединяемые к компьютерам.
Программа для ЭВМ - форма представления данных и команд, предназначенных для получения определенных результатов или способа функционирования ЭВМ.
Программа правильная, если она дает правильные результаты для любых допустимых исходных данных.
Программа содержит ошибки, если ее выполнение приводит к отказам, сбоям или получению неправильных результатов.
Пролог - система искусственного интеллекта, способная воспроизводить логические выводы и умозаключения.
Процессор - устройство управления компьютеров и автоматических приборов.
Псевдокод - язык для описания логики работы программ с использованием лексики родного (русского) языка.
Разработка сверху-вниз - способ последовательной разработки проектов от основной задачи к решению вспомогательных подзадач.
Региональная вычислительная сеть - сеть, связывающая компьютеры в пределах определенного региона.
Редакторы текстов - программы подготовки и редактирования текстов на ЭВМ.
Результат неправильный, если он противоречит требованиям задачи.
Результат правильный, если он отвечает поставленным требованиям.
Результирующие данные - результаты обработки данных.
Реляционные базы - базы данных, в которых информация хранится в форме таблиц.
Сбой - потеря части данных либо получение непредусмотренных данных.
Сервер - компьютер, подключенный к сети и используемый для хранения информации.
Сетевые программы - программы приема и передачи данных в сетях ЭВМ.
Электронная библиотека - совокупность электронных книг, размещенных на одном или нескольких серверах.
Электронные книги - гипертексты, размещаемые на серверах и доступные для чтения.
Электронная почта - способ передачи писем с помощью ЭВМ и средств связи.
Электронные таблицы - программы для выполнения и хранения калькуляций на ЭВМ.
Электронные технологии - информационные технологии, связанные с представлением информации в электронном виде.
Электронные учебники - программы с учебными материалами и тестами по определенному предмету.
Эффективность программ - минимальность времени выполнения программ на ЭВМ.
Языки программирования - языки для записи программ для ЭВМ.
Языки спецификаций - языки для записи спецификаций.
Excel - электронные таблицы на компьютерах IBM PC с операционной системы Windows .
IBM PC - наиболее распространенные персональные компьютеры.
Macintosh - самые удобные персональные компьютеры.
MS DOS - операционная система для компьютеров IBM PC.
Quick Basic - язык структурного программирования для компьютеров IBM PC с операционной системой MS DOS.
Visual Basic - объектно-ориентированный язык программирования для IBM PC с операционной системой Windows.
Windows - операционная система для старших моделей компьютеров IBM PC.
Word - редактор текстов для операционной системы Windows.
WWW (world-wide web) - всемирная распределенная сеть электронных библиотек.
Встроенные предикаты Пролога
Для операций над числами в рассматриваемой версии Пролога имеются следующие арифметические предикаты:
Предикат: Смысл:
СУММА (x,y,z) х + у = zПРОИЗВ (x,y,z) х*у = z
ЧАСТНОЕ (x,y,z) [х/у] = z
ОСТАТОК (x,y,z) х - [х/у] = z
РАВНО (х,у) х = у
БОЛЬШЕ (х,у) х > у
МЕНЬШЕ (х,у) х < у
Арифметические предикаты по смыслу и функциям существенно отличаются от арифметических операций в традиционных языках программирования. Прежде всего любой из этих предикатов вырабатывает логическое значение ИСТИНА
или ЛОЖЬ в зависимости от того, имеет или не имеет решение арифметическая задача, представляемая предикатом.
Примеры:
? СУММА (2,2,5)
НЕТ
? СУММА (2,2,z)
z = 4
? СУММА (х,2,5)
х = 3
Таким образом, арифметические предикаты позволяют решать простейшие арифметические уравнения с одной или несколькими переменными, автоматически производя соответствующие вычисления, если эти решения существуют. Однако обращение к предикатам, связанным с умножением и делением целых чисел, может дать отрицательный результат из-за отсутствия решений в некоторых случаях:
? ПРОИЗВ (2,у,5)
НЕТ
? ЧАСТНОЕ (5,2,z)
z = 2
? ОСТАТОК (5,2,r)
r = 1
Предикаты БОЛЬШЕ и МЕНЬШЕ вместе с предикатом РАВНО могут использоваться для сравнения различных численных переменных и констант. А предикаты «неменьше» и «небольше» могут быть определены через отрицание предикатов БОЛЬШЕ и МЕНЬШЕ:
небольше (х,у) ¬
НЕ (БОЛЬШЕ (х,у));
неменьше (х,у) ¬
НЕ (МЕНЬШЕ (х,у));
Предикат РАВНО может использоваться также для сравнения значений переменных и констант. При этом переменные могут быть и числовыми, и символьными, и других типов. Примеры:
? РАВНО (5,z)
z= 5
? РАВНО (х,миша)
х = миша
? РАВНО (коля.оля)
НЕТ
Вывод графических изображений на экран в настоящей версии интерпретатора может производиться с помощью следующих предикатов:
ТОЧКА (х,у,с);
ЛИНИЯ (x,y,u,v,c);
ОКРУЖНОСТЬ (х,у,с);
где (х,у) и (u,v) - координаты точек на экране, а с - цвет точки. Конкретные значения кодов цветов и диапазоны значений координат точек на экране зависят от типа ЭВМ.
А. Графические предикаты:
Предикат: Смысл: Пример:
ФОН (с) задание цвета фона ФОН (8)
ТОЧКА (х,у,с) вывод точки ТОЧКА (0,0,2)
ЛИНИЯ (x,y,u,v,c) вывод отрезка линии ЛИНИЯ (0,0,50,50,4)
ОКРУЖНОСТЬ (х,у,с) вывод окружности ОКРУЖНОСТЬ (90,90,10, 6)
ЗАКРАСКА (х,у,с) закраска фигур ЗАКРАСКА (10,40,8)
Б. Предикаты ввода-вывода:
Предикат: Смысл: Пример:
ВЫВОД (<3начение>) вывод набора значений ВЫВОД («имя», х)
ВВОДСИМВ (s) ввод символьных данных
ВВОДЦЕЛ (n) ввод числовых данных
ПС перевод строки
В. Логические предикаты:
Предикат: Смысл: Пример:
ИСТИНА логическая константа
ЛОЖЬ логическая константа
НЕ (<Предикат>) отрицание предиката НЕ (РАВНО (z,0))
и новой информационной индустрии, связанных
Настоящий учебник посвящен изучению информатики
- новой научной дисциплины и новой информационной индустрии, связанных с использованием персональных компьютеров и сети Интернет. Развитие бизнеса, образования, промышленности и общества в целом учеными, политиками, бизнесменами во многом связывается с широким использованием информационных ресурсов Интернет и нарастающими интеллектуальными возможностями вычислительных машин.
Учебник предназначается студентам вузов и представляет определенное отражение современного состояния информатики как науки и информационной индустрии, в том числе отражение современного состояния персональных компьютеров и возможностей сети Интернет как базы для развития современной информационной индустрии.
Наиболее распространенным видом современной вычислительной техники стали персональные компьютеры IBM PC. По этим причинам в учебнике изучаются основные возможности наиболее современных программных средств персональных компьютеров IBM PC - операционной системы Windows, редактора текстов Word, электронных таблиц Excel, базы данных Access, а также телекоммуникационной системы Internet Explourer.
Представление информатики как научной дисциплины связано с рассмотрением проблем организации вычислений и обработки информации
с помощью ЭВМ и внутри ЭВМ, а также принципов организации и работы машинных интеллектуальных систем (систем искусственного интеллекта) на ЭВМ. Для изучения принципов работы систем искусственного интеллекта в учебнике используется язык Пролог - язык моделирования интеллектуальных процессов на ЭВМ.
Изучение принципов обработки информации и организации вычислений
проводится на примерах решения экономических задач, при этом решение задач доводится до получения результатов на ЭВМ путем составления калькуляций, баз данных и программ с параллельным анализом и доказательством правильности получаемых результатов. С этой целью в учебнике излагаются систематические методы безошибочного (доказательного) программирования - нового научного подхода к составлению программ, гарантирующих получение правильных результатов с помощью ЭВМ.
Особенностью информатики как учебной дисциплины является практикум на ЭВМ, который может проводится в вузе, в школе или дома. Для прохождения такого практикума необходимо иметь персональный компьютер или доступ к нему, а также необходимые пакеты программ - редакторы текстов, базы данных, электронные таблицы и новейшие средства компьютерного обучения - электронные учебники.
Настоящий учебник построен так, что по нему можно изучать информатику даже дома с использованием персональной ЭВМ, и последующей сдачей зачетов и экзаменов с помощью Интернет. Такая возможность требует наличия на домашних ЭВМ перечисленных пакетов программ с операционными системами, редакторами текстов, системами программирования и электронными учебниками.
Особенностью электронных учебников по информатике,
описанных в настоящем пособии, является то, что с их помощью можно успешно подготовиться к сдаче всех зачетов и экзаменов и сдать их на оценки «отлично» или «хорошо». Основная особенность курса информатики состоит в том, что все экзамены и зачеты по этому курсу, а также контроль знаний должен проводиться на персональных ЭВМ и может производиться дистанционно с помощью сети ЭВМ.
Электронные учебники по информатике были созданы специально для дистанционного обучения на ЭВМ с использованием сети Интернет и апробировались в вузах и школах России и Казахстана в течении ряда лет. Сегодня эти электронные учебники можно увидеть на ряде серверов сети Итернет, указанных в настоящем пособии, с помощью любого персонального компьютера, имеющего доступ к Интернет.
Использование этих электронных учебников в ходе апробации систематически приводило к одному и тому же результату - практически все студенты и школьники после работы с электронными учебниками успешно сдали все зачеты и экзамены на «хорошо» и «отлично» и создавали при этом стихи, рисунки, базы данных, электронные калькуляции и программы решения на ЭВМ различных задач с доказательствами правильности получаемых результатов.
Особое место в информатике как новой информационной индустрии играет Интернет, электронная почта и средства телекоммуникаций, изучение которых вошло в настоящий учебник по информатике. При этом освоение средств Интернет в настоящем учебнике проводится сразу после освоения техники работы и редактирования текстов на персональных ЭВМ.
Опережающее освоение техники работы в Интернет
позволит студентам и старшеклассникам без задержки войти в сеть Интернет и обратиться в один из центров дистанционного обучения для получения консультаций и помощи в решении текущих и экзаменационных задач у лучших преподавателей.
Благодаря сети Интернат сотни тысяч молодых людей и девушек смогут учиться в лучших отечественных и зарубежных вузах,
используя персональные компьютеры. Такого рода дистанционное обучение может проводиться без выезда из своего города, поселка или даже не выходя из своего дома.
Первые эксперименты дистанционного и очного обучения с использованием описанных здесь технологий показали, что качество обучения
с применением электронных учебников не хуже,
чем очные занятия в лучших зарубежных вузах, и на порядок лучше, чем при обычной модели обучения без использования каких бы то ни было учебников.
Однако использование Интернет, открывая новые возможности в предоставлении информации и информационных услуг, создает и новые проблемы. Основные из них - проблемы защиты информации в ЭВМ от искажения, уничтожения и неправомерного доступа.
Ярким примером служит проблема компьютерных вирусов, которые могут уничтожить всю информацию, хранящуюся в ЭВМ. Неправильные действия в сети Интернет, а также копирование программ и данных в сети Интернет может привести к самым неприятным последствиям. Здесь необходимо твердо усвоить и придерживаться ряда правил гигиены от компьютерных вирусов.
Согласно принятому законодательству информация признана объектом гражданских прав с определением норм и правил отнесения ее к массовой, персональной или конфиденциальной.А базы данных и программы для ЭВМ отнесены к объектам авторского права и на их распространение и использование распространяются соответствующие нормы правовой защиты.
Автор выражает свою признательность своим студентам, аспирантам и сотрудникам, принимавшим участие в разработках электронных учебников и учебных программ для персональных ЭВМ, а также принимавшим участие в оформлении, редактировании и макетировании учебников по информатике в течении 1985-1999 гг.
Академик В.А.Каимин
Введение в информатику
Информатика - это новая научная дисциплина и новая информационная индустрия, связанные с использованием персональных компьютеров и сетей ЭВМ. В новом тысячелетии предполагается, что основная информация, связанная с деятельностью людей будет храниться в памяти электронных вычислительных машин.
Информатика как научная дисциплина изучает законы, принципы и методы накопления, обработки и передачи информации с помощью ЭВМ. В этом смысле информатика как наука является фундаментом для развития новой информационной индустрии, основанной на использовании сетей ЭВМ.
Фундамент информатики образуют вычислительные науки - науки об вычислительных процессах и организации вычислительных машин, вычислительных систем и сетей. Основным объектом вычислительных наук являются вычислительные машины - устройства для организации вычислений и обработки символьной информации.
Обработка, накопление и передача информации
происходит не только внутри ЭВМ. Передачу и накопление информации мы видим при общении людей, в технических устройствах, в живых организмах и в жизни общества, что тоже входит в предмет изучения информатики как научной дисциплины.
Передача информации в общении людей - это передача сведений и суждений, данных и сообщений. Даже улыбка является передачей информации при общении людей друг с другом. Любая совместная деятельность людей - работа, учеба и даже игра - построены на обмене и передаче информации.
Для живых существ восприятие и передача информации в форме сигналов - основное отличие от неодушевленных предметов окружающего мира. Языковая форма передачи знаковой информации - основное отличие людей от других живых существ.
Слово информация происходит от латинского informatio, означающего сведения, разъяснения, пояснения. С содержательной точки зрения информация - это сведения о ком-то или о чем-то, а с формальной точки зрения - набор знаков и сигналов.
С юридической точки зрения информация - это сведения о людях, предметах, фактах, событиях и процессах, независимо от формы их представления.
Данное определение зафиксировано в Законе «Об информации, информатизации и защите информации», утвержденном в 1995 году.
Особую роль для общества играет документированная информация. Документы - это информация, зафиксированная на материальном носителе - бумаге или машинном носителе, имеющем реквизиты, позволяющие его идентифицировать.
Возможность записи информации в письменном виде - в форме последовательности знаков - привела к образованию государств, возникновению бюрократии и появлению почтовых служб. Параллельно это привело - к появлению грамотных людей - людей, умеющих читать, писать и искать информацию для решения различных проблем.
Возникновение письменности позволило людям не только передавать информацию, но и накапливать ее в форме записок, писем и рукописей в архивах, а также в личных и публичных библиотеках. Квалифицированная переработка информации потребовала людей, имеющих надлежащее образование.
Для обучения грамотности были открыты гимназии, лицеи и школы, а для подготовки образованных людей - университеты и колледжи, где накоплением и передачей знаний стали заниматься ученые, учителя и профессора.
Для хранения знаний стали использоваться рукописные книги, а для хранения книг - библиотеки и книгохранилища. В них стал накапливаться интеллектуальный потенциал общества и государств. Неслучайно одной из основных задач варвары считали уничтожение книг и книгохранилищ.
Изобретение печатных станков в XV в. создало технологическую основу для массового издания и распространения печатных книг. Это послужило основой для всеобщего распространения грамотности и открытия массовых начальных школ, в которых все дети обучались грамотности - умениям читать, писать и считать.
Развитие промышленного производства в XVIII-XIX веках потребовало большого числа специалистов, для подготовки которых было открыто большое число университетов. Это дало мощный толчок для развития естественных наук - химии, физики, механики, математики и подготовки инженерных кадров.
Развитие печатных станков привело к появлению и распростране нию газет как средств массовой информации и информатизации общества, а также появлению и распространению журналов для распространения литературных произведений. В это же время появились первые законы, регулирующие авторские права.
Изобретение в XIX - начале XX века телеграфа, радио и телефона открыло новые возможности в передаче информации и информатизации общества. Эти технические средства дали возможность практически мгновенно передавать информацию на любые расстояния.
Следующим шагом технического прогресса стало появление и развитие электроники, телевидения и радиовещания к середине XX века. Изобретение телевидения позволило людям видеть на экранах телевизоров события, происходящие в самых различных точках планеты, а изобретение магнитофона - накапливать звуковую и видеоинформацию на магнитных носителях.
Точкой отсчета становления информатики как индустрии стало изобретение в середине XX века электронных вычислительных машин.
Основной особенностью компьютеров стала возможность автоматической обработки информации. Переработка информации перестала быть исключительной способностью людей и живых существ.
Параллельно в середине XX века были заложены
теоретические основы информатики как научной дисциплины. В этот период получили развитие математическая логика - фундамент теоретической информатики и теория алгоритмов - фундамент вычислительных наук.
Компьютеры первого поколения создавались именно как электронные вычислительные машины для автоматизации сложнейших вычислений оборонного и научного характера. Объем и сложность вычислений, выполнявшихся первыми компьютерами, были недоступны даже самым сильным математикам и вычислителям, но посильными для современных домашних компьютеров.
В этот период появились первые профессиональные программисты и первые теоретические работы по математической лингвистике, теории искусственного интеллекта и теоретическому программированию.
Бурное развитие получили вычислительная и дискретная математика, образующие математическую базу информатики и вычислительных наук.
Компьютеры второго поколения создавались в качестве универсальных вычислительных машин, предназначенных для решения задач обработки и накопления информации с использованием устройств ввода и вывода. Компьютеры этого поколения стали использоваться для решения различных научных, экономических, оборонных и инженерных задач.
Для этих машин были созданы первые операционные системы, системы программирования и первые диалоговые системы. В этот период программирование зародилось как профессия и появились первые языки программирования и первые инструментальные программы - компиляторы и интерпретаторы для ЭВМ.
Третье поколение компьютеров - это первые серийные вычислительные машины для автоматизации обработки и накопления информации. Для этих ЭВМ был создан целый спектр устройств ввода, вывода и накопления информации. С помощью этих ЭВМ создавались первые экспериментальные вычислительные системы и сети.
Компьютеры третьего поколения стали широко использоваться в качестве технической базы для самых различных автоматизированных систем - бухгалтерских и банковских систем, банков данных, систем автоматизации проектирования и производства и т. п. В это время появились первые администраторы баз данных и информационные службы по эксплуатации автоматизированных систем.
Четвертое поколение - это компьютеры, создаваемые на базе серийных микропроцессоров. С этого поколения ЭВМ началось массовое производство и распространение персональных компьютеров, которые могут устанавливаться на любом рабочем столе - дома, на работе или в офисе.
Персональные ЭВМ широко используются для учебы, игры, написания писем, книг и отчетов, ведения бухгалтерской документации и экономических расчетов, проведения научных и маркетинговых исследований, сочинения стихов и музыки, ведения переписки с коллегами и друзьями.
Применение компьютеров в жизни общества затрагивает условия деятельности и жизни миллионов людей.
Современные персональ ные компьютеры прежде всего открывают возможность выхода в сеть Интернет и оперативного поиска и получения различной информации в форме электронной почты, электронных журналов, газет и библиотек из самых различных стран и регионов, электронной коммерции - покупок и продаж по всему миру.
В серии ЭВМ четвертого поколения используются и более мощные компьютеры, получившие название серверов - вычислительных машин с большим объемом памяти, используемых для постоянного хранения больших объемов информации. Именно такие серверы и используются в качестве узлов связи в вычислительных системах и сети Интернет.
Академик В.М. Глушков еще в начале 80-х годов писал, что «к началу следующего столетия в развитых странах основная масса информации будет храниться в памяти ЭВМ, а человек XXI века, который не будет уметь пользоваться ЭВМ, будет подобен человеку XX века, не умевшему ни читать, ни писать».
Обучение компьютерной грамотности - умениям работать с персональными ЭВМ - является основной целью курса информатики в массовой школе. Современное понимание компьютерной грамотности предполагает не только умения читать, писать и считать с помощью персональных ЭВМ, но и умения искать и передавать информацию с помощью Интернет.
Целью вузовского курса информатики считается освоение профессионального использования персональных компьютеров и решения на ЭВМ профессиональных задач. Для развития этих умений необходима определенная культура и развитие логического мышления.
Эффективное использование ЭВМ предполагает наличие информационной культуры - умений искать, передавать и подготавливать информацию в форме текстов и рисунков с помощью персональных компьютеров и сети Интернет. Развитие этой культуры ведет к более глубокому развитию логического мышления.
Логическое мышление проявляется в умении решать различные интеллектуальные задачи и в том числе в решении сложных задач с помощью ЭВМ. Эти интеллектуальные способности выражаются в умениях рассуждать, доказывать, ставить задачи, а также подбирать и обосновывать способы их решения.
Сложность изучения информатики как индустрии связана с ее беспрецендентной динамичностью - технические средства информатики - компьютеры, программы и средства телекоммуникаций полностью модернизируются каждые пять-шесть лет, а соответствующие технические знания обновляются каждые два-три года. Одновременно модернизируются компьютерные сети, архивы, библиотеки и информационные системы.
Подготовка и издание новой учебной литературы требует, как правило, от трех до пяти лет. Поэтому учебная литература не поспевает за темпами обновления вычислительной техники. Угнаться за такими темпами обновления техники могут только электронные средства - электронная пресса, электронные справочники, электронные учебники и технологии, связанные с использованием персональных ЭВМ и сети Интернет.
В то же время информатика как научная дисциплина сохраняет свое ядро - общие принципы, законы и методы,
организации вычислений и обработки информации с помощью ЭВМ. Эти принципы
сохранят свою роль и значение для всех моделей и типов ЭВМ независимо от их элементной базы, быстродействия и объемов памяти.
Более того общие законы информатики как общие законы интеллектуальной деятельности сохраняют свою силу при изучении принципов обработки, накопления и передачи информации не только в ЭВМ, но и в живых организмах и человеческом обществе.
В о п р о с ы
1. Что такое информация?
2. Что такое информатика?
3. Где будет храниться информация в XXI веке?
4. Что такое компьютерная грамотность?
5. Что такое информационная культура?
6. Что такое логическое мышление?
7. В чем сложность изучения информатики?
Ввод и редактирование программ
Для ввода новых программ или редактирования имеющихся необходимо перейти в режим «Редактор». Для перехода к вводу новой программы или базы данных необходимо нажать клавишу F3 - открытие нового окна - и приступить к построчному вводу текста программы.
Ввод и редактирование текстов программ и баз данных на Прологе выполняется по правилам, традиционным для редакторов текстов.
Признаком конца строки служит нажатие клавиши ввода Enter. Последний введенный символ стирается нажатием клавиши BS. Удаление символов в текущей позиции проводится нажатием клавиши Del.
Для исправления текущей строки используются клавиши управления курсором - стрелки вправо-влево, а также клавиши перехода в начало строки Ноmе и перехода в конец строки End.
Для вставки символов необходимо перейти в режим «Вставка», нажав клавишу Ins. Признаком режима «Вставки» служит размер курсора: в режиме «Вставка» видна половина курсора, а в режиме «Замена» курсор целиком закрывает текущий символ. Переключение режимов вставка/замена производится нажатием клавиши Ins.
Рассечение строки осуществляется в режиме «Вставка» нажатием клавиши ввода Enter.
Для обратной операции - склейки строк курсор переводится в конец верхней строки, где нажимается клавиша удаления символов Del. В результате нижняя строка «приклеится» к верхней. Удаление текущей строки произойдет при одновременном нажатии клавиш Ctrl и Y.
Для удаления всего текста в целом для начала ввода нового текста программы необходимо перейти в режим «Файл», нажав клавишу F2, а затем указать в появившемся подменю режим «Новый».
Выполнение расчетов на компьютерах
Персональные компьютеры служат удобным средством вычислений и расчетов экономического и математического содержания. В этом смысле компьютеры намного эффективнее бухгалтерских счетов и калькуляторов, которые требуют больших затрат ручного труда.
Наиболее удобным средством проведения расчетов на персональных компьютерах являются электронные таблицы. В этих программах все исходные и расчетные данные отображаются на экране в форме таблиц.
Электронные таблицы - программы для выполнения и хранения различных расчетов и калькуляций на компьютерах. На персональных компьютерах IBM PC наибольшее распространение получили электронные таблицы Excel.
Калькуляция
- это таблица с определенным набором надписей, формул и данных, используемых для расчетов. В качестве примера рассмотрим калькуляцию закупки сладостей к дню рождения.
Пусть к дню рождения принято решение купить шоколад и конфеты «Аленка», «Мишки», «Марс». Соответствующая калькуляция закупок конфет с учетом их цен, веса и количества имеет вид:
A | B | C | D | E | F | ||||||||
1 | конфеты | цена | вес | кол-во | масса | стоим | |||||||
2 | Аленка | 600 | 100 | 3 | 300 | 1800 | |||||||
3 | Мишки | 200 | 40 | 10 | 400 | 2000 | |||||||
4 | Марс | 500 | 100 | 5 | 500 | 2500 | |||||||
5 | |||||||||||||
6 | итого: | 18 | сумма: | 6300 | |||||||||
7 | денег: | 8000 | остаток: | 1700 |
С помощью приведенной калькуляции, меняя на экране количество конфет, можно оценить различные варианты закупок. В частности, можно решить следующие проблемы:
купить на заданную сумму наибольшее число сладостей;
купить на заданную сумму наибольшую массу конфет;
купить все виды конфет для пяти гостей в рамках заданной суммы.
Р е ш е н и е. Для выполнения расчетов в электронной таблице должна храниться следующая система формул:
Е2 = C2*D2 F2 = B2*D2
ЕЗ = C3*D3 F3 = B3*D3
E4 = C4*D4 F4 = B4*D4
D6 = D2 + D3 + D4 F7 = B7 - F6
F6 = Sum (F2 : F4)
Здесь B2, D3, E6, F7 - имена ячеек электронной таблицы; Sum (F2 : F4) - функция суммирования ячеек из столбца F от ячейки F2 до ячейки F4.
Основные возможности электронных таблиц на компьютерах:
1) автоматический перерасчет калькуляций;
2) хранение и поиск калькуляций в памяти ЭВМ;
3) вывод калькуляций на печать;
4) обновление и ввод новых калькуляций.
Перерасчет калькуляций в электронных таблицах производится автоматически сразу же после обновления на экране любых исходных данных. В этом заключается основное свойство и удобство электронных таблиц: один раз составленная калькуляция может использоваться многократно для выполнения расчетов при различных исходных данных.
Хранение калькуляций в электронных таблицах обычно проводится на магнитных дисках. Это позволяет повторно использовать их для новых расчетов и перерасчетов. Бумажная копия любой из электронных таблиц со всеми ее исходными и расчетными данными может быть выведена на печать.
Ввод калькуляций, состоящих из надписей, числовых данных и формул, проводится по ячейкам. Для этого к необходимой ячейке подводится курсор с помощью мышки или клавиш стрелок, а затем нажимается клавиша Enter на клавиатуре либо клавиша на мышке.
Копирование и перенос надписей, данных, формул и целых блоков таблиц позволяет достаточно быстро создавать новые калькуляции из уже имеющихся в памяти компьютера. Многие электронные таблицы допускают изменение размеров строк или столбцов таблиц для их более наглядного и красивого расположения.
Числовые данные могут быть целыми и вещественный числами. Примеры записи чисел в электронных таблицах:
0, 1, 2, 3, ... , -1, -2, -3, ... - целые числа;
0.1, 1.5, 12.87, 0.002 , ... - вещественные числа.
Обратите внимание: для записи дробной части обычно применяется точка, а не запятая. Для записи десятичного порядка используется символ Е:
1.2Е6 º
1200000
-.5Е-4 º
-0.0005
Расчетные формулы в электронных таблицах образуются из числовых значений, обозначений элементарных и специальных функций и имен ячеек электронной таблицы: А1, А2, A3, В1, В2, С1 и т. д.
Запись арифметических операций в формулах и числовых выражениях в электронных таблицах выполняется с помощью следующих знаков:
+ - сложение 2+2 А2+В2+С2
- - вычитание 6-8 А1-В1
* - умножение 7*8 2*А2*С2
/ -деление 2/3 А1/(2/С2)
Ù - возведение в степень 5Ù3 A3Ù2
Математические функции в электронных таблицах имеют следующие обозначения:
sin(x) - синус cos(x) - косинус
tan(x) - тангенс atan(x) - арктангенс
ехр(х) - экспонента ln(x) - натуральный логарифм
sqr(x) - квадратный корень
В о п р о с ы
1. Что такое калькуляция?
2. Каковы основные возможности электронных таблиц?
3. Какие электронные таблицы используются на IBM PC?
4. Как записываются формулы в электронных таблицах?
5. Какие математические функции есть в электронных таблицах?
З а д а н и я
1. Составьте систему формул для расчета заработной платы по следующей таблице:
A |
B |
C |
D |
|
1 |
фамилия |
часы |
оплата |
з/плата |
2 |
Иванов |
20 |
1000 |
20000 |
3 |
Петрова |
25 |
800 |
20000 |
4 |
Сидоров |
10 |
600 |
6000 |
5 |
||||
6 |
итого: |
46000 |
A |
B |
C |
D |
E |
F |
|
1 |
Закупки: |
цена |
колич |
сумма |
||
2 |
тетради |
200 |
10 |
2000 |
||
3 |
карандаши |
300 |
8 |
2400 |
||
4 |
ручки |
3500 |
4 |
14000 |
||
5 |
ластики |
400 |
2 |
800 |
||
6 |
||||||
7 |
всего: |
19200 |
||||
8 |
Законы логического вывода
Умение делать выводы - основная способность любого интеллекта. Основным признаком интеллекта являются знания и умения решать определенные задачи. Основой этих интеллектуальных умений являются законы и принципы логического вывода.
Законы человеческого мышления изучаются логикой и психологией. Принципы искусственного интеллекта разрабатываются в математической логике и информатике на основе методов машинного доказательства теорем и постановки экспериментов на ЭВМ.
Знание законов логического вывода позволяет выверять правильность рассуждений, доказательств, а также находить ошибочные утверждения. Незнание или нарушение этих законов и принципов приводит к логическим ошибкам и принятию неправильных решений.
В качестве иллюстраций рассмотрим базу знаний о семье. Пусть в семье есть дочь Оля, сын Сережа, мама Надя, папа Коля, бабушка Зина и дедушка Миша:
Соответствующая база данных на языке Пролог:
мама (Зина, Надя); папа (Миша, Надя);
мама (Надя, Оля); папа (Коля, Оля);
мама (Надя, Сережа); папа (Коля, Сережа);
Система Пролог при наличии этих фактов в памяти ЭВМ даст следующие ответы на вопросы о «папах» и «мамах»:
? мама (Надя, Оля) - Надя - мама Оли?
да
? папа (Сережа, Надя) - Сережа - папа Нади?
нет
Машина, использующая систему Пролог, дает ответы строго в соответствии с определенными логическими законами и принципами логического вывода. Разберем эти законы и принципы.
Законы логики - это общие законы логического вывода, используемые для вывода различных умозаключений. Наличие интеллекта и у компьютеров и у людей определяется прежде всего способностями делать выводы и умозаключения в различных ситуациях.
Закон противоречия - первый общий закон логики. Этот закон впервые высказал Аристотель - основатель логики как научной дисциплины:
А и не А - Не могут быть истинны одновременно
ложь суждение и его отрицание
Примеры противоречивых утверждений:
1) «яблоко - спелое»;
«яблоко - неспелое»;
2) «треугольник АВС - прямоугольный»;
«стороны треугольника равны друг другу».
Высказывание противоречивых суждений и утверждений является примером серьезных логических ошибок. Наличие противоречий говорит о некотором умысле либо о нарушениях в сознании.
В системе Пролог закон противоречия лежит в основе механизмов вывода ответов на вопросы. А именно, система Пролог для каждого вопроса формирует его отрицание и для этого отрицания ищет противоречие по отношению к фактам и правилам в базе знаний, хранящейся в памяти.
Так, вопрос ? мама (Надя, Оля) ЭВМ преобразует в отрицание не мама (Надя, Оля)
и временно присоединяет его к базе знаний. При этом получившаяся база становится противоречивой и система Пролог объявляет отрицание ложным и выводит ответ ДА.
Закон исключения третьего - второй общий закон логики, указанный Аристотелем:
А или не А - Истинно суждение либо его отрицание,
истина третьего не дано.
Примеры взаимоисключающих утверждений:
1) «Сегодня будет дождь» или «Сегодня дождя не будет».
2) «Любой треугольник правильный либо в нем есть разные стороны».
Принципы логического вывода в системе Пролог отличаются от законов Аристотеля, поскольку его законы выражаются на языке высказываний, а работа системы Пролог основана на использовании предикатов.
Соответствующая запись законов логики на языке исчисления предикатов представляет конструктивные процедуры, позволяющие осуществлять конкретные логические выводы из общих правил и конкретных фактов.
Закон противоречия в записи на языке исчисления предикатов преобразуется в процедуру вывода ответов на простейшие вопросы вида ? А(с):
А(х) и не А(с) - При противоречии А(х) и не А(с)
ложь, при х = с контрпримером служит х = с.
Содержательный смысл: При противоречии А(х) и не А(с) контрпримером служит х = с. Здесь х - переменная, а с
- конкретное значение, при котором отрицание ответа оказывается ложным. Это значение х = с выводится системой Пролог в качестве ответа на поставленный вопрос. Примеры такого рода вопросов и ответов:
? папа (х, Коля) - Кто папа у Коли ?
нет
? папа (х, Оля) - Кто папа у Оли ?
х = Коля
? мама (х, у) - Что известно о мамах?
х = Зина у = Надя
х = Надя у = Оля
Закон двойного отрицания - третий общий закон логики. Этот закон также был высказан Аристотелем:
не (не А) - Если неверно отрицание,
А то суждение – истинно
Примеры рассуждений.
1) Неверно, что «Вчера не было дождя».
Следовательно, «Вчера был дождь».
2) Неправда, что «это сделал не Саша».
Следовательно, «это сделал Саша». (?)
Из второго примера видно, что закон двойного отрицания является косвенным доказательством, поскольку оно не опирается на факты или аргументы. По этим причинам закон двойного отрицания может оказаться ошибочным и этот закон не является общезначимым (верным для всех случаев и ситуаций).
Правильность утверждений и рассуждений даже при безупречной логике доказательств зависит от достоверности исходных фактов и положений. Эту идею выражает четвертый общий логический закон - закон достаточных оснований, впервые сформулированный Лейбницем - создателем одной из самых первых механических вычислительных машин и основателем исчисления предикатов.
Закон достаточных оснований:
Всякое утверждение должно предполагать существование аргументов и фактов, достаточных для его обоснования.
Иными словами, любое утверждение должно предполагать наличие набора конкретных фактов и правил, из которых должно вытекать утверждаемое. Нарушениями это закона являются рассуждения, опирающиеся на недостоверные факты или положения, истинность которых не проверяется, а принимается на веру.
Пример рассуждений, не имеющих достаточных оснований:
1. «Если дорогу перебежала черная кошка, то быть неприятностям».
2. «Это верно, потому что это - справедливо».
Экспертные системы на ЭВМ с этой точки зрения должны создаваться исключительно на основе достоверных данных и общих правил вывода, проверенных практикой. Включение в базу знаний недостоверных данных или неподтвержденных обобщений и правил может привести к появлению ошибок и получению неправильных решений.
Причина такой работы экспертных систем состоит в том, что компьютеры могут делать выводы и
умозаключения только исходя из фактов и правил, имеющихся в базе знаний, и только из этих данных - и ничего другого. Практическую ценность для систем машинного интеллекта представляют принципы логического вывода на основе не только фактов, но и правил.
Закон логического вывода
modus ponens - первый закон, указанный Аристотелем:
А ® В, А -
Если из А следует В и посылка А истинна,
В то выполняется и следствие В.
Примеры применения правила логического вывода.
1. «Если идет дождь, то на улице мокро».
«Пошел дождь».
Следовательно, «на улице мокро».
2. «Если кому-то весело, то он улыбается».
«Маша развеселилась».
Следовательно, «Маша улыбается».
В предикатной форме закон логического вывода превращается в процедуру вывода новых сведений из имеющихся общих правил и конкретных фактов:
А(х) ®
В(х), А(с) - Если из А(х) следует В(х) и А(х) выполнено
В(с) для х = с, то выполняется В (с).
Данная процедура из конкретного факта А(с)
и общего правила логического вывода А(х) ®
В(х) позволяет вывести новое
конкретное утверждение В(с).
Иными словами, эта процедура вывода позволяет выводить новые конкретные сведения из общих правил и уже известных конкретных фактов.
Следовательно, знание и применение законов логического вывода позволяет порождать новые сведения, являющиеся логическим следствием уже известных сведений.
Этим свойством и этими зако нами могут пользоваться не только люди - они применяются в системах машинного интеллекта.
Закон вывода отрицаний - второй закон логического вывода:
А ® В, не В - Если из А следует В, но следствие В ложно,
не А то не выполняется посылка А.
Примеры логического вывода из отрицаний.
1. «Если идет дождь, то на улице мокро».
«На улице сухо».
Следовательно, «На улице не было дождя».
2. «Если кому-то весело, то он улыбается».
«Вова не улыбается».
Следовательно, «Вове не весело».
В предикатной форме закон вывода отрицаний превращается в конструктивную процедуру вывода отрицаний:
А(х) ® В(х), не В(с)
- Если из А(х) следует
В(х), но В не выполнено
не А(с) для х = с, то не выполняется и А(с).
Данная процедура из конкретного отрицания следствия не В(с) и общего правила А(х) ®
В(х) выводит конкретное отрицание не А(с)
предпосылки при х = с. Эта процедура используется в системе Пролог как основной механизм поиска ответов на сложные вопросы, в которых участвуют определяемые предикаты.
В качестве иллюстраций дополним рассмотренную базу знаний о семье набором правил на языке Пролог, выражающих понятие «родитель»:
родитель (х, у) ¬ мама (х, у); - Мама - родитель
родитель (х, у) ¬ папа (х, у); - Папа – родитель
После ввода этих правил в ЭВМ система Пролог на вопросы о родителях выдаст такие ответы при указанной выше базе данных:
? родитель (Надя, х) - Кому родитель Надя ?
х = Оля
х = Сережа
Вывод ответов на эти вопросы система Пролог проводит следующим образом. Во-первых, вопрос ? родитель (Надя, х) будет заменен на отрицание не родитель (Надя,
х). Далее это отрицание будет сопоставлено с правилом вывода родитель (х, у) ¬ мама (х, у), а затем с правилом родитель (х, у) ¬ папа (х, у).
Применение этой же процедуры вывода ко второму определению родитель (х, у) ¬ папа (х, у) даст отрицание не папа (Надя, х), означающее утверждение «Надя не является папой никому». Для этого утверждения компьютер не имеет в базе данных никаких соответствующих фактов и после просмотра базы знаний по этому варианту выдает ответ НЕТ.
Применение к отрицанию не родитель (Надя, х) и определению родитель (х, у) ¬
мама (х, у) рассматриваемой процедуры приводит к выводу утверждения не мама (Надя, х), означающему «Надя не является мамой никому». Для этого отрицания машина найдет два конкретных противоречащих ему факта мама (Надя, Оля) и мама (Надя, Сережа). Используя конструктивную процедуру вывода ответов из отрицаний, компьютер даст два конкретных ответа - х = Оля и х = Сережа.
Закон тождества - четвертый общий логический закон, указанный Аристотелем:
«Предмет
рассмотрения должен быть определен
и не должен меняться до конца обсуждения»
Данный закон носит фундаментальный характер
для работы экспертных систем - правильные выводы и решения могут быть получены от экспертных систем только при строгом совпадении определений вещей из рассматриваемой предметной области.
Расхождения в понимании и определении предметных понятий могут приводить и, как правило, приводят к логическим ошибкам и получению неправильных выводов и результатов, что наблюдается среди людей, не обладающих необходимыми профессиональными знаниями.
Примером нарушения закона тождества является подмена предмета, когда два собеседника осознанно или неосознанно говорят о разных вещах, что приводит их к непониманию, спорам и разногласиям. Классический пример нарушения - ситуация: «я
- про Фому, а он - про Ерему».
В системе Пролог и в системах искусственного интеллекта вывод ответов на сложные вопросы основан на принципе унификации (взаимосогласования) ответов. По этой причине экспертные системы на ЭВМ в отличии от людей могут производить вывод ответов на сложные вопросы только в соответствии с принципом унификации.
Принцип унификации ответов состоит в том, что общие перемен ные во взаимосвязанных вопросах должны получать одинаковые значения. Пример ответа на сложносоставной вопрос, состоящий из двух подвопросов:
? мама (z, у), мама (у, Оля) - Кто мама у мамы Оли?
z = Зина
у = Надя
Вывод ответов на сложносоставные вопросы состоит в выделении подвопросов и поиске на них ответов по частям:
? мама (z, у), мама (у, Оля)
¤ \
? мама (z, у) ?мама
(у, Оля)
¤ \ ¤
z = Зина у = Надя
В данном примере общим элементом в выделяемых подвопросах ? мама (z, у) и ? мама (у, Оля) является переменная «у». Ответом на первый подвопрос ?
мама (z, у) будут значения z = Зина и у = Надя. Ответы на второй подвопрос ? мама (у, Оля) в соответствии с принципом взаимосогласования будет проводиться для значения у = Надя.
Принцип вывода взаимосогласованных ответов в системе Пролог распространяется и на сложносоставные правила, включаемые в базы знаний и процедуры логического вывода. Приведем примеры сложных определений:
бабушка (z, х) ¬ мама (z, у), мама (у, х);
бабушка (z, х) ¬ мама (z, у), папа (у, х);
дедушка (z, х) ¬ папа (z, у), мама (у, х);
дедушка (z, х) ¬ папа (z, у), папа (у, х);
При наличии этих правил в памяти ЭВМ можно получить следующие вопросы о бабушках и дедушках:
? бабушка (z, Оля) - Кто бабушка у Оли?
z = Зина
? дедушка (z, Надя) - Кто дедушка у Нади?
нет
Принцип унификации в системе и языке Пролог является общим механизмом логического вывода ответов на сложные вопросы в базах знаний на Прологе и тем самым - конструктивной реализацией закона тождества для машинных систем искусственного интеллекта. Таким образом работа экспертных систем на ЭВМ основана строго на выполнении требований законов логики
- закона тождества и закона достаточных оснований.
В о п р о с ы
1.
В чем состоит закон противоречия?
2. В чем заключается закон исключения третьего?
3. Как используется закон вывода следствий?
4. Как используется закон отрицания следствий?
5. В чем недостатки закона двойного отрицания?
6. В чем состоит закон достаточных оснований?
7. В чем заключается закон тождества?
8. В чем состоит принцип унификации?
9. Как согласуются ответы на сложные вопросы?
3 а д а н и я
1. Укажите примеры двойного отрицания для утверждений:
а) «сегодня был дождь»; в) «х = 2» и «х = 3»;
б) «х = 0» или
«у = 0»; г) «5 не делится на 2 и на 3».
2. Пусть утверждение А «прошел дождь», а утверждение В «на улице сыро». Истинны ли следующие суждения?
а) А Þ В (прямое доказательство);
б) В Þ А (обратное доказательство);
в) не А Þ не В (противоположное доказательство);
г) не В Þ не А (противоположное обратному).
3. Предложите систему признаков и понятий для описаний
а) класса «Млекопитающие»; в) класса «Рыбы»;
б) класса «Птицы»; г) класса «Насекомые».
В систему понятий введите следующие признаки: окрас, продолжительность жизни, умения ползать, летать, ходить и т. д.
4. Составьте базу знаний по всемирной географии. В базу знаний включите сведения о странах: название столицы, число жителей, тип государства, размеры страны, континент.
5. Составьте базу знаний по городам своей страны. В базу знаний включите сведения о размерах городов, числе жителей, расстоянии от столицы, названии самых крупных заводов, фабрик, музеев, стадионов и т. п.
6. Составьте базы данных
а) по литературе; г) по истории;
б) по зоологии; д) по ботанике;
в) об автомобилях; е) по кулинарии.
Запись правил и процедур
Правила в Прологе используются для описания определений, запросов к базам данных, а также обращений к другим правилам и процедурам. Примеры записи правил:
родитель (х,у) ¬ мама (х,у);
родитель (х,у) ¬ папа (х,у);
бабушка (x,z) ¬ мама (х,у), родитель (y,z);
дедушка (x,z) ¬ папа (х,у), родитель (y,z);
Общая форма записи правил на Прологе:
правило:
<заголовок> ( <определение>;Здесь <заголовок> отделяется от <определения> двумя знаками:
¬ «меньше» и «тире». В конце правила записывается «точка с запятой».
Заголовки правил имеют следующую форму:
заголовок:
<имя>(<парам>[,<парам> ...])
Здесь <имя> - это любое слово или словосочетание. В роли параметров в заголовках правил могут указываться переменные или конкретные значения либо неопределенные значения с помощью знака подчеркивания [_].
Описание заголовка служит образцом записи обращений к правилам и процедурам. Определения в правилах образуются из обращений к другим правилам и процедурам, а также из запросов к данным и встроенным процедурам Пролога. Общая форма записи определений в правилах:
определение:
<заголовок>[,<заголовок> ...]
Запросы и определения отделяются в описаниях правил запятыми и записываются по тем же правилам, что и заголовки.
Порядок записи обращений и запросов в определениях правил в языке Пролог весьма существенен, поскольку он задает порядок их применения и выполнения. Нарушение этого порядка может привести к значительному изменению конечных результатов выполнения правил и процедур.
Результатом выполнения любых процедур и правил в Прологе всегда являются логические значения - ДА либо НЕТ, соответствующее успеху или неуспеху их применения. В этом смысле применение правил в Прологе совпадает с проверкой условий в логике. Соответственно форма записи обращений к правилам и процедурам в Прологе совпадает с формой записи предикатов в математической логике.
Однако в отличие от математической логики, где существенны только логические значения этих предикатов, в Прологе результатом применения правил и процедур может быть конкретизация значений переменных, указанных в обращениях к ним.
Пример такого обращения:
? родитель (х,вова)
х = зина
Полученный ответ имеет двойной результат: во-первых, подтверждение истинности наличия «родителей» у «вовы», а во-вторых, конкретизация переменной «х» в обращении к процедуре «родитель» с именем «вова», которая дает значение «х = зина».
Кроме конкретизации значений переменных в запросах и обращениях результатами выполнения процедур и правил в Прологе могут быть различного рода побочные эффекты - вывод на экран линий, точек, картинок, сообщений, запись и считывание данных и т. п.
В этом смысле результаты выполнения процедур и программ на Прологе могут быть эквивалентны результатам выполнения программ на других языках программирования.
Запуск интерпретатора Пролога
Интерпретатор Пролога находится на жестком диске или дискете в каталоге с именем PROLOG. Запуск интерпретатора проводится с помощью команды
> prolog
из каталога, в котором он находится.
Интерпретатор может быть запущен одновременной с загрузкой некоторой базы знаний или программы на Прологе следующей командой:
> prolog <имя>
где <имя>
- это имя некоторого файла данных. Если запуск прошел успешно, то на экране появится изображение такого вида:
(С) Файл Диалог Окна Свободно: 303Кб.18:40:54
- [_ ]--------------- D:\PROLOG\FAMILY.PRL ——————1-[208]-
мама (зина, вова);папа (вова, лена);
бабушка (х, z) <- мама (х, у), мама (у, z);
бабушка (х, z) <- мама (х, у), папа (у, z);
F1 Подсказка F3 Открыть Alt-F3 Закрыть F4 Диалог F10 Меню
Настоящая версия диалогового интерпретатора языка Пролог предоставляет следующие возможности:
· работа в диалоге с базами данных и программами на Прологе;
· поиск и чтение программ и баз данных, записанных на дисках;
· ввод и редактирование новых программ и баз данных;
· запись на диски новых или отредактированных программ;
· вывод на печать программ и баз данных на Прологе.
Для работы с интерпретатором используются следующие клавиши-команды:
F1 - получение подсказки;
F2 - работа с файлами;
F3 - открытие нового окна;
Alt-F3 - закрытие текущего окна;
F4 - начало диалога с программой;
F10 - обращение к верхнему меню.