Файл: Основные структуры алгоритмов: сравнительный анализ и примеры их использования (Операторы языка С++ для реализации базовых структур алгоритмов).pdf
Добавлен: 30.03.2023
Просмотров: 82
Скачиваний: 2
СОДЕРЖАНИЕ
Основные понятия теории алгоритмов 1.1 Понятие алгоритма
2.1.Методы описания алгоритмов
2.2. Основные структуры алгоритмов
3.Практическая реализация базовых структур алгоритмов
3.1.Операторы языка С++ для реализации базовых структур алгоритмов
3.2 Примеры использования основных структур алгоритмов на языке программирования С++
while (условие выполнения)
{
тело цикла
};
Последовательность операторов выполняется пока условие истинно, а выход из цикла выполняется, когда условие будет ложным. Если условие ошибочное при вхождении в цикл – операторы ни разу не выполнятся, а управление передастся к следующему оператору[41].
Цикл с постусловием выполняется, если есть надобность проверять истинность условий каждый раз после итерации. Как отмечали выше, отличие циклов с предусловием и с постусловием заключается в самой первой итерации.
Синтаксис цикла do … while:
do
{
тело цикла
}
while (условие выполнения);
Последовательность операторов (тело цикла) выполняется один или несколько раз, пока условие станет ложным. Оператор цикла do ... while используется в тех случаях, когда есть необходимость выполнить тело цикла хотя бы один раз, поскольку проверка условия осуществляется после выполнения операторов.
Если тело цикла состоит из одного оператора, то операторные скобки {} не является обязательны.
Операторы цикла while и do ... while преждевременного могут завершиться при выполнении операторов break или же return внутри тела циклов.
3.2 Примеры использования основных структур алгоритмов на языке программирования С++
Приведем примеры практического использования базовых структур алгоритмов на языке С++.
Для демонстрации линейного алгоритма рассмотрим следующий пример.
С начала сутки прошло определённое количество (n) секунд. Определите сколько часов, минут и секунд прошло с начала сутки.
Код программы написанный на языке С++ следующий:
//подключаем заголовочные файлы
#include <iostream>
#include <conio.h>
#include <clocale>
#include <math.h>
using namespace std; // объявляем пространство имен
int main()
{
float n,h,m,s; // объявляем переменные
setlocale (LC_CTYPE,"rus")[42]; //подключаем кириллицу
cout << "Введите количество секунд n: ";
cin >> n;
//находим целые значения часов, минут, секунд
h=floor(n/3600);
m=floor((n-h*3600)/60);
s=n-h*3600-m*60;
//вывод данных
cout <<"С начала сутки прошло "<<h<<" часов "<<m<<" минут "<<s<< " секунд";
getch();
return 0;
}
В результате получим:
Рис. 8 Результат алгоритма
Для рассмотрения разветвляющего алгоритма я предлагаю следующий вариант.
Ввести с клавиатуры несколько целых чисел, и проверить, создают ли они убывающую последовательность. Если создают - вывести числа, обратного знака к исходным, в противоположном случае вывести сумму квадратов чисел.
#include <iostream>
#include <conio.h>
#include <clocale>
#include <math.h>
using namespace std;
int main()
{
float d1,d2,d3; // объявление переменных
setlocale (LC_CTYPE,"rus");
cout << "введите числа: ";
cin >> d1>>d2>>d3; // инициализация переменных d1, d2, d3
if ((d1>d2)&&(d2>d3)) //проверка условия убывающей последовательности[11]
{//переопределение переменных
d1=(-1)*d1;
d2=(-1)*d2;
d3=(-1)*d3;
cout<<"Последовательность убывающая! "<<endl;
}
else
{//переопределение переменных
d1=pow(d1,2);
d2=pow(d2,2);
d3=pow(d3,2);
cout<<"Последовательность не убывающаяя! "<<endl;
}
cout<<d1<<" , "<<d2<<" , "<<d3;
getch();
return0;
}
В результате получим:
Рис.9 Результат алгоритма
Для рассмотрения же циклического типа алгоритма я предлагаю использовать программу, которая будет сортировать элементы массива с помощью метода пузырька.
#include <iostream>
#include <conio.h>
#include <clocale>
#include <math.h>
using namespace std;
in main()
{
//подключение кириллицы
setlocale( LC_ALL,1201 );
//объявление всех переменных
int r, m, q;
//объявление массива
int М[40];
//ввод размерности вектора
cout<<»Введите размерность массива:»;
//считывание размерности вектора
cin>>m;
//ввод массива
cout<<"Введите элементы массива: ";
//считывание элементов[43]
for (r=0;r<m;r++)
cin>>M[r];
//алгоритм сортировки пузырьком
for( r=0;r < m; r++)
for( q=r+1; q < m; q++)
//проверка условия для сортировки
if (M[r] > M[q])
//переназначение элементов
swap(M[r],M[q]);
//вывод массива
cout<<"Вывод элементов массива: ";
for (r=0;r<m;r++)
//вывод элемента
cout<<М[r]<<" ";
//задержка экрана
getch();
//возврат 0
return0;
}
В результате исполнения данного кода мы получим:
Рис. 9 Результат сортировки
Заключение
С каждым днём влияние компьютеров и различной умной техники на нашу жизнь увеличивается, и упрощает её. Если большинство пользователей овладеют пониманием и умением правильно обращаться с алгоритмами, а так же правильно понимать их суть — жизнь станет намного проще и легче.
Процессор компьютера, самая важная его составляющая, умеет понимать и обрабатывать только простейшие команды. А для обработки сложнейших и трудоёмких задач ему нужна помощь программиста, который составит узконаправленные и точные инструкции.
Составление алгоритма, пошагового описания каждого действия, необходимо для точного понимания исполнителем и правильной постановки действий. Этот процесс называется алгоритмизацией. В роли исполнителя может быть кто и что угодно, от сложной вычислительной техники до самого обычного человека.
Развитие и прогресс электронно-вычислительных машин определил процесс появления метода общения с процессорами — языков программирования. Цель появления таких языков — набор вычислительных формул дополнительной информации, превращающий её в алгоритм.
Язык программирования это метод общения человека и компьютера. Компьютер начинает понимать, чего от него требует программист, и выполняет предписанные ему действия в строго определённом порядке.
В работе выполнены несколько задач:
- рассмотрены и обсуждены основные понятия алгоритмов, их свойства
-описаны методы подачи алгоритмов
- дана характеристика базовых структур алгоритмов
- проведён сравнительный анализ структур алгоритмов
- проведено рассмотрение операторов для реализации основных структур алгоримов используя язык программирования C++
- приведены примеры использования базовых структур алгоритмов
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1Основы алгоритмизации и программирования: учеб. пособие / Т.А.
Жданова, Ю.С. Бузыкова. – Хабаровск : Изд-во Тихоокеан. гос.ун-та, 2011. –56 с.
2. Горностаева, Татьяна Николаевна Г 67 Алгоритмы. Учебное пособие – М.: Мир науки, 2019. – Сетевое издание. Режим доступа:https://izd-mn.com/PDF/33MNNPU19.pdf Дата обращения 25.06.2020
3. Харахан О.Г., Системы искусственного интеллекта. Практикум для проведения лабораторных работ. Ч. 1 : Учебное пособие для вузов / Харахан О.Г. - М: Издательство Московского государственного горного университета, 2006. - ISBN 5-7418-0425-1 - Текст : электронный // ЭБС "Консультант студента" : [сайт]. - URL : https://www.studentlibrary.ru/book/ISBN5741804251.html (дата обращения: 10.07.2020). - Режим доступа : по подписке.
4.Сираждинов С.Х., Матиевская Г.П. Ал-Хорезми — выдающийся математик и астроном средневековья: Пособие для учащихся, - М.: Просвещение, 1983 89 с.
5. Алгебра: Элементы комбинаторики. Бином ньютона: Методические указания/Авт.-сост- В.А. Васильева, Т.Б. Волкова, Р.Н. Молодожникова.- М.: Изд-во МАИ. 2002 с. 88 с.
6. Физическая лаборатория школьника. Часть 2: учеб.-метод. Пособие / Н.Ю. Петров, Н.Ю. Березин, В.В. Христофоров. Новосибирск: Изд-во НГТУ, 2015. 108 с.
7. В.И. Поляков, В.И. Скорубский Основы теории алгоритмов Учебное пособие по дисциплине «Математическая логика и теория алгоритмов» - Санкт-Петербург: НИУ ИТМО, 2012 51 с.
8. Забуга А.А. Теоретические основы: Учебное пособие. Стандарт третьего пооколения. - Спб.: Питер, 2014, 208 с.
9. Основы алгоритмизации и программирования на языке высокого уровня Си: учебно-практическое пособие / Т.В. Панова, Н.Д. Николаева; Балт. гос. техн. ун-т. – СПб., 2015 176 с.
10. Есипов А.А. Информатика и информационные технологии для учащихся школ и колледжей. Спб.: БХВ-Петербург, 2004. - 470 c.
11. Информатика и ИКТ: Учебник для 9 класса:в 2ч. ч.1 / А.Ю. Босова. -М. :БИНОМ. Лаборатория знаний, 2012 244. с.
12. Программирование и основы алгоритмизации: Для инженерных специальностей технических университетов и вузов. /А.Г. Аузяк, Ю.А. Богомолов, А.И. Маликов, Б.А. Старостин. Казань: Изд-во Казанского национального исследовательского технического ун-та - КАИ, 2013, 153 С.
13. Основы алгоритмизации и программирования : учебное пособие / Г. Р. Кадырова. – Ульяновск : УлГТУ, 2014. 95 с.
14. Учебное пособие, руководство по изучению дисциплины, практикум, учебная программа / Московский государственный университет экономики, статистики и информатики. – М. ,2004. – 220 с
15. Симонович С.В. Базовый курс: Учебник для вузов. 3-е пзд. Стандарт третьего поколения. - Спб.:Питер, 2011. 640 с.
16. А.А. Тюгашев. Основы программирования. Часть I. – СПб: Университет ИТМО, 2016. – 1 Режим доступа :https://books.ifmo.ru/file/pdf/1917.pdf Дата обращения 06.07.2020 117 С.
17.Лекции по операционным системам (общий курс): учебное пособие / Е.М. Карчевский, О.В. Панкратова — Казань: Казан. Ун-т, 2011. 255 с.
18.Парадигма программирования : курс лекций / Л. В. Городняя ; Новосиб. гос. ун-т. – Новосибирск : РИЦ НГУ, 2015. 206 с.
19. Молдованова О.В. Языки программирования и методы трансляции: Учебное пособие. – Новосибирск/СибГУТИ, 2012. 134 С.
20. Опалева Э.А., Самойленко В.П. Языки программирования и методы трансляции СПб.: БХВ-Петербург,2003. – 471 с.
21. Орлов С. Теория и практика языков программирования: Учебник для вузов. 2-Ее изд. Стандарт 3-го поколения. -Спб. Питер, 2017. 688 с.
22. Гниденко И.Г., Соколовская С.А. Информатика, 2-е изд. - Спб..: Издательский дом «Нева», 2003. 320 С.
23. Перова В.И., Сабаева Т.А., Чекмарев Д.Т. РАЗРАБОТКА АЛГОРИТМОВ ДЛЯ РЕШЕНИЯ ЗАДАЧ НА ЭВМ: Учебное пособие. – Нижний Новгород: Нижегородский госуниверситет, 2015. Режим доступа:http://www.lib.unn.ru/students/src/RACV.pdf 136 с.
24. Информатика :Учебник для 6 класса / Л.Л. Босова, А.Ю. Босова. - М.: БИНОМ. Лаборатория знаний, 2013. 215 с.
25. Могилев, А. Информация и информационные процессы. Социальная информатика] / Л. Листрова, А. Могилев .— СПб. : БХВ-Петербург, 2006 222 с.
26. Хиценко В.П. Основы программирования: учебное пособие /В.П. Хиценко. - Новосибирск: Изд-во НГТУ, 2015 83 с.
27. Потопахин В.В. Язык C. Освой на примерах. Спб.: БХВПетербург, 2006.
28. Язык С : освой на примерах / Виталий Потопахин. - Санкт-Петербург : БХВ-Петербург, 2006 (СПб. : Типография "Наука" РАН). - 301 с
29. Сети и телекоммуникации : учебник и практикум для СПО / Под ред. К.Е. Самуйлова, И.А. Шалимова, Д.С. Кулябова. - М.: Издательство Юрайт, 2019. 363 с.
30. Кернинган, Брайан У,, Ритчи, Деннис М. Язык программирования С, 2-е издание.: Пер с англ. - М.: Издательский дом «Вильямс», 2007. 304 с.
31. Шилдт, Герберт, Полный справочник по С, 4-е издание. : Пер. С англ. - М.: Издательский дом «Вильямс», 2007 704 с.
32. Довбуш, Г.Ф. Visual C++ на примерах/ Г.Ф. Довбуш, А.Д. Хомоненко/ Под ред проф. А.Д.Хомоненко. - Спб.:БХВ-Петербург, 2007. 528 с.
33. Орлов С. Теория и практика языков программирования: Учебник для вузов. 2-е изд. Стандарт 3-го поколения. -Спб.: Питер, 2017 686 с.
34. Пахомов Б.И. и MS visual c++ 2010 для начинающих. СПБ.: БХВпетербург. 2011. 736 с.
35. Большая школьная энциклопедия, Т.1. Естественные науки( автор-составитель С. Исмаилова).-М.:Русское энциклопедическое товарищество, 2003 702 с.
36. Дейл Н., Уима Ч., Хедингтон М. Программирование на С++: Пер. С англ. - М.: ДМК Пресс. 673 с.
37. Программирование на языке Си: учеб. Пособие / Р.Ю. Царев. - Красноярск: Сиб. Федер. Ун-т, 2014. 108 с.
38. Прохоренок Н.А. Язык С. Самое необходимое. СПБ,: БХВПетербург, 2020. 408 с.
39. Герберт Шилдт C++: Руководство для начинающих, 2-е издание. : Пер.с англ. - М.: Издательский дом «Вильямс», 2005. 672 с
-
1Основы алгоритмизации и программирования: учеб. пособие / Т.А.
Жданова, Ю.С. Бузыкова. – Хабаровск : Изд-во Тихоокеан. гос.ун-та, 2011. –
с. 8 ↑ -
Горностаева, Татьяна Николаевна Г 67 Алгоритмы. Учебное пособие – М.: Мир науки, 2019. – Сетевое издание. Режим доступа: https://izd-mn.com/PDF/33MNNPU19.pdf с. 4 Дата обращения 01.07.2020 ↑
-
Системы искуственного интеллекта. Практикум для проведения лабораторных работ. Ч. 1: Учебное пособие для вузов. - М.: Издательство Московского государственного горного университета, 2006 с. 199 ↑
-
Сираждинов С.Х., Матиевская Г.П. Ал-Хорезми — выдающийся математик и астроном средневековья: Пособие для учащихся, - М.: Просвещение, 1983 с.11 ↑
-
Алгебра: Элементы комбинаторики. Бином ньютона: Методические указания/Авт.-сост- В.А. Васильева, Т.Б. Волкова, Р.Н. Молодожникова.- М.: Изд-во МАИ. 2002 с. 82 ↑
-
Физическая лаборатория школьника. Часть 2: учеб.-метод. Пособие / Н.Ю. Петров, Н.Ю. Березин, В.В. Христофоров. Новосибирск: Изд-во НГТУ, 2015. с. 20 ↑
-
В.И. Поляков, В.И. Скорубский Основы теории алгоритмов Учебное пособие по дисциплине «Математическая логика и теория алгоритмов» - Санкт-Петербург: НИУ ИТМО, 2012 ↑
-
Забуга А.А. Теоретические основы: Учебное пособие. Стандарт третьего пооколения. - Спб.: Питер, 2014, с. 61 ↑
-
В.И. Поляков, В.И. Скорубский Основы теории алгоритмов Учебное пособие по дисциплине «Математическая логика и теория алгоритмов» - Санкт-Петербург: НИУ ИТМО, 2012 с. 6 ↑
-
Основы алгоритмизации и программирования на языке высокого уровня Си: учебно-практическое пособие / Т.В. Панова, Н.Д. Николаева; Балт. гос. техн. ун-т. – СПб., 2015. с. 5 ↑
-
Основы алгоритмизации и программирования: учеб. пособие / Т.А. Жданова, Ю.С. Бузыкова. – Хабаровск : Изд-во Тихоокеан. гос.ун-та, 2011. с..9 ↑
-
Есипов А.А. Информатика и информационные технологии для учащихся школ и колледжей.
Спб.: БХВ-Петербург, 2004. - с. 149 ↑ -
Информатика и ИКТ: Учебник для 9 класса:в 2ч. ч.1 / А.Ю. Босова. -М. :БИНОМ. Лаборатория знаний, 2012. с. ↑
-
Программирование и основы алгоритмизации: Для инженерных специальностей технических университетов и вузов. /А.Г. Аузяк, Ю.А. Богомолов, А.И. Маликов, Б.А. Старостин. Казань: Изд-во Казанского национального исследовательского технического ун-та - КАИ, 2013 с. 11 ↑
-
Основы алгоритмизации и программирования : учебное пособие / Г. Р. Кадырова. – Ульяновск : УлГТУ, 2014. c.7 ↑
-
Калмыкова О.В., Грибанов В.П., Сорока Р.И. ОСНОВЫ АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЯ: Учебное пособие, руководство по изучению дисциплины, практикум, учебная программа / Московский государственный университет экономики, статистики и информатики. – М., 2004. с. 10 ↑
-
Симонович С.В. Базовый курс: Учебник для вузов. 3-е пзд. Стандарт третьего поколения. - Спб.:Питер, 2011. с 578. ↑
-
А.А. Тюгашев. Основы программирования. Часть I. – СПб: Университет ИТМО, 2016. – 1 Режим доступа :https://books.ifmo.ru/file/pdf/1917.pdf Дата обращения 06.07.2020 с. 10 ↑
-
Лекции по операционным системам (общий курс): учебное пособие / Е.М. Карчевский, О.В. Панкратова — Казань: Казан. ун-т, 2011. с. 14 ↑
-
Парадигма программирования : курс лекций / Л. В. Городняя ; Новосиб. гос. ун-т. – Новосибирск : РИЦ НГУ, 2015. с. 5 ↑
-
Молдованова О.В. Языки программирования и методы трансляции: Учебное пособие. – Новосибирск/СибГУТИ, 2012. с. 5 ↑
-
Опалева Э.А., Самойленко В.П. Языки программирования и методы трансляцииСпб.: БХВПетербург, 2005. с.17 ↑ -
Орлов С. Теория и практика языков программирования: Учебник для вузов. 2-Ее изд. Стандарт 3-го поколения. -Спб. Питер, 2017. с. 65: ↑
-
Гниденко И.Г., Соколовская С.А. Информатика, 2-е изд. - Спб..: Издательский дом «Нева», 2003. с. 94 ↑
-
Перова В.И., Сабаева Т.А., Чекмарев Д.Т. РАЗРАБОТКА АЛГОРИТМОВ ДЛЯ РЕШЕНИЯ ЗАДАЧ НА ЭВМ: Учебное пособие. – Нижний Новгород: Нижегородский госуниверситет, 2015. Режим доступа:http://www.lib.unn.ru/students/src/RACV.pdf с. 32 ↑
-
Информатика :Учебник для 6 класса / Л.Л. Босова, А.Ю. Босова. - М.: БИНОМ. Лаборатория знаний, 2013. с. 111 ↑
-
Могилев, А. Информация и информационные процессы. Социальная информатика] / Л. Листрова, А. Могилев .— СПб. : БХВ-Петербург, 2006 с. 98 ↑
-
Босова Л. Л., Босова А. Ю., Информатика: учебник для 6 класса. М. : БИНОМ. Лаборатория знаний, 114 с. ↑
-
Хиценко В.П. Основы программирования: учебное пособие /В.П. Хиценко. - Новосибирск: Изд-во НГТУ, 2015 с.19 ↑
-
Потопахин В.В. Язык C. Освой на примерах.
Спб.: БХВПетербург, 2006. с.77 ↑ -
Сети и телекоммуникации : учебник и практикум для СПО / Под ред. К.Е. Самуйлова, И.А. Шалимова, Д.С. Кулябова. - М.: Издательство Юрайт, 2019. с.298 ↑
-
Кернинган, Брайан У,, Ритчи, Деннис М. Язык программирования С, 2-е издание.: Пер с англ. - М.: Издательский дом «Вильямс», 2007. с. 71 ↑
-
Шилдт, Герберт, Полный справочник по С, 4-е издание. : Пер. С англ. - М.: Издательский дом «Вильямс», 2007. с.83 ↑
-
Кочан, Стефан. Программирование на языке С, 3-е издание.: Пер. с. англ. -М.: ООО «И.Д. Вильямс» 2006. с.81 ↑
-
Прата,Ствиен. Язык программирования С++. Лекции и упражнения, 5-е изд.: Пер. С англ.-М.: ООО «И.Д. Вильямс», 2007. с.259 ↑
-
Довбуш, Г.Ф. Visual C++ на примерах/ Г.Ф. Довбуш, А.Д. Хомоненко/ Под ред проф. А.Д.Хомоненко. - Спб.:БХВ-Петербург, 2007. с.39 ↑
-
Орлов С. Теория и практика языков программирования: Учебник для вузов. 2-е изд. Стандарт 3-го поколения. -Спб.: Питер, 2017. с. 137 ↑
-
Пахомов Б.И. и MS visual c++ 2010 для начинающих.
СПБ.: БХВпетербург. 2011. c.38 ↑ -
Большая школьная энциклопедия, Т.1. Естественные науки( автор-составитель С. Исмаилова).-М.:Русское энциклопедическое товарищество, 2003. с.693 ↑
-
Дейл Н., Уима Ч., Хедингтон М. Программирование на С++: Пер. С англ. - М.: ДМК Пресс. с. 198 ↑
-
Программирование на языке Си: учеб. Пособие / Р.Ю. Царев. - Красноярск: Сиб. Федер. Ун-т, 2014. с.11 ↑
-
Прохоренок Н.А. Язык С. Самое необходимое.
СПБ,: БХВПетербург, 2020. с. 212 ↑ -
Герберт Шилдт C++: Руководство для начинающих, 2-е издание. : Пер.с англ. - М.: Издательский дом «Вильямс», 2005. с 46 ↑