КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Циклический алгоритм. В рассмотрении циклического алгоритма следует выделить несколько понятий
В рассмотрении циклического алгоритма следует выделить несколько понятий. Тело цикла – это набор инструкций, предназначенный для многократного выполнения. Итерация – это единичное выполнение тела цикла. Переменная цикла – это величина, изменяющаяся на каждой итерации цикла. Каждый цикл должен содержать следующие необходимые элементы: 1. первоначальное задание переменной цикла, 2. проверку условия, 3. выполнение тела цикла, 4. изменение переменной цикла. Циклы бывают двух видов – с предусловием и с постусловием. В цикле с предусловием сначала проверяется условие входа в цикл, а затем выполняется тело цикла, если условие верно. Цикл с предусловием представлен на рис. 3.10. Цикл с предусловием также может быть задан с помощью счетчика. Это удобно в тех случаях, когда точно известно количество итераций. В общем виде блок-схема, реализующая цикл с предусловием, представлена ниже. Сначала задается начальное значение переменной цикла, затем условие входа в цикл, тело цикла и изменение переменной цикла. Выход из цикла осуществляется в момент проверки условия входа в цикл, когда оно не выполняется, т.е. условие ложно. Цикл с предусловием может ни разу не выполниться, если при первой проверке условия входа в цикл оно оказывается ложным. Рис. 3.10 Циклический алгоритм с предусловием в общем виде В цикле с постусловием сначала выполняется тело цикла, а потом проверяется условие. Циклический алгоритм с постусловием представлен на рис. 3.11. Рис. 3.11 Циклический алгоритм с постусловием в общем виде Если условие верно, то итерация повторяется, если же неверно, то осуществляется выход из цикла. В отличие от цикла с предусловием, любой цикл с постусловием всегда выполнится хоть раз. Примечание. Как видно из представленных блок-схем для циклов с предусловием и постусловием, условие записывается внутри блока условия (формы ромба), как и в разветвляющемся алгоритме. Принципиальная разница между разветвляющимся и циклическим алгоритмами при графической реализации состоит в том, что в циклическом алгоритме в обязательном порядке присутствует стрелка, идущая наверх. Именно эта стрелка обеспечивает многократный повтор тела цикла. Приведем простейшие примеры, соответствующие циклическому алгоритму. Пример 3.7. Вася звонит Пете, но у Пети может быть занята линия (см. Примеры 3.1, 3.4). Составить блок-схему действий Васи в этом случае. Решение. Когда телефонная линия занята, то необходимо снова и снова набирать номер, пока Петя не закончит предыдущий разговор, и телефонная линия не окажется вновь свободной. Результат блок схемы представлен на рис. 3.12. Рис. 3.12 Блок-схема для примера 3.7 Здесь тело цикла состоит из одного действия «Набрать номер Пети», т.к. именно это действие следует повторять, пока линия будет занята. Под итерацией цикла понимается очередная попытка дозвониться до Пети. Как таковой переменной цикла здесь нет, т.к. ситуация взята из жизни. Выход из цикла происходит в тот момент, когда условие «У Пети занята линия» стало неверным, т.е. телефонная линия свободна – действительно, нет необходимости больше набирать номер Пети. В данном примере применен цикл с постусловием, т.к. сначала необходимо набрать номер Пети, ведь иначе мы не можем ответить на вопрос – занята ли линия у Пети. Пример 3.8. Ученику требуется купить учебник (см. Примеры 3.2, 3.5). Составить блок-схему, описывающую действия ученика в случае, если учебника нет в ряде магазинов. Решение. Действия ученика в данном примере очевидны: когда он приходит в первый любой последующий магазины, то возможны два варианта – учебник имеется в наличие или учебника нет в продаже. Если учебника нет в продаже, то ученику следует пойти в другой книжный магазин и спросить данный учебник, и т.д. пока учебник не будет куплен, т.к. перед учеником стоит конечная цель – купить учебник. Мы будем использовать цикл с предусловием, т.к. сначала требуется найти магазин, имеющий в наличии данный учебник. Цикл будет выполняться, пока условие «В данном магазине нет учебника» будет верным, а выход из цикла осуществится, когда условие станет ложным, т.е. когда ученик придет в магазин, в котором есть данный учебник. Действительно, в этом случае ученик купит нужный ему учебник и не будет больше искать книжные магазины. Результат блок схемы представлен на рис. 3.13. Рис. 3.13 Блок-схема для примера 3.8 Здесь тело цикла состоит из одного действия «Найти другой книжный магазин». Переменной цикла в явном виде нет, но можно подразумевать номер магазина, в который пришел ученик в очередной раз. Как любой другой цикл с предусловием, данный цикл может ни разу не выполниться (не иметь итераций), если в первом же магазине окажется нужный учебник. Примечание. Если в данную задачу добавить условие выбора учебника в жесткой или мягкой обложке, как в примере 3.5, то оно появится после выхода из цикла. На реализацию циклического алгоритма данное условие не повлияет. Пример 3.9. Даны числа a, b (см. Примеры 3.3, 3.6). Известно, что число а меняется от -10 до 10 с шагом 5, b =7 и не изменяется. Вычислить сумму S и разность R чисел a и b для всех значений a и b. Решение. В отличие от Примеров 3.3 и 3.6 здесь число а меняется от -10 до 10 с шагом 5. Это означает, что число а является переменной цикла. Сначала а равно -10 – это первоначальное задание переменной цикла. Далее а будет изменяться с шагом 5, и т.д. пока не будет достигнуто значение 10 – это соответствует изменению переменной цикла. Итерации надо повторять, пока выполняется условие «а ≤10». Итак, а будет принимать следующие значения: -10, -5, 0, 5, 10. Число b не будет являться переменной цикла, т.к. b =7 и не изменяется по условию задачи. Результат блок схемы (с предусловием) представлен на рис. 3.14. Рис. 3.14 Блок-схема для примера 3.9 (с предусловием) Тело цикла состоит из нескольких действий: вычисление суммы, вычисление разности и вывод полученных данных на экран. Таким образом, у нас получится несколько значений сумм и разностей, т.к. а изменяется. Количество сумм и количество разностей совпадет с количеством различных значений а, т.е. пять. Данная задача может быть сделана и с циклом с предусловием, и с постусловием. В этом случае тело цикла, условие и изменение переменной цикла будут такими же, как и в цикле с предусловием, но сначала необходимо выполнить тело цикла, а потом проверить условие для выполнения следующей итерации. Приведем блок-схему, использующую цикл с постусловием рис. 3.15. Рис. 3.15 Блок-схема для примера 3.9 (с постусловием) В данной задаче также могут быть соединены циклический и разветвляющийся алгоритмы, если по условию задачи требуется сравнить полученные значения суммы и разности, как в примере 3.6. В этом случае цикл можно реализовать как с предусловием, так и с постусловием, а сравнение суммы и разности добавится внутрь тела цикла, т.к. следует сравнить между собой все полученные суммы и разности. Организация самого цикла останется прежней. Приведем блок-схемы с предусловием и с постусловием рис. 3.16 и рис. 3.17. Рис. 3.16 Блок-схема с предусловием Рис. 3.17 Блок-схема с постусловием Примечание. Заметим, что при составлении блок-схемы мы не можем знать конечного результата, т.к. он получается только при выполнении блок-схемы. Приведем пример выполнения блок-схемы с предусловием для Примеров 3.3, 3.6 и 3.9. Для выполнения нам понадобится поле для расчетов (аналог «оперативной памяти») и поле для вывода результата (аналог экрана для вывода данных). Экран будем показывать несколько раз в зависимости от вывода новых данных на экране. Выполнение блок-схемы для Примера 3.3 представлено на рис.3.18. Даны числа a =2, b =7. Вычислить сумму S и разность R чисел a и b.
Рис. 3.18 Блок-схема Выполнение блок-схемы для Примера 3.6 представлены на рис. 3.19. Даны числа a =2, b =7. Вычислить сумму S и разность R чисел a и b. Сравнить полученные значения S и R и указать большее из них.
Рис. 3.19 Блок-схема Выполнение блок-схемы для Примера 3.9 представлено на рис. 3.20. Даны числа a, b. Известно, что число а меняется от -10 до 10 с шагом 5, b =7 и не изменяется. Вычислить сумму S и разность R чисел a и b для всех значений a и b. Блок-схема с предусловием представлена на рис. 3.20.
Блок-схема с постусловием представлена на рис. 3.21:
Выполнение блок-схемы для Примера 3.9 на рис. 3.22. Даны числа a, b (см. Пример 3.3, 3.6). Известно, что число а меняется от -10 до 10 с шагом 5, b =7 и не изменяется. Вычислить сумму S и разность R и сравнить полученные значения суммы и разности для всех значений a и b. Блок-схема с предусловием представлена на рис. 3.22.
Глава 4 Основы программирования на языке С++. Принципы работы в приложениях Borland C++, Microsoft Visual Studio 4.1 Основы программирования на языке С++ Программа – это реализация алгоритма для выполнения задачи компьютером (ЭВМ). С помощью программы мы формулируем алгоритм на языке, понятном компьютеру. Таким языком служит язык программирования. На сегодняшний день распространенными языками программирования являются: С, С++, Pascal, Basic, Fortran и т.д. Язык программирования С++ является одним из самых востребованных на сегодняшний день. На языке С++ можно составлять программы для инженерных расчетов, также можно строить проекты, имеющие пользовательский интерфейс. Существует несколько приложений для написания программ на языке С++. Мы будем рассматривать Microsoft Visual Studio и Borland C++. В языке программирования С++ определены некоторые стандартные типы данных.
Программа на языке С++ имеет определенную структуру. Существует определенная последовательность заранее определенных строк кода.
Библиотека – это файл, в котором описаны функции и операторы. Для каждой группы функций своя библиотека. Библиотек в языке C++ предусмотрено много, мы будем рассматривать только самые необходимые. Нам понадобятся функции для работы с экраном, математические функции. Основные библиотеки и их основные функции и операторы: 1. <iostream> для Visual Studio, <iostream.h> для Borland C++. Библиотека для работы с консолью (экраном). cout – оператор вывода данных на экран. Пример использования: cout<<”fraza”; //выведет на экран слово fraza. Может вывести любой текст. cout<<x; //выведет на экран число, хранящееся в переменной х. cin – оператор считывания с экрана. Когда у пользователя запрашивают число, программа ждет, пока пользователь не напечатает число и нажмет ENTER. Тогда оператор cin записывает это значение в переменную х. Пример использования: cin>>x; //присваивает переменной х значение, введенное с клавиатуры. cin>>x>>y; //присваивает переменной х первое введенное с клавиатуры значение, переменной у – второе. endl – оператор перевода каретки на экране на следующую строку. Самостоятельно не используется. Пример использования: cout<<endl; //курсор перейдет на новую строку. cout<<x<<endl; //сначала на экране появится число, хранящееся в переменной х, потом перейдет на новую строку. Выводимые далее данные будут печататься с новой строки. cout<<endl<<”fraza”; // курсор перейдет на новую строку, и на новой строке появится надпись fraza. precision(n) – функция для отображения на экране дробных чисел с n цифрами после запятой. Пример использования: cout.precision(3); //число 7.897426 выведется на экран в виде 7.897. 2. <math.h> одинаково для Visual Studio, Borland C++. Библиотека математических функций.
3. <iomanip> для Visual Studio, <iomanip.h> для Borland C++. setw(n) – для вывода на экран отводится n ячеек. Используется при построении ровной таблицы значений функции. Пример использования: cout<<setw(5)<<x<<setw(5)<<y<<endl; На экране выведутся два числа: первое (1.5) в первых пяти ячейках, второе (-73) во вторых пяти ячейках. _ _ 1. 5 _ _ - 7 3. В программах используются переменные. Имя переменной выбирает составитель программы, имя переменной должно начинаться с буквы латинского алфавита и может содержать буквы латинского алфавита, цифры и символы подчеркивания. Заглавные и строчные буквы считаются разными. Примеры имен переменных: х, y, summa, s1, srednee_ar и т.д. Имена переменных не должны совпадать с ключевыми словами языка С++. Чтобы использовать в программе переменную, необходимо: 1. объявить переменную в начале программе, явно указав тип данных для переменной. Пример: double x; //вещественная переменная х. int m; //целочисленная переменная m. Если переменная не будет объявлена, но будет использоваться далее в программе, то программа не запустится, компилятор выдаст ошибку. 2. проинициализировать переменную, т.е. задать переменной значение. Пример: x=7.81; m=4; z=x+m; Если переменная не будет проинициализирована, то компилятор не выдаст ошибки, но расчеты будут выполнены неверно. 3. использовать далее в программе в расчетах или при выводе на экран. Для числовых переменных определены простейшие арифметические операции. Для их использования не нужно подключать библиотеку.
Для сравнения переменных и чисел используются встроенные знаки сравнения. Для их использования не нужно подключать библиотеку.
Для реализации разветвляющегося алгоритма в С++ используется условный оператор if. Приведем общий вид блок-схем рис. 4.1, рис. 4.2 и общий вид записи оператора if:
Примечание. Если необходимо выполнить не набор действий, а всего одно действие, то фигурные скобки можно опустить. Для реализации циклического алгоритма с предусловием в С++ предусмотрено два оператора while и for. По одной и той же блок-схеме с предусловием можно написать две программы, одну – с оператором while, другую – с оператором for. Оператор while удобно использовать, если неопределенно, сколько итераций нужно сделать, или это трудно сделать. Оператор for удобно использовать, когда мы заранее знаем количество итераций. Приведем общий вид блок-схем и общий вид записи операторов while и for рис. 4.3:
Для реализации циклического алгоритма с постусловием в С++ предусмотрен оператор do while. Блок-схема рис. 4.4 и запись оператора do while в общем виде:
Существует ряд задач, где изменяется сразу две переменные. Тогда используют вложенные циклы. Внутри одного цикла (внешнего) организуют другой цикл (внутренний). Для ясности будем делать внешний цикл по переменной х, а внутренний – по переменной у. Обозначим переменные: xn – начальное значение x, xk – конечное значение х, hx – шаг по переменной х, yn – начальное значение у, yk – конечное значение у, hy – шаг по переменной у. Приведем блок-схему на рис. 4.5 и вид записи операторов цикла с предусловием:
Общий вид записи циклов с постусловием и блок-схема с постусловием приведена на рис. 4.6.
Дата добавления: 2017-01-13; Просмотров: 3256; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |