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

ОСНОВНЫЕ СТРУКТУРЫ АЛГОРИТМОВ: СРАВНИТЕЛЬНЫЙ АНАЛИЗ И ПРИМЕРЫ ИХ ИСПОЛЬЗОВАНИЯ (В C++, PASCALABC, QBASIC)

Содержание:

ВВЕДЕНИЕ

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

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

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

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

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

В курсовой работе для изучения основных структур алгоритмов и их сравнительного анализа выбраны наиболее популярные универсальные языки программирования высокого уровня: C++ (среда разработки Visual Studio 2010), Pascal (среда разработки и версия PascalABC) и Basic (версия QBasic).

Объектом исследования курсовой работы являются языки программирования высокого уровня.

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

Цель курсовой работы – изучение и сравнительный анализ использования основных структур алгоритмов в языках программирования высокого уровня C++, PascalABC, QBasic.

Задачи курсовой работы:

  • изучить алгоритмы и основные структуры алгоритмов;
  • изучить способы реализации основных структур алгоритмов в языках программирования C++, PascalABC, QBasic и провести сравнительный анализ;
  • представить примеры их практического использования.

1 АЛГОРИТМЫ И ПРОГРАММЫ

1.1 История понятия «алгоритм»

В IX веке узбекским математиком Мухаммадом Ал-Хорезми были сформулированы пошаговые правила выполнения четырех арифметических действий над числами. В Европе эти правила стали называть алгоритмами от латинской формы написания имени автора – Alchorismi или Algorithmi. В арифметическом трактате ученого Ал-Хорезми описывалась индийская позиционная система счисления и искусство счета в этой системе. Пример - алгоритм сложения и умножения в столбик.

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

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

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

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

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

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

Понятие «алгоритм» не было определено и оставалось интуитивным даже в математике до 1930 года. Этому понятию придавалось в первую очередь методологическое значение, а не математическое. Можно привести много примеров алгоритмического подхода к решению тех или иных задач математики, получивших собственные наименования:

  • алгоритм Евклида;
  • алгоритм Гаусса;
  • алгоритм Штурма.

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

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

В конце первой трети двадцатого века годах в работах математиков Д. Гильберта, А. Черча, С. Клини, Э. Поста, А.Тьюринга понятие алгоритма было определено в двух формах:

  • на базе понятия рекурсивной функции;
  • на базе описания алгоритмического процесса.

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

image?id=855936348739&t=20&plc=WEB&tkn=*GcZDF0znQvQ6ssB2s_taeBx6AoQ

Рисунок – Алан Тьюринг

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

«Всякий алгоритм может быть реализован соответствующей машиной Тьюринга».

Тезис Тьюринга считается формальным определением алгоритма.

Советский математик А.А. Марков ( рисунок 2) в 1954 году предложил свою формулировку алгоритма;

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

small-20835

Рисунок – Андрей Андреевич Марков

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

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

Алгоритм — руководство к действию для исполнителя. В связи с этим описанием алгоритма считают, что значение слова «алгоритм» близко по смыслу к значению слов «указание» или «предписание».

Алгоритм — понятное и точное предписание (указание) исполнителю совершить определенную последовательность действий для достижения указанной цели или решения поставленной задачи.

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

Алгоритм должен отвечать определенному набору свойств. Основные свойства алгоритма представлены на рисунке 3.

Рисунок – Свойства алгоритма

  1. Массовость.

Алгоритм имеет определенное количество входных параметров — аргументов, описанных до начала выполнения.

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

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

  1. Понятность.

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

  1. Дискретность.

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

  1. Конечность.

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

  1. Определенность.

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

  1. Эффективность.

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

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

Набор команд, которые может реализовать конкретный исполнитель, называется системой команд исполнителя.

1.3 Способы описания алгоритмов

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

Словесная форма задания алгоритма предполагает описание команд алгоритма на естественном языке человека в произвольной форме. При этом все свойства алгоритма должны выполняться.

Пример словесного описания алгоритма Евклида для определения НОД двух чисел представлен на рисунке 4.

slide-4

Рисунок – Алгоритм Евклида

Графическое описание алгоритма осуществляется в виде специальных графических объектов – блок-схем.

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

17_html_3a0cb5f6

