Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Основные структуры алгоритмов: сравнительный анализ и примеры их использования (Определение алгоритма)

Содержание:

Введение

Человек в повседневной жизни испытывает необходимость следовать некоторым правилам и указания. К примеру, переходя через дорогу следует нужно выполнить некоторую последовательность действий , убедиться в безопасности выполняемого маневра ,удостовериться что сейчас можно спокойно перейти на другую сторону проезжей части или ее середины. На середине дороги нужно снова посмотреть по сторонам , если машин нет закончить переход. Если же едут машины , то следует дождаться пока они не проедут и только потом идти ( в случает с нерегулируемым пешеходным переходом).Хотя в такой ситуации и автомобиль должен уступить дорогу вступившему на переход пешеходу. Ведь и для водителей есть определенные правила поведения на дороге.

В математике ,для решения задач, используют определенные

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

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

значит - о компьютеризации различных видов деятельности.

Процессор электронно-вычислительной машины, это сложнейшее техническое устройство, умеет выполнять лишь простейшие команды.

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

1. Алгоритм: определение, свойства, правила построения

1.1 Определение алгоритма

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

Слово «Алгоритм» происходит от algorithmi – латинского написания имени аль-Хорезми, под которым в средневековой Европе знали величайшего математика из Хорезма (город в современном Узбекистане) Мухаммеда бен Мусу, жившего в 783-850 гг. В своей книге «Об индийском счете» он сформулировал правила записи натуральных чисел с помощью арабских цифр и правила действий над ними столбиком.

Алгоритм может быть предназначен для выполнения его человеком или машиной. Создание алгоритма, пусть даже самого простого, - процесс творческий. Долгое время считалось, что он доступен только человеку.

Другое дело – реализация уже имеющегося алгоритма. Ее можно поручить

«устройству», которое не обязано вникать в суть дела. Такое «устройство» принято считать формальным исполнителем.

Примером формального исполнителя может служить стиральная машина-автомат, неукоснительно исполняющая заданные ей команды, даже

