Информатика. Программирование для библиотечных специалистов. Учебное пособие
.pdfОтказы исполнителя возникают, если команда вызывается при недопустимом для нее состоянии среды.
Обычно исполнитель ничего не знает о цели алгоритма. Он выполняет все полученные команды, не задавая вопросов «почему» и «зачем».
В информатике универсальным исполнителем алгоритмов является компьютер.
Алгоритмы разделяются на численные и логические. Численные алгоритмы — это алгоритмы, в соответствии
скоторыми решение задач сводится к арифметическим действиям.
Логические алгоритмы — это алгоритмы, в соответствии
скоторыми решение задач сводится к логическим действиям. Свойства алгоритмов:
1. Дискретность. Это разделение выполнения решения задачи на отдельные операции (выполняемые исполнителем
по определенным |
командам) |
Поочередное выполнение |
команд алгоритма |
за конечное |
число шагов приводит |
к решению задачи, к достижению цели.
2.Точность (определенность). Каждый алгоритм строится в расчете на некоторого исполнителя. Для того, чтобы исполнитель мог решить задачу по заданному алгоритму, необходимо, чтобы он был в состоянии понять и выполнить каждое действие, предписываемое командами алгоритма.
3.Конечность (результативность). Это свойство
означает, что исполнение |
алгоритма |
должно закончиться |
за конечное число шагов. |
|
|
4. Универсальность |
(массовость). |
Алгоритм должен |
быть составлен так, чтобы им мог воспользоваться любой исполнитель для решения аналогичной задачи (например, правила сложения и умножения чисел годятся для любых чисел, а не для каких-то конкретных).
Таким образом, выполняя алгоритм, исполнитель может не вникать в смысл того, что он делает, и вместе с тем получать нужный результат. В таком случае говорят, что исполнитель действует формально, т.е. отвлекается от содержа-
11
ния поставленной задачи и только строго выполняет некоторые правила, инструкции.
На практике наиболее распространены следующие формы представления алгоритмов:
1)словесная (записи на естественном языке);
2)графическая (изображения из графических символов);
3)псевдокоды (полуформализованные описания алгорит-
мов на условном алгоритмическом языке, включающие в себя как элементы языка программирования, так и фразы естественного языка, общепринятые математические обозначения и др.); 4) программная (тексты на языках программирования).
При графическом представлении алгоритм изображается в виде последовательности связанных между собой функциональных блоков, каждый из которых соответствует выполнению одного или нескольких действий. Такое представление называется блок-схемой алгоритма.
Каждый тип действий представляется в виде блочного символа — определенной геометрической фигуры. Они соединяются стрелками, которые определяются как линии потока информации (данных) и показывают очередность действий.
Блок-схема — распространенный тип схем (графических моделей), описывающих алгоритмы или процессы, в которых отдельные шаги изображаются в виде блоков различной формы, соединенных между собой линиями, указывающими направление последовательности.
Правила выполнения схем определяются ГОСТ 19.701-90 (ИСО 5807-85) «Единая система программной документации. Схемы алгоритмов, программ, данных и систем. Обозначения условные и правила выполнения» [3].
12
Таблица 1
Стандарты графических изображений блоков
13
Структурное программирование в качестве средства борьбы с большим количеством стрелок предлагает еще один способ графического представления алгоритмов. Это диаграммы Насси
— Шнейдермана [8].
14
Практический блок
1.Рассмотрите работу исполнителя «Перевозчик»
(http://robotlandia.ru/abc3/0101.htm). Определите, что является средой исполнителя, каковы элементарные действия. Запишите систему команд, определите, в каком случае возможны отказы.
2.Составьте алгоритм выдачи книги на абонементе. Запишите в словесном и графическом виде, проведите сравнительный анализ.
Вопросы и задания для самостоятельной работы
Изучите главу 14 учебника «Информатика» [8].
1.Как можно использовать алгоритмы в библиотечноинформационной деятельности?
2.Как можно использовать алгоритмы в гуманитарной
сфере?
3.Приведите различные определения алгоритма. Дайте характеристику их сходства и различия.
4.Как понимается термин «формализация»?
5.Как алгоритм позволяет формализовать информационный процесс? Приведите примеры из профессиональной деятельности.
6.Что такое «исполнитель»? Назовите основные характеристики исполнителя «Перевозчик».
7.Перечислите свойства алгоритма. Приведите пример алгоритма из профессиональной сферы и докажите, что все свойства выполняются.
8.Какие различают способы записи алгоритмов?
9.Какие недостатки словесного способа?
10.Какие достоинства и недостатки графического способа?
11.Какие преимущества дают диаграммы Нэйси — Шнейдермана?
12.Что представляет собой псевдокод?
15
Творческий блок
Опишите основные характеристики исполнителя «Абонемент» (выдача книг). Продемонстрируйте работу исполнителя.
16
ТЕМА 2. ПРОГРАММНЫЙ СПОСОБ ПРЕДСТАВЛЕНИЯ АЛГОРИТМОВ. ЯЗЫКИ ПРОГРАММИРОВАНИЯ. ТРАНСЛЯТОРЫ. КЛАССИФИКАЦИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ. ОСНОВНЫЕ ЭТАПЫ РЕШЕНИЯ ЗАДАЧ С ИСПОЛЬЗОВАНИЕМ ПК
Теоретический блок
Универсальными исполнителями алгоритмов являются компьютеры или другие вычислительные устройства, поэтому алгоритм, предназначенный для исполнения на компьютере, должен быть записан «на понятном ему языке», причем, исключая произвольное толкование команд, т.е. формализован.
Язык программирования — это формализованный язык, предназначенный для описания программ и алгоритмов решения задач на компьютере.
Компьютерная программа — это последовательность инструкций на машинно-ориентированном языке, предназначенных для выполнения центральным процессом вычислительной машины.
Уникальность программирования заключается в том, что оно соединяет и науку, и искусство, позволяя развивать и мышление, и творческие способности.
Программирование (programming) — теоретическая и практическая деятельность, связанная с созданием программ.
Программирование — это совокупность процессов, связанных с разработкой программ и их реализацией.
Исходный код — текст компьютерной программы, написанной на выбранном языке программирования.
Объектный модуль — последовательность инструкций машинного кода, являющаяся результатом работы компилятора.
Машинный код — язык конкретной вычислительной машины, инструкции которой выполняются непосредственно центральным процессом или его микропрограммами.
Исполняемый код — объединенные в загружаемую программу модули объектного кода.
17
Транслятор — программа, осуществляющая трансляцию компьютерной программы с языком программирования в программу на машинном коде с сохранением эквивалентности обеих программ. Это программа-переводчик с языка высокого уровня на язык машинных кодов и наоборот. Любой транслятор выполняет следующие основные задачи:
−анализирует транслируемую программу, в частности определяет, содержит ли она синтаксические ошибки;
−генерирует выходную программу (ее часто называют объектной) на языке машинных команд;
−распределяет память для объектной программы. Различают два вида трансляторов (например, рецепт блин-
чиков на английском языке, а исполнитель понимает только русский):
–интерпретатор — переводит и сразу исполняет инструкции алгоритма последовательно друг за другом. В случае ошибки процесс останавливается, ошибка исправляется, и все начинается сначала;
–компилятор — переводит исходный код алгоритма
вобъектные модули, которые собираются при помощи программы сборки в единый модуль. Этот модуль и исполняется.
В зависимости от степени детализации предписаний различают машинно-ориентированные (низкого уровня) и машин- но-независимые (высокого уровня) языки программирования.
Языки программирования высокого уровня делятся на про-
цедурные, логические и объектно-ориентированные.
Более подробная классификация представлена в таблице 2.
18
Таблица 2
Классификация языков программирования
Признак |
Виды |
|
Характеристика |
|
Компилируемые |
|
Языки программирования, исход- |
|
языки |
|
ный код которых преобразуется |
|
|
|
специальной программой в объ- |
|
|
|
ектные модули, которые затем |
|
|
|
собираются при помощи про- |
|
|
|
граммы сборки в единый загру- |
|
|
|
женный модуль. Ассемблер. Си, |
|
|
|
Модула-2, С, С++, Pascal, Ob- |
|
|
|
jectPascal |
выполнения |
Интерпретируемые |
|
Работают на интерпретаторах Py- |
языки |
|
thon, SQL, Basic |
|
Языки, компилиру- |
|
В этих языках исходный код про- |
|
емые на основе |
|
граммы компилируется и выпол- |
|
псевдокода |
|
няется как последовательность |
|
способуПо |
|
|
вызовов программ из существу- |
|
|
ющих библиотек |
|
|
|
|
|
|
|
|
|
|
Совмещенные языки |
|
В совмещенных языках исходный |
|
|
|
код проходит две стадии обра- |
|
|
|
ботки: на первой стадии проходит |
|
|
|
компиляция исходного кода до |
|
|
|
уровня промежуточного языка; на |
|
|
|
второй стадии проходит интер- |
|
|
|
претация промежуточного кода |
|
|
|
или докомпиляция промежуточ- |
|
|
|
ного кода до выполняемого ма- |
|
|
|
шинного кода. Java |
фактуПо созданияпроцесса |
Языки, создающие |
|
После запуска программы созда- |
процесс |
|
ется отдельный процесс выпол- |
|
|
|
нения этой программы |
|
|
Сценарные языки |
|
Сценарий, или скрипт, — это |
|
|
|
программа, которую выполняет |
|
|
|
другая программа |
|
|
19 |
|
Признак |
Виды |
Характеристика |
|
|
автономности |
|
Являются автономным инстру- |
По степени |
Автономные языки |
ментом для создания программ |
|
программирования |
|
||
Встроенные языки |
Являются частью какой-то систе- |
||
программирования |
мы и позволяют создавать про- |
||
|
граммы, предназначенные для |
||
|
работы только этой системы |
||
|
|
|
|
|
|
|
|
|
По уровню отдаленности |
Машинно- |
Ближе к логике процессора вы- |
|
ориентированные |
числительной машины |
|
|
(языки низкого |
|
|
|
уровня) |
|
|
|
Машинно- |
Ближе лингвистически к челове- |
|
|
независимые (языки |
ческому языку |
|
|
высокого уровня) |
|
|
|
|
|
|
|
|
Императивные |
Описывают решение задачи как |
|
|
(процедурные) язы- |
последовательность процедур |
|
|
ки |
|
|
|
Функциональные |
Описывают требуемый результат |
|
парадигмам |
языки |
в виде набора вложенных друг в |
|
|
друга функций Лисп, Common |
|
|
|
Lisp, Haskell |
|
|
Логические языки |
Описывают требуемый результат |
|
|
|
в виде суммы логических опера- |
|
|
|
ций. Prolog |
|
|
По |
|
|
|
Объектно- |
Способны определять абстракт- |
|
|
|
ориентированные |
ные типы данных и реализовы- |
|
|
языки |
вать основные парадигмы объ- |
|
|
|
ектно-ориентированного |
|
|
|
программирования. C++, Java, |
|
|
|
ObjectPascal |
20