Рисунок – Основные фигуры для изображения блок-схемы

Для записи алгоритмов, ориентированных на выполнение при помощи компьютера, разработаны формальные языки, называющиеся языками программирования.

Алгоритм, записанный при помощи языка программирования, называется программой.

Способы описания алгоритмов обобщены на рисунке 6.

Рисунок – Способы описания алгоритмов

2 ОСНОВНЫЕ АЛГОРИТМИЧЕСКИЕ КОНСТРУКЦИИ

2.1 От интуитивного программирования к научному подходу

Исследователь, с именем которого связано превращение программирования из хаотичного интуитивного процесса в упорядоченный научный процесс, — нидерландский ученый Эдсгер Дейкстра (рисунок 7). Он сумел доказать, что программирование является интеллектуальным творчеством и высоким искусством.

Эдсгер Вибе Дейкстра

Рисунок – Эдгер В. Дейкстра

Именно Дейкстра для обеспечения легкости и гибкости программ предложил проектировать и записывать компьютерные программы в соответствии с определенной дисциплиной, названной им структурным программированием. Свои предложения Дейкстра основывал на известной теореме Бема-Якопини, которая утверждает, что любой алгоритм (а, значит, и программу) можно построить с использованием трех конструкций: следования, ветвления и цикла.

Графическая иллюстрация теоремы Бема-Якопини представлена на рисунке 8.

Рисунок – Иллюстрация теоремы Бема-Якопини

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

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

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

2.2 Простая команда

Элементарной структурной единицей любого алгоритма является простая команда.

Простая команда представляет один простейший этап переработки или передачи информации.

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

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

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

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

Значение переменной может быть изменено, например, при помощи команды присваивания:

<идентификатор> := <выражение> //Pascal

<идентификатор> = <выражение> //C++, Basic

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

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

Например, в языке программирования PascalABC оператором ввода информации служит команда read() и ее модификации, оператором вывода write() и ее разновидности:

read (a,n); // Ввод значений a,n

writeln(‘a = ‘,a); // Вывод значения переменной a

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

Рисунок – Простая команда

2.3 Составные команды

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