если вы забыли положить в нее стиральный порошок. Человек тоже может выступать в роли формального исполнителя (например, военнослужащий,

охраняющий склад боеприпасов и действующий согласно алгоритмам,

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

Каждый алгоритм создается для вполне конкретного исполнителя. Те действия, которые может совершать исполнитель, называются его допустимыми действиями. Совокупность допустимых действий образует систему команд исполнителя. Алгоритм должен содержать только те действия, которые допустимы для данного исполнителя.

1.2 Свойства алгоритма

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

Такими свойствами являются:

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

Наличие входных данных. Алгоритм имеет некоторое число входных величин, заданных ему до начала работы. Иногда это число может равняться

нулю, однако это означает, что входные величины должны быть описаны как

часть алгоритма. Даже если входные величины отсутствуют, то какие-то

величины будут описаны в самом алгоритме. В противном случае алгоритм не может быть выполнен.

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

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

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

Результативность (конечность) - алгоритм должен приводить к решению

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

Эффективность алгоритма. Алгоритм, который выполняет действие за меньшее число шагов, признается более эффективным. Это связано с тем, что любая программа, в основе которой лежит алгоритм, должна выполняться вычислительном устройстве. Поэтому большое значение имеет время выполнения программы, на которое влияет количество шагов алгоритма. Кроме того, программа занимает определенный объем в памяти компьютера.

Поэтому количество шагов влияет на еще один показатель эффективности - размер программы.

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

1.3 Правила построения

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

Первое правило – при построении алгоритма необходимо задать множество объектов с которыми будет работать алгоритм. Формальное (закодированное) представление этих объектов называется данными. Алгоритм приступает к работе с некоторым набором данных, которые называются входными, и в результате выдает данные, которые называются выходными. То есть, алгоритм преобразует входные данные в выходные.

Пока мы не имеем формализованных входных данных, мы не можем построить алгоритм.

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

Третье правило – дискретность. Алгоритм строится из отдельных шагов (действий, операций, команд). И Это множество шагов, из которых составлен алгоритм, должно быть конечно.

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

Пятое правило – сходимость (результативность). Алгоритм должен завершать работу после конечного числа шагов. При этом обязательно необходимо указать, что считать результатом работы алгоритма.

В итоге получается что алгоритм –это неопределяемое понятие теории алгоритмов. Алгоритм каждому набору входных данных ставит в

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

2. Виды алгоритмов

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

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

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

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

Гибкие алгоритмы, например стохастические (вероятностные) и эвристические. Вероятностный алгоритм дает программу решения задачи

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

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

способы принятия решений, основанные на аналогиях, ассоциациях и опыте решения похожих задач.

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

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

Циклический алгоритм – алгоритм, предусматривающий многократное повторение одного и того же действия над новыми исходными данными. К циклическим алгоритмам сводится большинство методов вычислений, перебора вариантов. Для примера можно составить алгоритм решения задачи с использованием цикла «ДО», для вычисления N первых членов геометрической прогрессии, используя формулу bn+1 = bn *q для любых b и q, где n текущий член прогрессии.

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

3. Способы представления алгоритма

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

3.1 Словесное описание алгоритма

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

Определим форматы переменных A, B, Ф, где A и B — значения для сравнения, Ф — переменная для хранения максимального значения;

получим два значения чисел A и B для сравнения;

сравним A и B.

если A меньше B, значит большее число B.

Поместим в переменную Ф значение B.

Если A не меньше (больше) B, значит большее число A.

Поместим в переменную Ф значение A.

Словесный способ не имеет широкого распространения по следующим причинам:

такие описания строго не формализуемы;

страдают многословностью записей;

допускают неоднозначность толкования отдельных предписаний.

3.2 Графический способ записи алгоритмов

Графический способ представления алгоритмов является более компактным и наглядным по сравнению со словесным.

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

Данное графическое изображение называется схемой алгоритма или блок-схемой.

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

Можно встретить даже такое утверждение: “Внешне алгоритм представляет собой схему – набор прямоугольников, других символов, внутри которых записывается, что вычисляется, что вводится в машину и что выдается на печать и другие средства отображения информации“. Здесь форма представления алгоритма смешивается с самим алгоритмом.

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

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

Схема - это графическое представление алгоритма, дополненное разъясняющими комментариями. Каждый пункт алгоритма отображается на схеме геометрической фигурой - блоком, различным типам выполняемых действий соответствуют различные геометрические фигуры.

Графические элементы в схеме соединяются линиями, их можно назвать линиями «потока информации». Основное направление идет сверху вниз и слева на право. В других случаях применение стрелок обязательно. По отношению к блоку линии потока могут быть входящими или выходящими. Количество входящих линий для блока ограничений не имеет. Выходящая же линия, напротив, может быть только одна.

Исключение оставляют логические блоки, имеющие не менее двух

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

Например, для условия, на основе которого строится ветвление, изображается ромбом. Оператор, в котором происходит обработка информации, изображается прямоугольником.

У любой программы есть начало и конец. На блок-схемах начало и конец программ обозначаются прямоугольниками со скруглёнными углами. Внутри прямоугольников пишут: "Начало", "Конец".

 В одной схеме следует использовать блоки одинаковых размеров. Необходимо также нумеровать все блоки. Виды и назначение основных блоков приведены в Таблице 1.

 Линии, соединяющие блоки и указывающие последовательность  связей между ними, должны проводится параллельно линиям рамки. Стрелка в конце линии может не ставиться, если линия направлена слева направо или сверху вниз. В блок может входить несколько линий, то есть блок может являться преемником любого числа блоков. Из блока (кроме логического) может выходить только одна линия. Логический блок может иметь в качестве продолжения несколько вариантов и из него выходят две линии(п2 таблица1).

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

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

Если при обрыве линии  схема находится на этом же листе, то на одном и другом конце линии изображается специальный символ соединитель — окружность диаметром 0,5 мм (п7 таблица1). Внутри парных окружностей указывается один и тот же номер идентификатор. В качестве идентификатора, используется порядковый номер блока, к которому направлен соединитель.

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

 Блок-схема должна содержать все разветвления,

циклы и обращения к подпрограммам, содержащиеся в программе.

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

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

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

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

Блок модификация используется для организации циклических

элементов. Внутри блока записывается параметр цикла, для которого

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

3.3 Псевдокод

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

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

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

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

Таблица 2

алг(алгоритм)

сим (символьный)

дано

да

нет

арг(аргумент)

лит (литерный)

надо

для

при

рез(результат)

лог(логический)

если

от

до

нач(начало)

таб (таблица)

то

знач

выбор

кон(конец)

нц(начало цикла)

иначе

и

или

цел (целый)

кц (конец цикла)

всё

ввод

вывод

вещ (вещественный)

длин(длина)

пока

утв

не

Вид алгоритма записанный в псевдокоде:

алг название алгоритма (аргументы и результаты)

дано  применимость алгоритма

надо цель ,которую достигнуть выполняя алгоритм

нач описание промежуточных величин

тело алгоритма (последовательность программ)

кон.

Часть алгоритма от слова алг до слова нач называется заголовком, а часть заключённая между словами нач и кон — телом алгоритма. В предложении  алг после названия алгоритма в круглых скобках указываются  характеристики  (арг, рез) и тип значения (цел, вещ, сим, лит или лог)  всех  входных (аргументы) и выходных (результаты) переменных. При описании массивов (таблиц) используется служебное слово таб, дополненное граничными парами по каждому индексу элементов массива.

Для ветвления применяют команды если и выбор, для организации циклов - команды для и пока.

алг Сумма квадратов (арг цел n, рез цел S)

дано | n > 0

надо | S = 1*1 + 2*2 + 3*3 + ... + n*n

нач цел i  

ввод n; S:=0  

нц для i от 1 до n    

S:=S+i*i  

кц  

вывод "S = ", S

кон

алг Объем и площадь цилиндра (арг вещ R, H, рез вещ V, S)

алг Корни КвУр(арг вещ а, b, c, рез вещ x1, x2, рез лит t)

алг Исключить элемент(арг цел N, арг рез вещ таб А[1:N])

алг Диагональ(арг цел N, арг цел таб A[1:N,1:N], рез лит Otvet)

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

алг Замена (арг лит Str1, Str2, арг рез лит Text)

дано | длины подстрок Str1 и Str2 совпадают

надо | всюду в строке Text подстрока Str1 заменена на Str2

алг Сопротивление (арг вещ R1, R2, арг цел N, рез вещ R)

дано | N>5, R1>0, R2>0

надо | R – сопротивление схемы


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


3.4 Программный способ записи алгоритма

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

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

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

Языки программирования делятся на два вида — языки низкого и высокого уровня.

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

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

Ассемблер - язык низкого уровня, применяемый до сих пор.

Языки высокого уровня такие как C, C++,  Паскаль, Delphi, (high-level languages)– это языки программирования, позволяющие записывать программу в удобном для пользователя виде. Данные языки ориентированы не на систему команд процессора, а на систему операторов (команд), характерных для записи определенного класса алгоритмов.

Высокоуровневые языки стремятся облегчить решение сложных программных задач. Использование разнообразных трансляторов и интерпретаторов обеспечивает связь программ, написанных при помощи языков высокого уровня, с различными операционными системами и оборудованием.

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

Заключение

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

Алгоритмизация позволяет эффективно преобразовать исходный объем информации в четкий, упорядоченный и структурированный вид. При этом выделяют все объекты, которые участвуют в операциях, идентифицируют их, определяют исполнителей и задают алгоритм последовательных действий. Важное условие – обязательная однозначность толкования любого этапа. После А всегда следует Б, а не «может, В, а может, Г, вы уж решите сами, как лучше». Это правило – основа алгоритмизации.

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

Список используемой литературы

1. Основы алгоритмизации и программирования: учеб. пособие / Т.А.

Жданова, Ю.С. Бузыкова. – Хабаровск : Изд-во Тихоокеан. гос.ун-та, 2011. –56 с.

2. Программирование и основы алгоритмизации: Для инженерных

специальностей технических университетов и вузов. /А.Г. Аузяк, Ю.А.

Богомолов, А.И. Маликов, Б.А. Старостин. Казань: Изд-во Казанского

национального исследовательского технического ун-та - КАИ, 2013, 153 с.

3. Основы алгоритмизации и программирования : учебное пособие / Г.

Р. Кадырова. – Ульяновск : УлГТУ, 2014. – 95 с.

4. Основы алгоритмизации и программирования. Курс лекций

5. Белов П.М. Основы алгоритмизации в информационных системах:

Учебн. Пособие.- Спб.: СЗТУ, 2003. – 85с.

6. Основы алгоритмизации и программирования: Метод. указ. / Сост.:

И.П. Рак, А.В. Терехов, А.В. Селезнев. Тамбов: Изд-во Тамб. гос. техн. ун-та.

7. Макаров В.Л. Программирование и основы алгоритмизации.: учебн.

пособие.-Спб., СЗТУ, 2003, - 110с.