Файл: Алгоритмизация как обязательный этап разработки программы..pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 27.04.2023

Просмотров: 268

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

начало

Рис. 1. Терминатор начала и конца работы функции

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

Ввод (str)

Рис. 2. Операции ввода и вывода данных

В ГОСТ определено множество символов ввода/вывода, например вывод на магнитные ленты, дисплеи и т.п. Если источник данных не принципиален, обычно используется символ параллелограмма. Подробности ввода/вывода могут быть указаны в комментариях.

str : = “helloo world”

Рис. 3. Выполнение операций над данными

В блоке операций обычно размещают одно или несколько (ГОСТ не запрещает) операций присваивания, не требующих вызова внешних функций.

a < b * c

Рис. 4. Блок, иллюстрирующий ветвление алгоритма

Блок в виде ромба имеет один вход и несколько подписанных выходов. В случае, если блок имеет 2 выхода (соответствует оператору ветвления), на них подписывается результат сравнения — «да/нет». Если из блока выходит большее число линий (оператор выбора), внутри него записывается имя переменной, а на выходящих дугах — значения этой переменной.

buff : = foo(1, tmp)

Рис. 5. Вызов внешней процедуры

Вызов внешних процедур и функций помещается в прямоугольник с дополнительными вертикальными линиями.

LoopName

a < b

LoopName

a < b

Рис. 6. Начало и конец цикла

Символы начала и конца цикла содержат имя и условие. Условие может отсутствовать в одном из символов пары. Расположение условия, определяет тип оператора, соответствующего символам на языке высокого уровня — оператор с предусловием (while) или постусловием (do … while).

i : = 1 .. 100

Рис. 7. Подготовка данных

Символ «подготовка данных» в произвольной форме (в ГОСТ нет ни пояснений, ни примеров), задает входные значения. Используется обычно для задания циклов со счетчиком.

A

Рис. 8. Соединитель

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

foo ( i, str )

выделяет i-тый символ

строки str

Рис. 9. Комментарий

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


2.Основные структурные алгоритмические конструкции

2.1.Линейный алгоритм.

Следование  – алгоритмическая конструкция, отображающая естественный, последовательный порядок действий. Алгоритмы, в которых используется только структура «следование», называются линейными алгоритмами. В алгоритмическом языке линейным является алгоритм, состоящий из команд, выполняющихся одна за другой. Они в записи алгоритма располагаются в том порядке, в каком должны быть выполнены предписываемые ими действия. Такой порядок выполнения называется естественным. Последовательность команд образует составную команду «цепочка», которая в записи блок-схемой имеет следующий вид:

действие

действие

Рис. 10. Изображение блок-схемы линейного алгоритма

Многие из предписаний такого алгоритма могут потребовать детализации – представления в виде некоторой совокупности более мелких предписаний.

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

2.2.Ветвящийся алгоритм.

Ветвление  – алгоритмическая конструкция, в которой в зависимости от результата проверки условия («да» или «нет») предусмотрен выбор одной из двух последовательностей действий (ветвей). Алгоритмы, в основе которых лежит структура «ветвление», называют разветвляющимися.

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


Базовая структура "ветвление" определяет выполнение действий в зависимости от выполнения условия. Каждый из путей ведет к общему выходу, так что работа алгоритма будет продолжаться независимо от того, какой путь будет выбран.

Алгоритмический язык

Блок-схема

Язык программирования QBasic

Неполное условие

ЕСЛИ «условие»

ТО «действия»

действия

да

условие

нет

INPUT “1 или 2?”

IF=1 OR I=2 THEN

PRINT “Ок”

ELSE

PRINT “Вне диапазона”

END IF

Полное условие

ЕСЛИ «условие»

ТО «действия 1»

ИНАЧЕ «действия 2»

действия

да

условие

нет

действия

INPUT “1 или 2?”

IF=1 OR I=2 THEN

PRINT “Ок”

ELSE

PRINT “Вне диапазона”

END IF

Таб. 1. Ветвящиеся виды алгоритмов

2.3.Циклический алгоритм.

Повторяющееся выполнение действий (групп действий),зависящее от выполнения условия, называется циклом.

Любой цикл состоит из трех частей: начала, проверки и тела цикла. Начало – всегда первая часть цикла. Главная его функция – подготовить цикл. Проверка определяет момент выхода из цикла.

