Информатика

         

Постановка и решение задач


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

Ключом к любой задаче является способ решения,

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

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

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

Для решения задач необходимо определение:

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

с расчетной формулой С3 = -С2/ А2.

Особую ценность для решения задач представляют обобщенные методы решения. Метод - единый способ решения некоторого класса задач. Знание методов позволяет находить решения для любой кон­кретной задачи данного класса.

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

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

Например, для уравнения а×х + 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

2) тест2 (проверка частного случая):

Иванов

начальник

2500

3) тест3 (проверка граничных ситуаций):

Иванов

начальник

2000

Петров

сотрудник

2000

Независимо от языка программирования и способа ввода-вывода данных отсутствие каких бы то ни было ответов - есть «отказ», вывод избыточных данных или неполные данные - есть «сбой», непра­вильный список - есть неправильный результат решения.

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

ответ1 (основной случай):

Иванов

начальник

2500

ответ2 (частный случай):



«никто не получает зарплату выше средней»

ответ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

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

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





Мама

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

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

Сценарий:

поиск номера телефона

имя = ? <имя>

телефон: <номер>

нет такого

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

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

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



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

3. Составьте калькуляцию закупок продуктов для похода на N дней и М человек.


Законы логического вывода


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

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

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

В качестве иллюстраций рассмотрим базу знаний о семье. Пусть в семье есть дочь Оля, сын Сережа, мама Надя, папа Коля, бабушка Зина и дедушка Миша:

Соответствующая база данных на языке Пролог:

мама (Зина, Надя);                          папа (Миша, Надя);

мама (Надя, Оля);                           папа (Коля, Оля);

мама (Надя, Сережа);                     папа (Коля, Сережа);

Система Пролог при наличии этих фактов в памяти ЭВМ даст следующие ответы на вопросы о «папах» и «мамах»:

? мама (Надя, Оля)                         - Надя - мама Оли?

да

? папа (Сережа, Надя)                    - Сережа - папа Нади?

нет

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

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

Закон противоречия - первый общий закон логики. Этот закон впервые высказал Аристотель - основатель логики как научной дисциплины:

А и не А                     - Не могут быть истинны одновременно


  ложь                         суждение и его отрицание

Примеры противоречивых утверждений:

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   - обращение к верхнему меню.