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

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

Содержание:

Введение

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

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

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

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

Цель работы — провести сравнительный анализ основных алгоритмических структур.

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

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

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

Алгоритмы — основа программирования

Общие принципы построения алгоритмов

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

Алгоритм – это последовательность действий, которые необходимо выполнить для достижения поставленной цели или решения некоторой задачи [10]. С алгоритмами мы постоянно встречаемся в нашей обыденной жизни, порой даже не задумываясь об этом. Например, программа проведения конференции является таким алгоритмом. Также, примером алгоритма может быть правила перехода по пешеходному переходу. Сначала пешеходу необходимо посмотреть налево, чтобы убедиться, что проезжающие машины заметили его и готовы остановиться, чтобы пропустить его. Тогда можно идти до второй половины проезжей части. На второй половине также необходимо становиться и посмотреть направо, пропускают ли вас машины, едущие по данной полосе. После этого можно завершить переход. Инструкция по эксплуатации бытовой техники, например, телевизора, также содержит множество алгоритмов. Алгоритмы включения различных функций и режимов, алгоритмы действий при неисправностях.

Современное определение понятия «алгоритм» появилось в середине XX век на основании работ Тьюринга, Маркова, Винера и некоторых других.

Слово «алгоритм» происходит от имени среднеазиатского учёного Абу Абдуллаха Мухаммеда ибн Муса аль-Хорезми. Около 825 года он написал сочинение, в котором впервые дал описание придуманной в Индии позиционной десятичной системы счисления [5].

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

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

и необходимо вычислить значение данной функции в точке x=2.

Алгоритм выполнения таких вычислений может быть таким.

Вычислить значение функции в точке x=2. Для этого мы должны трижды умножить число 2 на само себя. Получаем значение 8.

Далее к полученному в пункте 1) значению мы должны прибавить число 3.
8+3=11;

В качестве ответа приводим полученное в предыдущем пункте значение. Записываем ответ y(3)=11.

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

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

Выполнение операции возведения числа x в куб (для этого число x трижды умножается на само себя) и прибавление к результату числа 3.

  1. Вывод на экран результата вычислений в пункте 2.

Этот алгоритм обладает свойством массовости [12] (он позволяет вычислять значение функции y(x) в любой точке из множества вещественных значений). Для решения конкретной, более узкой задачи по вычислению значения данной функции в точке x=2 необходимо в пункте 1) алгоритма ввести в память компьютера число 2. Далее обсудим свойства алгоритмов.

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

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

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

Массовость. Это свойство предполагает, что алгоритм должен быть пригоден для решения не одной конкретной задачи, а целого класса подобных задач. Или, другими словами, один и тот же алгоритм можно использовать с разными исходными данными [4] .

Дискретность означает расчлененность определяемого алгоритмом вычислительного процесса на отдельные этапы.

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

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

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

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

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

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

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

Формы описания алгоритмов

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

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

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

Благодаря этим особенностям такой способ записи становится не очень удобным. Такие особенности языков появляются от того, что развитие естественных языков происходит под влиянием различных культурных, социальных и общественных явлений. Для записи алгоритмов нужно добиться полной однозначности для исполнителя тех действий, которые ему необходимо выполнить. Поэтому для записи вычислительных алгоритмов предпочтительнее использовать другие способы [5].

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

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

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

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

Алгоритмические структуры

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

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

Если в алгоритме действия выполняются одно за другим, то такие алгоритмы называют линейным. Блок-схема таких алгоритмов представлена на рисунке 1.

Рисунок — Линейная алгоритмическая конструкция

Начало

Действие 1

...

Действие 2

Конец

Для того, чтобы иметь возможность выбора, какое действие выполнить в зависимости от некоторых условий используют ветвящиеся алгоритмы (или алгоритм с условием). Схема таких алгоритмов представлена на рисунке. Сначала происходит проверка условия. В случае, если условие выполняется. Происходит выполнение одной группы действий. В случае, если условие не происходит выполнение другой группы. Отметим, что обе ветви схемы в любом встречаются. Это означает, что линейная группа, помещенная сразу после точки соединения двух ветвей, будет выполнена в любом случае. Это необходимо учитывать при составлении алгоритмов [7].

Начало

Действие 1

Действие 2

условие

Конец

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

Рисунок — Алгоритмическая конструкция ветвление

Существует два вида цикла: с постусловием и с предусловием. Цикл с предусловием представлен на рисунке 3.

Начало

Тело цикла

