для телефона
.pdfнауках, применяется Аксиоматическое построение: выбирается система аксиом, и любые объекты, которые будут удовлетворять этой системе и будут алгоритмами.
Такой системой аксиом являются основные свойства алгоритмов.
Основные свойства алгоритмов
*ДВА СПОСОБА ИСПОЛЬЗОВАНИЯ АЛГОРИТМА - алгоритм можно
1)записать по определенным правилам
2)исполнить
Вязыке BASIC имеются две отдельные команды: LIST – показать текст записи программы,
RUN – исполнить программу
Вдругих языках для работы с записями алгоритмов используются специальные программы – редакторы, для исполнения – отдельные программы – трансляторы.
* НАЛИЧИЕ ИСПОЛНИТЕЛЯ - алгоритм может быть выполнен (это система команд для кого-то или чегото)
Исполнитель может ничего не знать о цели алгоритма. Исполнитель должен понимать отдельные команды.
Имеет место формальность исполнения алгоритма, то есть за результат отвечает составитель, а не исполнитель алгоритма.
* РЕЗУЛЬТАТИВНОСТЬ - результат при выполнении алгоритма достигается, и за конечное число шагов.
* ОДНОЗНАЧНОСТЬ - применение алгоритма к одним и тем же данным дает один и тот же результат.
* ДЕТЕРМИНИРОВАННОСТЬ - строгая определенность, однозначность, непротиворечивость правил
- не допускается произвола при выборе очередного шага алгоритма, фиксируется начальный и заключительный шаги алгоритма.
* МАССОВОСТЬ - алгоритм дает решение не одной, а целого набора задач.
* ДВА СПОСОБА ИСПОЛЬЗОВАНИЯ АЛГОРИТМА * НАЛИЧИЕ ИСПОЛНИТЕЛЯ
*РЕЗУЛЬТАТИВНОСТЬ
*ОДНОЗНАЧНОСТЬ
*ДЕТЕРМИНИРОВАННОСТЬ
*МАССОВОСТЬ
Основы программирования
* Программное управление Программа состоит из набора команд, которые выполняются процессором
автоматически, последовательно, одна за другой (без вмешательства человека).
* Однородность памяти И данные, и команды представляются одинаково. Компьютер не различает,
что находится в ячейке памяти: команда, число или текст. * Адресность Основная память состоит из пронумерованных ячеек * Двоичность
Информация кодируется двоичным числом.
.Оформление программ С развитием компьютерной информатики все более четко выделяются
ДАННЫЕ - все объекты, с которыми может работать ЭВМ и КОМАНДЫ - средства, которые при этом используются.
Данные, это материалы, определяют, с чем работает компьютер, Команды, это инструменты (операторы, процедуры, функции), определяют, как поступать с данными, а иногда и с самими командами.
При работе ЭВМ данные могут менять свои значения. Для обеспечения такой возможности служат ПЕРЕМЕННЫЕ. Переменная - это выделенная для хранения определенной информации область памяти, соответственно имеет адрес начала в памяти и размер. Для удобства использования и отличий между собой переменные снабжаются ИДЕНТИФИКАТОРОМ, проще говоря каждая переменная получает ИМЯ. Информацию, хранящуюся в переменной в момент обращения к этой переменной называют ЗНАЧЕНИЕМ переменной. Занесение значения в память называется операцией присваивания
3 Способы записи Алгоритм – точная конечная последовательность команд, приводящая от
исходных данных к искомому результату за конечное число шагов
Способы (формы) записи алгоритмов
Словесно-пошаговый, алгоритмический язык , блок-схема, структурограмма.
Словесно-пошаговый способ записи алгоритмов Описывает алгоритм на естественном языке, задавая шаги в виде последовательных пунктов. Не смотря на простоту этого способа, он имеет множество недостатков:
отсутствие строгой формализации, толкование шагов не всегда однозначно, описание чрезмерно многословно. Классическим примером словеснопошагового алгоритма являются рецепты приготовления блюд.
Графический способ описания алгоритмов :Существует несколько способов графического описания алгоритмов. Наиболее широко используемым на практике графическим описанием алгоритмов является использование блоксхем. Достоинство блок схем – наглядность и простота записи алгоритма. Каждому действию алгоритма соответствует геометрическая фигура
В линейном |
алгоритме порядок |
алгоритме команды |
следования команд |
выполняются |
может быть |
последовательно,блок |
разный,блок-схема |
-схема будет иметь |
примет вид: |
вид: |
|
|
Т.к. в |
|
разветвляющемся |
него блок-схема В циклическом примет вид: алгоритме некоторые действия повторяются несколько раз и для
Структурограммы : дают полное визуальное представление деталей логических операций над группами операторов программы. Структурограмма (схема Насси–Шнейдермана) – это схема, иллюстрирующая структуру передачи управления внутри модуля с помощью вложенных друг в друга блоков. Каждый блок имеет форму прямоугольника и может быть вписан в любой внутренний прямоугольник любого другого блока. Запись внутри блока производится на естественном языке или с помощью математических обозначений.Символ «Обработка» содержит описание действий, выполняемых оператором или группой операторов. В подобном символе можно помещать операторы присваивания, ввода/вывода и т. д. Управление передается в прямоугольник сверху, а выходит из него снизу.Символ «Cледование» объединяет ряд следующих друг за другом процессов обработки. В отдельные прямоугольники записываются логически завершенные шаги программы. Управление начинает свой путь на внешней стороне верхнего прямоугольника, проходит через каждый прямоугольник и завершает путь на внешней стороне нижнего прямоугольника.
Символ «Решение» применяется для обозначения конструкций IF-THEN-ELSE. Условие (вопрос) располагается в верхнем треугольнике, варианты ответов – по его сторонам, а процессы обработки обозначаются прямоугольниками. В результате принятия решения управление передается в один из нижних прямоугольников:Для усеченной конструкции разветвления IF-THEN прямоугольник, соответствующий ветви невыполнения условия – НЕТ, следует оставить пустым. Символ CASE представляет расширение блока решение. Условие, называемое селектором выбора, записывается в верхнем треугольнике. Варианты выхода из треугольника, соответствующие точно определенным значениям селектора, размещаются в маленьких треугольниках по его левой стороне. Каждому варианту соответствует свой символ обработки. По правой стороне треугольника размещается выход по несовпадению условий и соответствующий ему альтернативный символ обработки.
Рис. П.2.4. Основные символы структурограмм
Символ «Цикл» служит для обозначения конструкций WHILE-DO и REPEAT-UNTIL. Изображенный внутренним прямоугольником процесс повторяется некоторое число раз либо пока выполняется некоторое условие (WHILE), либо до тex пор пока не выполнится некоторое условие (UNTIL). Затем управление выходит из нижней стороны внешнего прямоугольника. Условие окончания цикла размещается в верхней полосе внешнего прямоугольника для цикла WHILE-DO и в нижней полосе – для цикла REPEAT-UNTIL. Горизонтальная линия внутри символа показывает место проверки условия завершения цикла – в его начале для цикла WHILE-DO и в его конце для цикла REPEAT-UNTIL.
ПОНЯТИЕ АЛГОРИТМИЧЕСКОГО ЯЗЫКА Достаточно распространенным способом представления алгоритма является его
запись на алгоритмическом языке, представляющем в общем случае систему обозначений и правил для единообразной и точной записи алгоритмов и исполнения их. Под исполнителем в алгоритмическом языке может подразумеваться не только компьютер, но и устройство для работы «в обстановке». Программа, записанная на алгоритмическом языке, не обязательно предназначена компьютеру.
Как и каждый язык, алгоритмический язык имеет свой словарь. Основу этого словаря составляют слова, употребляемые для записи команд, входящих в систему команд исполнителя того или иного алгоритма. Такие команды
называют простыми командами. В алгоритмическом языке используют слова, смысл и способ употребления которых задан раз и навсегда. Эти слова называют служебными. Использование служебных слов делает запись алгоритма более наглядной, а форму представления различных алгоритмов - единообразной.
При построении новых алгоритмов могут использоваться алгоритмы, составленные ранее. Алгоритмы, целиком используемые в составе других алгоритмов, называют вспомогательными алгоритмами. Вспомогательным может оказаться любой алгоритм из числа ранее составленных. Не исключается также, что вспомогательным в определенной ситуации может оказаться алгоритм, сам содержащий ссылку на вспомогательные алгоритмы.
Очень часто при составлении алгоритмов возникает необходимость использования в качестве вспомогательного одного и того же алгоритма, который к тому же может быть весьма сложным и громоздким. Было бы нерационально, начиная работу, каждый раз заново составлять и запоминать такой алгоритм для его последующего использования. Поэтому в практике широко используют, так называемые, встроенные (или стандартные) вспомогательные алгоритмы, т.е. такие алгоритмы, которые постоянно имеются
враспоряжении исполнителя. Обращение к таким алгоритмам осуществляется так же, как и к «обычным» вспомогательным алгоритмам. У исполнителя-робота встроенным вспомогательным алгоритмом может быть перемещение в склад из любой точки рабочего поля; у исполнителя-язык программирования Бейсик это, например, встроенный алгоритм «SIN».
Алгоритм может содержать обращение к самому себе как вспомогательному и в этом случае его называют рекурсивным. Если команда обращения алгоритма к самому себе находится в самом алгоритме, то такую рекурсию называют прямой. Возможны случаи, когда рекурсивный вызов данного алгоритма происходит из вспомогательного алгоритма, к которому в данном алгоритме имеется обращение. Такая рекурсия называется косвенной Алгоритмы, при исполнении которых порядок следования команд определяется
взависимости от результатов проверки некоторых условий, называют разветвляющимися. Для их описания в алгоритмическом языке используют специальную составную команду - команда ветвления. Она соответствует блоксхеме «альтернатива» и также может иметь полную или сокращенную форму
Алгоритмы, при исполнении которых отдельные команды или серии команд выполняются неоднократно, называют циклическими. Для организации циклических алгоритмов в алгоритмическом языке используют специальную составную команду цикла.
4)Основные алгоритмические структуры
Изучение алгоритмических конструкций начнем с линейного алгоритма. В учебниках иногда используется термин «следование».
Алгоритм назовем линейным, если:1) выполняется каждый его шаг, и 2) только один раз.
Такого определения вполне достаточно. В некоторых учебниках используются слова «шаги выполняются последовательно, друг за другом», но эти слова означают наличие некоторого порядка. А порядков имеется два!
Одним из свойств алгоритма является, что его можно использовать двояко: либо исполнить, либо записать по определенным правилам. Таким образом первый порядок – порядок исполнения команд, второй – порядок написания. Эти порядки могут не совпадать.
На рисунке слева – случай, когда порядок написания и порядок исполнения совпадают, справа – эти порядки различны. Может показаться, что на рисунке справа алгоритм не линеен, так как команды выполняются не «друг за другом», а сначала вторая, потом первая. Но если определить линейный алгоритм как указано выше - Алгоритм линейный, если выполняется каждый его шаг, и только один раз – то эта проблема снимается.
Линеен алгоритм обмена, алгоритмы деления угла или отрезка пополам и многие другие.
Ветвление неполное
Вернемся к нашему определению линейного алгоритма и попытаемся определить остальные алгоритмические структуры.
Для начала, откажемся от требования 1), обязательности выполнения каждого шага алгоритма.
Имеем алгоритм, в котором некоторые шаги могут не выполняться. Получившаяся структура алгоритма называется. НЕПОЛНОЕ ВЕТВЛЕНИЕ Согласно принципу детерминированности алгоритмов, исполнитель должен знать, выполнять отмеченный шаг или нет. Приходится ввести понятие «условие», то есть предложение, значение которого либо «истина», либо «ложь».
Если условие истинно – шаг алгоритма выполняется, иначе – нет. Всевозможные условия являются объектом работы, то есть ДАННЫМИ, которые могут иметь либо значение истина, либо значение ложь. Образуются эти значения при сравнении двух переменных или выражений одного типа. A=B;A<>B;X<>5;A>5;B<3;C<=A+B
Значения этих выражений «истинно» (true) или «ложно» (false) зависит от значений используемых переменных.
На языке блок-схем блок ветвления обозначается ромбом, имеет один вход и два выхода. Однако любой алгоритм должен обладать свойством результативности, то есть у него должен быть конец и только один. Обе ветви, для достижения конца соединяются, место соединения называется УЗЕЛ и на блок-схеме отмечается кружком.
Наличие двух выходов так же представляет собой проблему. Выходы должны быть разными. Поэтому они маркируются словами «да» и «нет» или знаками «+» и «-». Согласно первому выходу алгоритм продолжаем при истинности условия, которое вписывается в ромб, иначе – продолжаем согласно второму выходу. Лентяи просто ставят около выхода «да» точку. Этого достаточно для однозначного определения дальнейших шагов алгоритма.
Цикл Ветвление - один из случаев нарушения линейности алгоритма.
Как уже отмечалось, на блок-схеме ветвление обозначается ромбом, внутри которого указывается условие. Блок ветвления имеет один вход и два выхода. Обе ветви, для достижения конца соединяются в узле.
Однако ветви могут соединиться и перед блоком условия!
Возможна ситуация, когда команды блока выполняются несколько раз подряд. Алгоритм тоже нелинейный.
Такая организация алгоритма называется ЦИКЛ.
Шаги, которые могут выполняться несколько раз подряд образуют ТЕЛО цикла. Выполнять или нет тело еще раз решает УСЛОВИЕ цикла.
Итак, любой цикл имеет ТЕЛО и УСЛОВИЕ ВЫХОДА.
Снова вспоминаем свойство алгоритма, что его можно исполнить и его можно записать.
Две составных части цикла – тело и условие – можно записать по разному: либо сначала условие, потом тело, либо сначала тело, потом условие.
В первом случае цикл называется циклом типа «пока», во втором – циклом типа «до».
Так выглядит оформление цикла с предусловием (цикла «пока») в разных языках программирования.
basic |
|
pascal |
|
C |
10 if < усл.> then 40 |
|
while <усл.> |
|
while <усл.> |
20 <тело цикла "ПОКА"> |
|
do |
|
{ <тело |
30 goto 10 |
|
begin |
|
цикла |
40 |
|
<тело |
|
"ПОКА"> } |
|
|
цикла |
|
|
while <усл.> |
|
"ПОКА"> |
|
|
<тело цикла "ПОКА"> |
|
end; |
|
|