ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 10.01.2024
Просмотров: 39
Скачиваний: 2
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Основы алгоритмизации
Понятие алгоритма и его свойства. Способы записи алгоритмов.
Алгоритм — это точно определенное (формальное) описание способа решения задачи в виде конечной последовательности действий.
Исполнитель алгоритма – это тот объект, для управления которым составлен алгоритм.
В качестве исполнителей алгоритма могут выступать человек и различные устройства: механические, электрические, электронно-вычислительные машины (ЭВМ) и т.д.
Свойства алгоритма:
-
дискретность— представление алгоритма в виде последовательности шагов; -
массовость — применимость алгоритма к некоторому множеству исходных данных; -
результативность – получение результата за конечное число шагов -
однозначность — при повторном применении алгоритма к тем же исходным данным должен быть получен тот же результат.
Способы записи алгоритмов:
-
на естественном языке (словесная форма), -
графически в виде блок-схем -
на псевдокоде, -
на языках программирования.
Достоинством записи алгоритма на естественном языке является доступность для понимания его любым человеком.
Недостатки записи алгоритмов на естественном языке состоят в громоздкости записи, ненаглядности, неточности и многозначности.
Преимущество блок-схем – в наглядности алгоритма.
Для изображения алгоритмов будем использовать блок-схемы, формируемые из типовых блоков, показанных на рис. 1.
Одним из распространенных способов представления алгоритма является псевдокод.
Псевдокод – язык описания алгоритмов близкий к естественному языку или языкам программирования (использует ключевые слова языков программирования, но опускает подробности и специфический синтаксис).
Общая форма Записи алгоритма на псевдокоде
Алгоритм < название > Начало < последовательность действий > Конец |
В качестве базовых операций используются:
-
операция присваивания вида < переменная > := < выражение > -
операция ввода/вывода
ввод ( список ввода)
вывод ( список вывода).
Смысл операции присваивания состоит в вычислении результата выражения, стоящего справа от знака “ := “, для конкретных значений входящих в него переменных и присваивании этого результата переменной, стоящей слева от знака “ := “, например:
D := 5
D := D+1
Min := C
При выполнении операции ввода ввод ( A, B, C) переменным из списка ввода A, B и C присваиваются конкретные значения, вводимые с клавиатуры, например:
-5 7 20 {Enter}
В результате в памяти получим:
A = -5, B = 7, C = 20.
Операция вывода осуществляет вывод значений переменных и выражений из списка вывода на экран, например:
вывод (A, B, C, 10)
На экране получим:
- 5 7 20 10
Примером псевдокода является алгоритмический язык в русской нотации.
Общая форма Записи алгоритма на алгоритмическом языке:
алг название алгоритма (аргументы и результаты)
дано условия применимости алгоритма
надо цель выполнения алгоритма
нач описание промежуточных величин
| последовательность команд (тело алгоритма)
кон
В записи алгоритма ключевые слова обычно подчёркиваются либо выделяются полужирным шрифтом. Для выделения логических блоков применяются отступы, а парные слова начала и конца блока соединяются вертикальной чертой.
Пример
Пусть заданы длины сторон треугольника. Необходимо вычислить площадь треугольника, используя формулу Герона. Разработку алгоритма полезно начинать с постановки задачи:
Исходные данные: | A, B, C - длины сторон треугольника |
Результат: | S - площадь треугольника. |
Метод решения: | |
Запишем алгоритм на псевдокоде, используя дополнительно одну служебную переменную P, уменьшающую время вычислений.
Алгоритм Линейная структура (площадь треугольника)
Начало
ввод (A, B,
C)
вывод S
Конец
Для записи алгоритмов могут использоваться специальные искусственные языки – языки программирования.,
Языком программирования называется формальная знаковая система, предназначенная для записи компьютерных программ.
Программа - это предписание ЭВМ на языке программирования, позволяющее решать требуемую задачу.
Классификация алгоритмов
В зависимости от применяемых базовых структур различают линейные, ветвящиеся и циклические алгоритмы.
| Словесное описание | Алгоритмический язык | Блок-схема |
Линейный | алгоритм, в котором все действия выполняются однократно в строго определенной последовательности (базовая структура следование) | действие 1 действие 2 . . . . . . . . . действие n | |
Ветвящийся | алгоритм, в котором в зависимости от выполнения или невыполнения некоторых условий, выбирается один из нескольких возможных путей вычислительного процесса (базовая структура ветвление). При ветвлении происходит однократный проход по одной из ветвей решения задачи. Признаком ветвящегося алгоритма является наличие операций условного перехода, когда происходит проверка истинности некоторого логического выражения, и, в зависимости от истинности или ложности проверяемого условия, для выполнения выбирается та или иная ветвь алгоритма. Логическое выражение - это выражение, записанное с помощью операций сравнения: <, >, <=, >=, =, <>. При составлении условий можно использовать совокупность связанных между собой условий - составные условия. Для этого используются логические союзы "И" или "ИЛИ", частица "НЕ". . | | |
Структура ветвление существует в 4 вариантах | 1) если-то | если условие то действия все | |
| 2) если-то-иначе | если условие то действия 1 иначе действия 2 все | |
| 3). выбор | выбор при условие 1: действия 1 при условие 2: действия 2 . . . . . . . . . . . . при условие N: действия N все | |
| 4). выбор-иначе | выбор при условие 1: действия 1 при условие 2: действия 2 . . . . . . . . . . . . при условие N: действия N иначе действия N+1 все | |
Циклический | алгоритм, который при каждом исполнении предписывает многократное выполнение одной и той же последовательности действий – тела цикла(базовая структура цикл). | | |
| цикл пока с предусловием – Серия шагов повторяется до тех пор, пока условие цикла истинно. | нц пока условие тело цикла (последовательность действий) кц | |
| цикл "до" с постусловием – серия шагов выполняется до тех пор, пока условие цикла ложно | нц тело цикла до условие кц | |
| Цикл «для» (цикл с параметром) – предписывает выполнять тело цикла для всех значений некоторой переменной (параметра цикла) в заданном диапазоне. Цикл "для" используется для ситуаций, когда заранее известно количество повторений некоторых действий. | нц для i от N1 до N2 тело цикла кц | |
В языках программирования имеются команды, реализующие показанные выше структуры.
Существенная особенность перечисленных базовых структур состоит в том, что каждая из них имеет один вход и один выход. Их можно соединять друг с другом в любой последовательности. В качестве действия может использоваться любая из перечисленных структур, что обеспечивает возможность вложенности одних структур в другие. Возврат назад выполняется только в циклах.
По способу исполнения выделяют также
Вспомогательные алгоритмы - алгоритмы, целиком используемые в составе других алгоритмов. Вспомогательный алгоритм представляет алгоритм решения некоторой подзадачи из исходной (основной) задачи.
Вспомогательный алгоритм, записанный на языке программирования, называется процедурой или подпрограммой.
Алгоритм может содержать обращение к самому себе как вспомогательному и в этом случае он называется рекурсивным.
Рекурсивные алгоритмы – алгоритмы, вызывающие сами себя до тех пор, пока не будет достигнуто некоторое условие возвращения.
В последнее время активно разрабатываются параллельные алгоритмы, предназначенные для вычислительных машин, способных выполнять несколько операций одновременно.
Создание и выполнение программ
Трансляция программ и сопутствующие процессы. Компиляторы и интерпретаторы.
Программа — это детальное и законченное описание алгоритма средствами языка программирования.
Процесс выполнения программы называется вычислительным процессом.
Исполнителем программы является компьютер. Для выполнения компьютером программа должна быть представлена в машинном коде — последовательности чисел, понимаемых процессором. Специальная служебная программа, преобразующая текст программы, записанный с помощью языка программирования, в машинный код, называется транслятором.
Этапы трансляции:
-
Синтаксический анализ – проверка на соответствие формальным правилам, содержащимся в языке программирования -
Семантический анализ – (семантика – смысловая сторона языка) – поиск ошибок определенного рода, например, не описаны переменные и т.д.
Трансляторы делятся на два типа: интерпретаторы и компиляторы.
Интерпретатор переводит в машинный код и выполняет очередной оператор (команду) программы. Если команда повторяется
, то интерпретатор рассматривает ее как встреченную впервые. Примерами служебных программ-интерпретаторов являются GW Basic, Лого, школьный алгоритмический язык, многие языки программирования баз данных. Достоинство интерпретаторов — их компактность, возможность остановить в любой момент выполнение программы, выполнить различные преобразования данных и продолжить работу программы.
Компилятор переводит в машинный код исходный текст программы целиком. Поэтому достоинство компиляторов — быстродействие и автономность получаемых программ. Компиляторами являются Turbo Pascal, С++, Delphi.
Таким образом, интерпретация в разработке программ – процесс непосредственного покомандного выполнения программы без предварительной компиляции, «на лету». Интерпретация связана с получением переменными значений в процессе работы программы. Режим интерпретации можно использовать для отладки программ на языке высокого уровня.
Компиляция в программировании – преобразование программы, представленной на одном из языков программирования, в коды на машинно-ориентированном языке, которые принимаются и исполняются непосредственно процессором. Результатом компиляции является объектный файл с необходимыми внешними ссылками на компоновщика. Программа уже переведена в машинные инструкции, однако ещё не полностью готова к выполнению. В объектном файле имеются ссылки на различные системные функции.
Компоновщик - модуль системы программирования или самостоятельная программа, которая собирает результирующую программу из объектных модулей и стандартных библиотечных модулей. Этот процесс называется компоновкой, а его результат – исполняемый файл.
Исполняемый файл – файл, который может быть обработан или выполнен компьютером без предварительной трансляции.
Средства создания программ
В самом общем случае для создания программы на выбранном языке программирования нужно иметь следующие компоненты.
1. Текстовый редактор - для набора исходного текста программы
2. Компилятор (COMPILER) - для перевода текста программы в машинный код. Если обнаружены синтаксические ошибки, то результирующий код создан не будет. Компилятор обычно выдает промежуточный объектный код. Объектный код обрабатывается специальной программой - редактором связей или сборщиком.
3. Редактор связей (LINKER) - для сборки нескольких откомпилированных модулей в одну программу (исполнимый код).