условие

Да

Нет

Конец

Рисунок 3— Алгоритмическая конструкция цикл с предусловием

Между двумя этими схемами существует два принципиальных отличия. Как следует из названия, в цикле с предусловием сначала идет проверка условий, затем, в случае если условие выполнено, выполняется последовательность действий из тела цикла. Выполнение происходит до тех пор, пока условие истинно. Когда условие становится ложным, происходит выход из цикла. Отсюда становится ясным, что в теле цикла должны выполняются операции, приводящие к изменению значений параметров, содержащихся в условии. Иначе, цикл будет выполняться бесконечно. Такой эффект называется зацикливанием [15].

Рисунок 4 — Алгоритмическая конструкция цикл с постусловием

Начало

Тело цикла

условие

Конец

В цикле с постусловием сначала происходит выполнение тела цикла, а затем уже проверка условий. При этом цикл выполняется, пока условие ложно. Когда условие становится истинным, происходит выход из цикла. Цикл с постусловием будет всегда выполнен хотя бы один раз. Отметим, что в разных языках программирования используется разный тип условия для ветвей, ведущих к телу цикла и к выходу из цикла [13].

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

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

Общая запись цикла с параметром на алгоритмическом языке выглядит следующим образом:

для i от i1 до i2 шаг k повторять

нц

<тело цикла>

кц

Здесь i — параметр цикла, то есть переменная, изменяющая свое значение на шаг цикла при каждой итерации. При этом параметр iпроходит все значения от i1 до i2 с шагом k.То есть каждый раз к значению i,полученному при выполнении предыдущего шага прибавляется k.

Это равнозначно использованию цикла с предусловием, в котором в качестве условия используется i<=i2, а в конце тела цикла выполняется оператор i:=i+k. Для полного соответствия двух схем переменная iопределяется до цикла:

i:=i1

Таким образом, можно записать блок-схему цикла с параметром с помощью следующей схемы, использующей цикл с предусловием (рисунок.

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

Рисунок 6 — Блок-схема цикла с параметром

Начало

Операторы тела цикла

i:=i1+k

i<=i2

Да

Нет

i:=i1

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

В начале рассмотрим реализации основных алгоритмических структур на языке программирования Pascal [8]. Язык был разработандля обучения программированию и до сих пор активно используется в этом качестве.

Конструкция ветвление (полное) реализуется с помощью условного оператора:

if <условие> then<оператор1>else <оператор2>;

Неполное ветвление будет соответствовать конструкции без использования ветви else помощью условного оператора:

if <условие> then<оператор1>;

В случае, если ветвь содержит более одного оператора, то команды ветви должны быть заключены в операторные скобки begin...end:

begin

<оператор 1>;
< оператор 2>;

<...>;
end

Цикл с предусловием (конструкция while) имеет в языке Pascal следующий вид [9]:

while < условие> do <оператор 1>;

Цикл с постусловием (конструкция repeatuntil) имеет в языке Pascalследующий вид:

repeat

<оператор 1>;
< оператор 2>;
until<условие>

Реализация цикла с постусловием имеет две особенности на языке Pascal [9]:

  1. конструкция не требует операторных скобок begin...end;
  2. цикл выполняется до тех пор пока условие ложно, выход их цикла соответствует ложному значению условия.

Цикл с параметром записывается с помощью следующей конструкци (цикл for):

for<счетчик1> := <значение1>to<конечное_значение>do<оператор1>;

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

for<счетчик2> := <значение2>downto<конечное_значение>do<оператор1>;

Отметим, что в реализации цикла со счетчиком на Pascal нет возможности указать шаг не равный единице [1].

Далее рассмотрим реализацию основных алгоритмических конструкций на одном из самых популярных универсальных языков программирования C++. Этот язык широко используется для написанияпрограмм самого разного назначения, в том числе мобильных и веб-приложений [15].

В языке С++ для цикла со счетчиком существует конструкция for, которая выглядит следующим образом [2]:


for<выражение1>; <выражение2>; <выражение3> )

{

<операторы>;

}

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

i= 0 или inti=0

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

Выражение 2 содержит условие выполнение цикла, то есть цикл будет выполняться, пока Выражение 2истинно.Например, Выражение 2 может содержать условие i<=5.Выражение 3 указывает изменение значения переменной, например i++ — увеличивает занчение переменной на единицу.

Оператор i--увеличивает занчение переменной на единицу.

Цикл с предусловием представлен конструкцией while [12]:

while (<Условие>) { <Тело цикла>; }

Цикл с постусловием реализуется с помощью конструкции do...while [14,15]

do

{ <Тело цикла>; }

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

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

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

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

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

В качестве иллюстрации рассмотрим решение следующей задачи на языке C++: программа реализует вычисление квадрата большего из двух действительных чисел[16].

Листинг программы.

#include <iostream>

using namespace std;

int main()

{

setlocale(LC_ALL, "Russian"); //Русский язык в консоли

float x,y;

cout << "Программа вычисляет квадрат большего числа\nВведите два числа" << endl;

cin>>x>>y;

if (x>=y){cout<<x*x;} else {cout<<y*y;}

return 0;

}

В данной задаче происходит выбор наибольшего числа с помощью условного оператора.

Далее, рассмотрим решение такой типичной задачи.

Вводится точка с координатами X,Y. Определить, принадлежит введенная точка фигуре или нет. Фигуры изображены на рисунке 7.

Рисунок 7 — Условие задачи в графическом виде

Для решения задачи будем использовать язык Pascal.

varx,y,a:real;

begin

write('Введите координаты точки через пробел');

readln(x,y);

if (y>=8-8*x) and (y>=-2.5*x+5) and (y>=x-2) and (y<=-0.25*x+8) and (sqr(x-5.5)+sqr(y-2.5)>=sqr(2.5)) then

writeln ('Точка входит в область') else

writeln('Точка не входит в область');

end.

Результат.

Вводим 2 ; 3 Выводится: Точка входит в область

Вводим 5 ;2 Выводится: Точка не входит в область'

Программы с использования циклов

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

Листинг программы:

#include <iostream>

using namespace std;

int main()

{

setlocale(LC_ALL, "Russian"); //Русский язык в консоли

cout<<"Введите n"<<endl;

int n;

cin>>n;

int s=0;

for (int i=0; i<n;i++)

{int k=2*i; s=s+k;}

cout<<s;

return 0;

}

Результат работы программы:

Если вводим 3, программа выдает 6 (то есть 0+2+4).

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

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

на отрезке [1;3]

Один из самых известных методов решения данной задачи называется методом Ньютона.

Метод Ньютона (метод касательных) состоит в том, что приближенным значением корня считается точка пересечения касательной к кривой f (x) и оси 0X.

Рабочая формула метода

позволяет найти последовательность x0, x1, x2, …, xn, сходящуюся к точному значению корня ξ уравнения (1.1). Критерием окончания вычислительного процесса является выполнение условия:

|x n+1 - x n| < ε (2)

Была разработана программа на языке Pascal в среде разработки PascalABC.Net.

Листингпрограммы:

usescrt;

varx,a,b,e: real;

function f1(z: real): real; {Основнаяфункция}

begin

f1:= 3*sqr(ln(z))+6*ln(z)-5;

end;

function f2(z:real): real; {Производная от основной функции}

begin

f2:=6*(ln(z))/z+6/z;

end;

begin

Clrscr;

a:=1;b:=3;

e:=0.00001;

clrscr;

if f1(a)*f2(a)>0 then x:=a

else x:=b;

while abs(f1(x)/f2(x))>e do

begin

x:=x-f1(x)/f2(x);

end;

Writeln (' В интервале от ',a:0:0,' до ',b:0:0,' с погрешностью ',e:0:5);

Writeln ('x=',x:0:5,' f(x)=',f1(x):0:5);

end.

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

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

Рисунок — Результаты решения уравнения методом Ньютона

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

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

Метод заключается в разбиении рассматриваемого промежутка на прямоугольники и выборе середины стороны прямоугольника для расчета площади под графиком (геометрический смысл интеграла)[17,18].

Листингпрограммы:

uses crt;

varx,a,b,h, s: double; i,pow:integer;

function f(z: real): double; {Основная функция}

begin

f:=exp(z)*sqr(cos(z));

end;

begin

Clrscr;

a:=0; b:=Pi;

h:=(b-a)/60;

for i:=0 to 59 do begin {метод прямоугольников}

x:=a+i*h;

s:=s+h*(f(x+h/2)) end;

writeln('Метод центральных прямоугольников. Значение интеграла exp(x)*sqr(cos(x))dx от 0 до pi равно ',s:0:5);

end.

Результаты работы программы представлен на рисунке 9:

Рисунок — Результат работы программы

