Файл: Основные структуры алгоритмов: сравнительный анализ и примеры их использования (Программная реализация основных алгоритмических структур на языке высокого уровня Паскаль).pdf
Добавлен: 23.04.2023
Просмотров: 293
Скачиваний: 3
СОДЕРЖАНИЕ
1. ТЕОРЕТИЧЕСКИЕ АСПЕКТЫ ПОСТРОЕНИЯ АЛГОРИТМОВ
1.1 Понятие и принципы построения алгоритмов
1.2. Способы описания алгоритмов
1.3 Основные алгоритмические структуры
2. Программная реализация основных алгоритмических структур на языке высокого уровня Паскаль
2.1. О языке высокого уровня Паскаль
2.2. Операторы цикла в Паскаль
2.2.3 Оператор цикла Repeat…until
Writeln(‘Vvedite n= ’);
Read(n);
Pi:=3.14;
For r:=1 to n do
Begin
P:=2*pi*r;
Writeln(‘r= ’,r,’ p= ’,p);
End;
End. [14]
Результат выполнения программы Cycle1.pas с циклом for дан на рис. 10.
Рис. 10 - Результат выполнения программы Cycle1.pas с циклом for
Программа Cycle2.pas с использованием цикла Repeat …until.
Program Cycle2;
Var
P,pi: real;
R,n: integer;
Begin
Writeln(‘Vvedite n= ’);
Read(n);
Pi:=3.14;
R:=1;
Repeat
P:=2*pi*r;
Writeln(‘r= ’,r,’ p= ’,p);
r:=r+1;
until r>n;
end. [16]
На рис. 11 приведен скриншот выполнения программы Cycle2.pas с использованием цикла Repeat …until.
Рис.11 - Результат выполнения программы Cycle2.pas с использованием цикла Repeat …until
Программа Cycle3.pas с циклом while.
Program Cycle3;
var P,pi: real;
R,n: integer;
Begin
Writeln(‘Vvedite n= ’);
Read(n);
Pi:=3.14;
R:=1;
While (r<=n) do
begin
P:=2*pi*r;
Writeln(‘r= ’,r,’ p= ’,p);
r:=r+1;
end;
end. [9]
На рис. 12 приведен результат выполнения программы Cycle3.pas с использованием цикла while.
Рис. 12 - Результат выполнения программы Cycle3.pas с использованием цикла while
Программа Cycle4.pas с циклом с неизвестным числом повторений.
Программа вычисляет значение функции у = 2cos(x)+sin(x) c шагом dx=0,5 с точностью 0,01 [12].
Нарисуем блок-схему алгоритма решения задачи.
Блок-схема вычисления функции у = 2cos(x)+sin(x) c шагом dx=0,5 с точностью 0,01 [13]
Начало
Ввод х
dx=0.5
n=1
Y1=2cos(x)+sin(x)
x=x+dx
Y2=2cos(x)+sin(x)
Dy=Abs(y2-y1)
Вывод x, y
Y1=y2
Dy>0.01
да
Вывод n
Конец
Исходный код программы вычисления функции у = 2cos(x)+sin(x) c шагом dx=0,5 с точностью 0,01.
Program Cycle4;
var
x,dx,y1,y2,dy,d: real;
n: integer;
Begin
Writeln(‘Vvedite x= ’);
Read(x);
dx:=0.5;
d:=0.01;
n:=1;
y1:=2*cos(x)+sin(x);
repeat
x:=x+dx;
y2:=2*cos(x)+sin(x);
dy:=Abs(y2-y1);
Writeln(‘x= ’,x,’ y1= ’,y1);
Y1:=y2;
n:=n+1;
until dy<d;
writeln(‘n= ’,n);
end. [16]
На рис. 13 приведен результат выполнения программы Cycle4.pas с неизвестным числом повторений (цикл repeat).
Рис. 13 - Результат выполнения программы Cicle4.pas с неизвестным числом повторений
Программа Cycle5.pas со сложным циклом, вычисляет функцию y:=x*z/(с+b) при изменениях х от 2 до 8 с шагом 1 и z от 1 до 5 с шагом 1.
Приведем сначала блок-схему алгоритма [12].
Блок-схема алгоритма вычисления функции y:=x*z/(с+b) при изменениях х от 2 до 8 с шагом 1 и z от 1 до 5 с шагом 1 [13]
Начало
Ввод b,с
i=0
Х=2,8,1
Вывод i
z=1,5,1
Конец
y=x*z/(b+c)
Вывод x, y, z
i=i+1
Программа вычисления функции y:=x*z/(с+b) при изменениях х от 2 до 8 с шагом 1 и z от 1 до 5 с шагом 1
Program Cicle5;
var
x,z,a,b,i: integer;
y: real;
Begin
Writeln(‘Vvedite b = ’);
Read(b);
Writeln(‘Vvedite с= ’);
Read(с);
i:=0;
for x:=2 to 8 do
for z:=1 to 5 do
begin
y:=x*z/(с+b);
Writeln(‘x= ’,x,’ z=’,z,’ y= ’,y);
i:=i+1;
end;
writeln(‘chislo iteracii = ’,i);
end. [1, 3]
Скриншот выполнения программы приведен на рис. 14.
Рис. 14 - Результат выполнения программы Cycle5.pas со сложным циклом
Программа Cycle51.pas со сложным циклом нахождения максимального элемента в двумерном массиве. Составим блок-схему алгоритма [3].
Блок-схема алгоритма нахождения максимального элемента в двумерном массиве
Начало
Ввод m
Max=mij
i=1,n,1
j=1,n,1
Вывод max
Mij>max
Конец
Max=mij
Программа Cycle51.pas нахождения максимального элемента в двумерном массиве
Program Cycle51;
var
m: array[0..9,0..9] of integer;
i,j,n,max: integer;
Begin
Writeln(‘Введите элементы массива 3x3 построчнo’);
Writeln;
for i:=1 to n do
for j:=1 to n do
Read(m[i,j]);
{поиск max элемента}
for i:=1 to n do
for j:=1 to n do
if m[i,j]>max then max:=m[i,j];
Writeln(‘max= ’,max);
end. [4, 5, 6]
Скриншот выполнения программы Cicle51.pas дан на рис. 15.
Рис. 15 - Результат выполнения программы Cycle51.pas с двумерным массивом
Вывод: В главе рассмотрены операторы цикла, используемые в Паскале для программирования циклических алгоритмических структур: FOR, WHILE…DO, REPEAT …UNTIL.
Также произведена реализация линейных, разветвляющихся и циклических алгоритмов на языке высокого уровня Паскаль, приведены блок-схемы алгоритмов, тексты исходных программ алгоритмов и скриншоты результатов выполнения этих программ.
Таким образом, реализованы все рассмотренные в теоретической главе основные алгоритмические структуры.
ЗАКЛЮЧЕНИЕ
Алгоритм является точным предписанием, определяющим последовательность действий, обеспечивающих получение нужного результата из исходной информации.
Основные способы описания алгоритмов состоят из: словесно-формульного (на естественном языке); структурного или блок-схемного; с использованием специальных алгоритмических языков; посредством граф-схем; посредством сетей Петри. При разработке программ чаще всего пользуются словесно-формульным и блок-схемным способами.
В работе рассмотрены основные алгоритмические структуры – линейные, разветвляющиеся и циклические алгоритмы, приведены их блок-схемы, а также произведена их программная реализация на языке высокого уровня Турбо-Паскаль.
В циклических алгоритмах рассмотрены и составлены программы с известным и неизвестным числом итераций, с использованием циклов for, while, repeat, а также вложенных сложных циклов.
Все программы отлажены и приведены скриншоты результатов выполненных программ.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
- Епанешников А.М., Епанешников В. А. Программирование в среде Турбо -Паскаль 7. 0 – М.: Диалог, 2015.
- Кадырова Г.Р. Основы алгоритмизации и программирования : учебное пособие /Г. Р. Кадырова. – Ульяновск: УлГТУ, 2014. – 95 с.
- Культин Н. Turbo Pascal в задачах и примерах . – СПб. : БХВ -Петербург , 2014. – 256 с.
- Павловская Т.А. Паскаль . Программирование на языке высокого уровня . – СПб.: Питер, 2013. – 320 с.
- Попов В. Паскаль и Дельфи. Самоучитель. – СПб.: Птер, 2013. – 544 с.
- Потопахин В. В. Turbo Pascal : решение сложных задач . – СП б.: БХВ -Петербург , 2014. – 208 с.
- Программирование и основы алгоритмизации: Для инженерных специальностей технических университетов и вузов. /А.Г. Аузяк, Ю.А. Богомолов, А.И. Маликов, Б.А. Старостин. - Казань: Изд-во КНИТУ- КАИ, 2013. - 153 с.
- Программирование на языке Pascal. http://hi-intel.ru/800/101.html
- Рапаков Г.Г., Ржеуцкая С.Ю. Программирование на языке Pascal. – СП б.: БХВ -Петербург , 2014. – 315 с.
- Фаронов В. В. Турбо Паскаль 7. 0. Начальный курс : учебное пособие . – М.: ОМД Групп, 2013. – 616 с.
- Фаронов В. В. Turbo Pascal . Наиболее полное руководство. – СП б.: БХВ -Петербург , 2014. – 1056 с.
- Федоренко Ю. Алгоритмы и программы на Turbo Pascal . Учебный курс . – СПб.: Питер, 2011. – 240 с.
- Блок-схемы. Графическая реализация алгоритмов. Лекции Интуит. 2017. URL: http://www.intuit.ru/studies/courses/19752/1301/lecture/25625 (Дата обращения: 10.02.2018).
- Паскаль для начинающих. URL: http://schools.keldysh.ru/sch887/pascal.htm (Дата обращения: 10.02.2018).
- Учебник по информатике. URL: http://dssp.petrsu.ru/p/tutorial/zonna/3_ychebnik_9.htm (Дата обращения: 10.02.2018).
- Язык Pascal. Программирование для начинающих. URL: http: //pas1.ru /programming (Дата обращения: 10.02.2018).