Базовая структура "цикл". Обеспечивает многократное выполнение некоторой совокупности действий, которая называется телом цикла. Основные разновидности циклов представлены в таблице:

Алгоритмический язык

Блок-схема

Язык программирования QBasic

Цикл типа «ПОКА»

ДЕЛАТЬ «тело цикла» (последовательность действий)

ПОКА «условие»

КОНЕЦ ЦИКЛА

тело цикла

да

условие

нет

I=0

PRINT “Значение I в начале равно”; I

DO WHILE I<10

I=I+1

LOOP

PRINT “Значение I в конце цикла равно”; I

Цикл типа «ДО»

ДЛЯ I=I1 ДО I2

ШАГ S

«тело цикла» (последовательность действий)

СЛЕДУЮЩАЯ I

тело цикла

I = I1, I2

FOR I=1 TO 15

PRINT I

NEXT I

FOR I=7 TO –6 STEP –3

PRINT I

NEXT I

Таб. 2. Циклические виды алгоритмов


3.Понятие программирования и компьютерной программы

Сегодня с понятием  – «Программирование» можно столкнуться, как в рекламе социальной сети, так и в литературном или даже в кинематографическом произведении. Однако что же такое, программирование попытаемся выяснить далее.

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

Рассмотрим важные для программирования понятия: алфавит, синтаксис и семантика.

Алфавит  – допустимый для данного языка программирования набор символов (букв, цифр, специальных знаков), которые могут быть использованы при составлении программ.

Синтаксис  – правила построения из символов алфавита языковых конструкций (переменных, констант, функций, процедур, операторов...).

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

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

Необходимо так же рассмотреть понятия касающиеся самих данных, которые будут обрабатываться алгоритмом.

Переменная – это ячейка памяти для временного хранения данных. Предполагается, что в процессе выполнения программы значения переменных могут изменяться. Любая программа обрабатывает данные (информацию, объекты). Данные, с которыми она работает, хранятся в памяти компьютера (чаще оперативной). Переменные описывают в начале программы, указывая имена, типы, размер. А вот значение (содержание) переменной в начале может и не указываться, а быть присвоенным в процессе выполнения программы. Это работает так: в ячейки памяти описанных переменных будут помещаться конкретные значения, извлекаться оттуда, изменяться, снова записываться. Обращение к ним осуществляется посредством имен переменных, описанных в начале программы. Имена переменных могут быть почти любым сочетанием английских букв и цифр (без пробелов). Нельзя чтобы имена переменных совпадали со словами, которые являются какими-либо командами самого языка программирования. Нельзя начинать имена переменных с цифры или специального символа. Для того чтобы имена переменных были удобны для восприятия, надо стараться придерживаться пары правил. Если программа не простейший пример, то имена переменных должны быть осмысленными словами или их сокращениями. При описании переменных указывается не только их имя, но и тип. Тип переменных сообщает о том, сколько отвести под них памяти и определяет, какие данные будут храниться (число, текст…) в участке памяти, с которым связана описываемая переменная.


Константа – это величина, которая при выполнении программы остаётся неизменной, на случай, если в программе требуется постоянно использовать какое-нибудь одно и тоже значение. Конечно можно описать переменную, затем присвоить ей значение и не изменять его в программе. Однако это не всегда удобно (можно нечаянно изменить), поэтому в языках программирования для хранения данных помимо переменных существуют константы. Главной особенностью констант является то, что их описывают в начале программы сразу присваивая им необходимые значения. При выполнении программы константы остаются неизменными. Значениями констант могут быть данные большинства типов.

Рассмотрим типы данных и их классификацию.

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

Классификация типов данных

Изначально, типы данных делятся на простые и составные. Простой - это тип данных, объекты которого не имеют доступной программисту внутренней структуры. Для объектов составного типа данных, в противовес простому, программист может работать с элементами внутренней его структуры.

Числовой тип данных разработан для хранения естественно чисел. Символьный - для хранения одного символа. Логический тип имеет два значения: истина и ложь. Перечислимый тип может хранить только те значения, которые прямо указаны в его описании. Для простых типов данных определяются границы диапазона и количество байт, занимаемых ими в памяти компьютера. В большинстве языков программирования, простые типы жестко связаны с их представлением в памяти компьютера. Компьютер хранит данные в виде последовательности битов, каждый из которых может иметь значение 0 и 1.

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

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