Продемонстрируем вычисление данного интеграла с точностью 10-5 итеративным методом (увеличением количества отрезков разбиения на каждом шаге в два раза до достижения необходимой точности). При вычислении интеграла используется метод Симпсона. Этот пример наглядно демонстрирует применение цикла с постусловием [19].

const

a=0;b=Pi; e=0.00001;

functionF(z:real):real;

begin

f:=exp(z)*sqr(cos(z));

end;

varn,i:integer;

h,k,s1,s2: real;

begin

n:=2;

s1:=0;

h:=(b-a)/n;

s2:=h*F(a);{текущийинтеграл}

repeat

s1:=s2; {запомним текущий интеграл}

h:=(b-a)/n;

k:=a;

fori:=1 to n-1 do

begin

k:=k+h;//наращиваем

ifi mod 2 = 0 then s2:=s2+2*f(k)//считаемновыйинтеграл

elses2:=s2+4*f(k);

end;

s2:=(s2+f(a)+f(b))*h/3;//конечное значение

n:=n*2;//если точность не достигнута удваиваем количество разбиений

untilabs(s1-s2)<=e;

write('Значение интеграла exp(x)*sqr(cos(x))dx от 0 до pi равно=',s2:0:5);

readln

end.

Результаты представлены на рисунке 10:

Рисунок — Результат работы программы

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

Заключение

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

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

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

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

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

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

Далее была описана реализации основных конструкций в языках программирования Pascal и С++. Отметим, что конструкции C++ более компактные и универсальные. Например, мы можем инициализировать переменную-счетчик в самом цикле, что не допускается в Pascal. Вообще, в правилах записи и использования основных алгоритмических конструкций отчетливо видна разница в данных языках программирования. Язык Pascal характеризуется четкой структурой составных частей программы. При использовании С++ программист получает больше свободы в использовании переменных, данных, правилах записи программ. Кроме того конструкции языка краткие, однако требуют большей подготовки от пользователя, так как могут быть менее понятны, чем конструкции для Pascal.

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

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

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

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

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

.

Список использованных источников

  1. Форсайт, Р. Паскаль для всех. - М.: Машиностроение, 2016. - 288 c.
  2. Кауфман, В.Ш. Языки программирования. Концепции и принципы — М.: ДМК, 2017. — 464
  3. Баженова, И.Ю. Языки программирования: Учебник для студентов учреждений высш. проф. образования / И.Ю. Баженова; Под ред. В.А. Сухомлин. — М.: ИЦ Академия, 2018. — 368 c.
  4. Голицына, О.Л. Языки программирования: Учебное пособие / О.Л. Голицына, Т.Л. Партыка, И.И. Попов. — М.: Форум, НИЦ ИНФРА-М, 2013. — 400 c.
  5. Грин, Д. Математические методы анализа алгоритмов. - М., 2012. - 496 c.
  6. Дж. Макконелл, Основы современных алгоритмов, М.: «Техносфера», 2004, С. 10-11
  7. Дикин, И. И. Метод внутренних точек в линейном и нелинейном программировании. - М.: Красанд, 2015. - 120 c.
  8. Епанешников, А.М.; Епанешников, В.А. Программирование в среде Turbo Pascal 7.0; М.: ДИАЛОГ-МИФИ; Издание 4-е, испр., 2013. - 367 c
  9. Лукин С.М., Турбо-Паскаль 7.0. Самоучитель для начинающих //
    М:Диалог-МИФИ, 2015.
  10. Макарова Н.В, Волков В.Б..Информатика: Учебник для вузов. Стандарт третьего поколения / Макарова Н.В, Волков В.Б.-СПб.:Питер, 2015.
  11. Стариченко, Б.Е. Теоретические основы информатики : учебник для вузов. — М. : Горячая линия – Телеком, 2016 .— 401 с. —
  12. Страуступ, Б. Язык программирования С++. Специальное издание / Б. Страуступ. — М.: Бином, 2015. — 1136 c.
  13. Алгоритмы: построение и анализ, 3-е издание/ Томас Х. Кормен, Чарльз И. Лейзерсон, Рональд Л. Ривест, Клиффорд Штайн —М.: Вильямс, 2013.
  14. Учебник по паскалю [Электронный ресурс]. URL: http://pcfu.ru/stati/programmirovanie/uchebnik-po-paskalyu-oglavlenie (Дата обращения 05.01.2020)
  15. Язык программирования С++ [Электронный ресурс]. URL: http://cppstudio.com/(Дата обращения 05.01.2020)