При выполнении алгоритма записанные команды по очереди в естественном порядке их записи.[

Общий вид команды следования:

начало

<команда 1> ;

<команда 2> ;

… ;

<команда N>

конец;

Такой порядок записи операторов определяет базовую алгоритмическую структуру следование и соответствует линейному алгоритму.

Блок-схема линейного алгоритма представлена на рисунке 10.

Рисунок – Линейный алгоритм

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

если < условие >

то < команда 1 >

иначе <команда 2 >

все

Блок-схема разветвляющегося алгоритма представлена на рисунке 11.

Рисунок – Разветвляющийся алгоритм

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

Рисунок – Неполная форма ветвления

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

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

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

В отдельных случаях возникает необходимость в использовании бесконечного цикла:

повторять

< команда >;

Блок-схема бесконечного цикла представлена на рисунке 13.

Рисунок – Бесконечный цикл

Традиционно в программировании выделяют три вида цикла:

  • цикл с предусловием;
  • цикл с постусловием;
  • цикл с параметром.

В цикле с предусловием повторять заданное действие требуется до тех пор, пока верно некоторое условие:

пока < условие > повторять

< команда >;

Блок-схема цикла с предусловием представлена на рисунке 14.

Рисунок – Цикл с предусловием

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

В отличие от цикла с предусловием, цикл с постусловием (цикл – до) предусматривает выполнение команды как минимум один раз:

повторять

< команда >

до < условие >;

Блок-схема цикла с предусловием представлена на рисунке 15.

Рисунок – Цикл с постусловием

На практике очень часто используется третий вид цикла – цикл с параметрами. При использовании такого цикла количество повторений тела цикла определено заранее.

Цикл с параметром используется в различных модификациях:

для всякого элемента х принадлежащего М выполнить

< команда >;

для х принадлежащего М пока < условие > повторять

< команда >;

для х от m до n повторять

< команда >;

для х от m до n шаг h повторять

< команда >;

Блок-схема цикла с предусловием представлена на рисунке 16.

for

Рисунок – Цикл с параметрами

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

3 РЕАЛИЗАЦИЯ ОСНОВНЫХ АЛГОРИТМИЧЕСКИХ СТРУКТУР В C++, PASCALABC, QBASIC

3.1 Следование

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

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

Оператор присваивания используют для присваивания переменной, стоящей слева от знака присваивания, значения выражения, указанного в правой части. Реализация оператора присваивания в языках программирования C++, PascalABC, QBasic представлена в таблице 1.

Таблица – Реализация оператора присваивания

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

Оператор присваивания

Пример использования

C++

=

A = 3*b + 7.5

PascalABC

:=

A: = 3*b + 7.5

QBasic

=

A = 3*b + 7.5

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

При использовании оператора присваивания надо следить, чтобы тип переменной, имя которого указано в левой части выражения, совпадал с типом выражения, записанного в правой части. В противном случае возникает ошибка несоответствия типов данных. В первую очередь это касается строго типизированных языков программирования C++ и Pascal. В Basic заложен механизм автоматического определения типа переменной, но в отдельных случаях ошибка может произойти и в Basic.

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

Реализация ввода в языках программирования C++, PascalABC, QBasic представлена в таблице 2.

Таблица – Реализация оператора ввода информации

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

Оператор ввода информации

Пример использования

C++

форматированный ввод

scanf (<список ввода>);

потоковый ввод

cin>> (<имя переменной>);

scanf("%d%d",&x,&y);

cin>>x; cin>>y;

PascalABC

без переноса курсора на следующую строку

read (<список ввода>);

с переносом курсора на следующую строку

readln (<список ввода>);

специальные функции PascalABC

ReadInt(‘<комментарий>’);

для разных типов переменных

read (x, y);

readln(x, y);

x := ReadInteger(‘<комментарий>’);

y := ReadlnReal(‘<комментарий>’);

QBasic

INPUT <комментарий>, <список ввода>

INPUT “Введите значения X и Y”, X, Y

Несмотря на синтаксические различия в записи оператора ввода на разных языках программирования, результат использования представленных в таблице 2 примеров будет одинаковым – переменным x и y будут присвоены значения, введенные пользователем с клавиатуры.

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

Можно отметить, что в QBasic можно вывести комментарий для пользователя непосредственно в операторе ввода информации (также комментарий может быть опущен), классические операторы ввода языков программирования C++ и PascalABC такой возможности не предполагают, поэтому комментарии обычно вводятся дополнительной строкой с использованием оператора вывода информации.

Оператор вывода информации предназначен для вывода на экран произвольной – как числовой, так и текстовой информации.

Реализация вывода в языках программирования C++, PascalABC, QBasic представлена в таблице 3.

Таблица – Реализация оператора вывода информации

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

Оператор вывода информации

Пример использования

C++

форматированный вывод

printf (<список вывода>);

потоковый вывод

cout<< (<элемент вывода>);

printf("x = %d",x);

cout<<" x = "<<x<<endl;

PascalABC

без переноса курсора на следующую строку

write (<список вывода>);

с переносом курсора на следующую строку

writeln (<список вывода>);

write (‘x = ‘, x);

writeln (‘x = ‘, x);

QBasic

PRINT <список вывода>

PRINT “ x = ”, X

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

x = <значение переменной х>.

Список вывода для PascalABC и QBasic представляет собой разделенные запятой элементы вывода:

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

Для языка программирования C++ все происходит аналогично, только элементы списка вывода разделяются знаком потокового вывода <<,

Ниже представлена реализация линейного алгоритма решения задачи получения суммы двух введенных пользователем действительных чисел на языках программирования C++, PascalABC, QBasic.

Программа на языке программирования C++ и результат ее реализации представлены на рисунке 17.

Рисунок – Реализация линейного алгоритма на языке C++

Программа на языке программирования PascalABC и результат ее реализации представлены на рисунке 18.

Рисунок - Реализация линейного алгоритма на языке PascalABC

Программа на языке программирования QBasic и результат ее реализации представлены на рисунке 19.

Рисунок - Реализация линейного алгоритма на языке QBasic

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

3.2 Ветвление

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

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

Реализация ветвления в языках программирования C++, PascalABC, QBasic представлена в таблице 4.

Таблица – Реализация оператора условного перехода

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

Оператор вывода информации

Пример использования

C++

полная форма

if (<условие>)

{серия команд 1};

else

{серия команд 2};

неполная форма

if (<условие>)

{серия команд 1};

if (a == b) x = a;

else x = b;

if (a == b) x = a;

PascalABC

полная форма

if (<условие>) then

begin <серия команд 1>

else

begin <серия команд 2> end;

неполная форма

if (<условие>) then

begin <серия команд 1;

if (a = b) then {x = a};

else {x = b};//в этом случае фигурные скобки не обязательны

if (a = b) then x = a;

QBasic

полная форма

IF <условие> THEN

<серия команд 1>

ELSE

<серия команд 2>

END IF

неполная форма

IF <условие> THEN

<серия команд 1>

END IF

IF A=B THEN X=A ELSE X=B ‘в этом случае END IF не обязателен

IF A=B THEN X=A

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

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

Программа на языке программирования C++ и результат ее реализации представлены на рисунке 20.

Рисунок – Реализация ветвления на языке C++

Программа на языке программирования PascalABC и результат ее реализации представлены на рисунке 21.

Рисунок - Реализация ветвления на языке PascalABC

Программа на языке программирования QBasic и результат ее реализации представлены на рисунке 22.

Рисунок - Реализация ветвления на языке QBasic

Полученные результаты идентичны.

3.3 Повторение

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

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

Также все три языка программирования дают возможность реализовать вложенные циклические структуры и использовать в одной программе несколько встроенных циклов. При использовании нескольких циклических операторов в одной программе важно помнить простое правило: циклы не должны пересекаться (рисунок 23).

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

Реализация повторения в языках программирования C++, PascalABC, QBasic представлена в таблице 5.

Таблица – Реализация операторов цикла

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

Синтаксис оператора цикла

C++

цикл с предусловием

while (<условие>)

{

<тело цикла>;

}

цикл с постусловием

do

{

<тело цикла>;

}

while (<условие>);

цикл с параметрами

for (i = a; i<=b; i++)

{

<тело цикла>;

}

PascalABC

цикл с предусловием

while (<условие>) do

begin

<тело цикла>;

end;

цикл с постусловием

repeat

<тело цикла>;

until (<условие>)

цикл с параметрами

for i:=a to b do

begin

<тело цикла>;

end;

QBasic

цикл с предусловием

DO WHILE <условие>

<тело цикла>

LOOP

цикл с постусловием

DO

<тело цикла>

LOOP WHILE <условие>

цикл с параметрами

FOR I=A TO B STEP S

<тело цикла>

NEXT I

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

I – переменная (счетчик) цикла;

a – начальное значение переменной цикла;

b – конечное значение переменной цикла;

s – шаг цикла.

Для цикла с параметрами в C++ и PascalABC допускается только целое значение шага цикла.

В PascalABC шаг цикла с параметрами задается по умолчанию:

  • при использовании служебного слова to шаг цикла равен 1;
  • при использовании служебного слова downto шаг цикла равен -1.

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

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

Традиционными задачами, которые решаются при помощи операторов цикла, являются:

  • табулирование значений функции, т.е. получение значений определенной функции на заданном промежутке изменения аргумента с заданным шагом;
  • обработка массивов:
    • поиск наибольшего/наименьшего элемента массива;
    • вычисление суммы элементов массива;
    • вычисление среднего арифметического элементов массива;
    • сортировка массива и др.

Ниже представлена реализация решения задачи вычисления квадратов натуральных чисел в границах промежутка [a; b], определенного пользователем с использованием оператора цикла с параметрами на языках программирования C++, PascalABC, QBasic.

Программа на языке программирования C++ и результат ее реализации представлена на рисунке 24.

Рисунок – Реализация повторения на языке C++

Программа на языке программирования PascalABC и результат ее реализации представлены на рисунке 25.

Рисунок - Реализация повторения на языке PascalABC

Программа на языке программирования QBasic и результат ее реализации представлены на рисунке 26.

Рисунок - Реализация повторения на языке QBasic

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

В курсовой работе изучены основные структуры алгоритмов и их реализация на языках программирования высокого уровня C++, PascalABC и QBasic. Также представлены примеры использования этих структур.

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

ЗАКЛЮЧЕНИЕ

Курсовая работа на тему «Основные структуры алгоритмов: сравнительный анализ и примеры их использования» выполнена в соответствии с намеченным планом.

В курсовой работе рассмотрен алгоритмический подход к разработке программ, внимательно изучены основные алгоритмические структуры, отображающие их блок-схемы и реализация в языках программирования высокого уровня C++, PascalABC И QBasic. В процессе изучения реализации алгоритмических структур на рассмотренных языках программирования проведен их сравнительный анализ.

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

По итогам выполнения курсовой работы можно сделать следующие выводы:

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

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

СПИСОК ЛИТЕРАТУРЫ

  1. Антонов Т.Е. Введение в язык Паскаль. – М.:Наука, 2013. - 320 c.
  2. Бобровский С. Программирование на языке QBasic для школьников и студентов. – М.:Инфорком-Пресс, ДЕСС, 2011. – 427 с.
  3. Васильев А.Н. Программирование на С++ в примерах и задачах. – М.: Издательство Э, 2017. – 368 с.
  4. Голубь Н.Г., Кириленко Е.Г. Алгоритмические языки и программирование: Методические рекомендации по выполнению контрольных и лабораторных работ, часть 1. – Харьков:ХАИ, 2017. – 31 с.
  5. Грогоно П. Программирование на языке Паскаль. М.: Высшая школа, 2014.- 239 с.
  6. Дедков А.Ф. Абстрактные типы данных в языке Паскаль. - М.: Наука, 2016. - 200 c.
  7. Довбуш Галина Visual C++ на примерах / Галина Довбуш, Анатолий Хомоненко. - СПб.: БХВ-Петербург, 2012. - 528 c.
  8. Емелина Е.И. Основы программирования на языке ПАСКАЛЬ. -М.:Наука, 2014. – 311 с.
  9. Есаян А.Р. Информатика. - М.: Просвещение, 2015. - 288 c.
  10. Зельднер Г. А. Программируем на языке QBasic 4.5, 4-е издание. – М.: ABF, 2014. – 448 с.
  11. Зиборов В. MS Visual C++ 2010 в среде .NET / В. Зиборов. - СПб.: Питер, 2012. - 320 c.
  12. Йенсен К., Вирт Н. Паскаль: руководство для пользователя. М.:Наука, 2012.- 207 с.
  13. Ишкова Э.А. Изучаем С++ на задачах и примерах. – М.: Наука и техника, 2016. – 240 с.
  14. Касаткин, А. И. Профессиональное программирование на языке си. Управление ресурсами / А.И. Касаткин. - М.: Высшая школа, 2009. – 432 c.
  15. Каспер Э. Освоим QBasic играючи!- М.:Радио и связь. – 2012.- 263 с.
  16. Касьянов В.Н., Сабельфельд В.К. Сборник заданий по практикуму на компьютере. М.: Наука, 2016.-200 с.
  17. Мельникова О. И., Бонюшкина А. Ю. Начала программирования на языке QBasic: Учебное пособие. - М.: ЭКОМ, 2012. - 200с.
  18. Пильщиков В.Н. Сборник упражнений по языку Паскаль. - М.: Наука, 2014. – 340 с.
  19. Потопахин В.В. Язык С. Освой на примерах. – СПб.: БХВ – Петербург, 2012. – 320 с.
  20. Прайс Д. Программирование на языке Паскаль: Практическое руководство. - М.: Наука, 2016. – 209 с.
  21. Рендольф, Н. Visual Studio 2010 для профессионалов / Ник Рендольф и др. - М.: Диалектика, 2014. - 584 c.
  22. Сафронов И. К. Бейсик в задачах и примерах, 2-е издание .-СПб.: БХВ-Петербург , 2016. – 639 с.
  23. Семашко, Г.Л.; Салтыков, А.И. Программирование на языке Паскаль. - М.: Наука, 2015. - 128 c.
  24. Ставнистый Н.Н. Qbasic в математике. Решение задач с помощью компьютера. Ч1. – М.: СОЛОН-Р, 2014. – 143 с.
  25. Фаронов В.В. Турбо Паскаль 7.0. Начальный курс. Учебное пособие. - М.: Прогресс, 2014. – 481 с.
  26. Цветков А.С. Язык программирования Pascal. - СПб.: Павловск, 2016. – 46 с.