- •Н.В. Галина, и.Е. Белоцерковская, л.Ю. Катаева
- •Оглавление
- •Введение
- •Глава 1 Устройство и принципы работы персонального компьютера. Основы работы с ос Windows
- •1.1 Устройство и принципы работы персонального компьютера
- •1.2 Назначение блоков и их краткая характеристика
- •1.3 Программное обеспечение персонального компьютера
- •Глава 2 Понятие алгоритма. Виды алгоритмов
- •1. Линейный алгоритм,
- •2. Разветвляющийся алгоритм,
- •3. Циклический алгоритм.
- •Глава 3 Понятие блок-схемы. Основные типы блоков. Реализация основных алгоритмов
- •3.1 Понятие блок-схемы
- •3.2 Линейный алгоритм
- •3.3 Разветвляющийся алгоритм
- •3.4 Циклический алгоритм
- •4.2 Начало работы в приложении Visual Studio
- •Глава 5 Графическая и программная реализации алгоритмов
- •5.1 Реализация линейного алгоритма
- •5.2 Реализация разветвляющегося алгоритма
- •5.3 Реализация циклического алгоритма
- •5.4 Исследование таблицы значений функции
- •Глава 6 Понятие массива. Одномерные и двумерные массивы
- •6.1 Одномерные массивы
- •6.2 Двумерные массивы
- •6.3 Исследование двумерного массива
- •Глава 7 Задания и варианты для лабораторных работ. Методические указания
- •7.1 Задания и варианты для лабораторных работ
- •7.2 Методические указания и примеры выполнения лабораторных работ
- •Литература
- •Галина Наталья Владимировна Белоцерковская Ирина Ефимовна Катаева Лилия Юрьевна
- •603950, Г. Нижний Новгород, ул. Минина, 24.
3.4 Циклический алгоритм
В рассмотрении циклического алгоритма следует выделить несколько понятий.
Тело цикла – это набор инструкций, предназначенный для многократного выполнения.
Итерация – это единичное выполнение тела цикла.
Переменная цикла – это величина, изменяющаяся на каждой итерации цикла.
Каждый цикл должен содержать следующие необходимые элементы:
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.
|
Расчеты: Начало a=2 b=7 S=a+b={подставляем значения a и b}= =2+7=9 R=a-b={подставляем значения a и b}= =2-7=-5 Выводим на экран S=9, R=-5:
Конец. |
Рис. 3.18 Блок-схема
Выполнение блок-схемы для Примера 3.6 представлены на рис. 3.19.
Даны числа a=2, b=7. Вычислить сумму S и разность R чисел a и b. Сравнить полученные значения S и R и указать большее из них.
|
Расчеты: Начало a=2 b=7 S=a+b=2+7=9 R=a-b=2-7=-5 Выводим на экран S=9, R=-5:
S>R 9>-5 да, верно Выводим на экран «Max S»:
Конец. |
Рис. 3.19 Блок-схема
Выполнение блок-схемы для Примера 3.9 представлено на рис. 3.20.
Даны числа a, b. Известно, что число а меняется от -10 до 10 с шагом 5, b=7 и не изменяется. Вычислить сумму S и разность R чисел a и b для всех значений a и b.
Блок-схема с предусловием представлена на рис. 3.20.
Рис. 3.20 Блок-схема
Расчеты:
Начало b=7 a=-10 a≤10 -10≤10 да, верно S=a+b=-10+7=-3 R=a-b=-10-7=-17
a=a+5=-10+5=-5 {Идем по стрелке вверх} a≤10 -5≤10 да, верно S=a+b=-5+7=2 R=a-b=-5-7=-12
|
a=a+5=-5+5=0 {Идем по стрелке вверх} a≤10 0≤10 да, верно S=a+b=0+7=7 R=a-b=0-7=-7
a=a+5=0+5=5 {Идем по стрелке вверх} a≤10 5≤10 да, верно S=a+b=5+7=12 R=a-b=5-7=-2
a=a+5=5+5=10 {Идем по стрелке вверх} a≤10 10≤10 да, верно S=a+b=10+7=17 R=a-b=10-7=3
a=a+5=10+5=15 {Идем по стрелке вверх} a≤10 15≤10 нет, ложно {выходим из цикла} Конец. |
Блок-схема с постусловием представлена на рис. 3.21:
Рис. 3.21 Блок-схема
Расчеты:
Начало b=7 a=-10 S=a+b=-10+7=-3 R=a-b=-10-7=-17
a=a+5=-10+5=-5 a≤10 -5≤10 да, верно {Идем по стрелке вверх} S=a+b=-5+7=2 R=a-b=-5-7=-12
|
a=a+5=-5+5=0 a≤10 0≤10 да, верно {Идем по стрелке вверх} S=a+b=0+7=7 R=a-b=0-7=-7
a=a+5=0+5=5 a≤10 5≤10 да, верно {Идем по стрелке вверх} S=a+b=5+7=12 R=a-b=5-7=-2
a=a+5=5+5=10 a≤10 10≤10 да, верно {Идем по стрелке вверх} S=a+b=10+7=17 R=a-b=10-7=3
a=a+5=10+5=15 a≤10 15≤10 нет, ложно {выходим из цикла} Конец. |
Выполнение блок-схемы для Примера 3.9 на рис. 3.22.
Даны числа a, b (см. Пример 3.3, 3.6). Известно, что число а меняется от -10 до 10 с шагом 5, b=7 и не изменяется. Вычислить сумму S и разность R и сравнить полученные значения суммы и разности для всех значений a и b.
Блок-схема с предусловием представлена на рис. 3.22.
Рис. 3.22 Блок-схема
Расчеты:
Начало b=7 a=-10 a≤10 -10≤10 да, верно S=a+b=-10+7=-3 R=a-b=-10-7=-17
S>R 12>-2 да, верно
a=a+5=5+5=10 {Идем по стрелке вверх} a≤10 10≤10 да, верно S=a+b=10+7=17 R=a-b=10-7=3
|
S>R -3>-17 да, верно
a=a+5=-10+5=-5 {Идем по стрелке вверх} a≤10 -5≤10 да, верно S=a+b=-5+7=2 R=a-b=-5-7=-12
S>R 2>-12 да, верно
a=a+5=-5+5=0 {Идем по стрелке вверх} a≤10 0≤10 да, верно S=a+b=0+7=7 R=a-b=0-7=-7
S>R 7>-7 да, верно
a=a+5=0+5=5 a≤10 5≤10 да, верно {Идем по стрелке вверх} S=a+b=5+7=12 R=a-b=5-7=-2
S>R 17>3 да, верно
a=a+5=10+5=15 {Идем по стрелке вверх} a≤10 15≤10 нет, ложно {выходим из цикла} Конец. |
Глава 4 Основы программирования на языке С++. Принципы работы в приложениях Borland C++, Microsoft Visual Studio
4.1 Основы программирования на языке С++
Программа – это реализация алгоритма для выполнения задачи компьютером (ЭВМ).
С помощью программы мы формулируем алгоритм на языке, понятном компьютеру. Таким языком служит язык программирования.
На сегодняшний день распространенными языками программирования являются: С, С++, Pascal, Basic, Fortran и т.д.
Язык программирования С++ является одним из самых востребованных на сегодняшний день.
На языке С++ можно составлять программы для инженерных расчетов, также можно строить проекты, имеющие пользовательский интерфейс.
Существует несколько приложений для написания программ на языке С++. Мы будем рассматривать Microsoft Visual Studio и Borland C++.
В языке программирования С++ определены некоторые стандартные типы данных.
Ключевое слово типа данных |
Значение |
Int |
целый тип, размер типа int не определяется стандартом, а зависит от компьютера и компилятора, для 16-разрядного процессора под величины этого типа отводится 2 байта, для 32-разрядного — 4 байта. Примеры значений типа int: 5, 0, -1, 100. |
Double |
вещественный тип с двойной точностью. Типы данных с плавающей точкой хранятся в памяти компьютера иначе, чем целочисленные. Внутреннее представление вещественного числа состоит из двух частей — мантиссы и порядка. Мантисса — это число, большее 1.0, но меньшее 2.0. Для величин типа double, занимающих 8 байт, под порядок и мантиссу отводится 11 и 52 разряда соответственно. Длина мантиссы определяет точность числа, а длина порядка — его диапазон. Примеры значений типа double: 5.134, -0.00001, 2.9987. |
Float |
вещественный тип. В компьютерах величины типа float занимают 4 байта, из которых один двоичный разряд отводится под знак мантиссы, 8 разрядов под порядок и 23 под мантиссу. Тип float имеет меньшую точность, чем double. В большинстве случаев лучше использовать double. |
Char |
символьный тип, под величину символьного типа отводится количество байт, достаточное для размещения любого символа из набора символов для данного компьютера, что и обусловило название типа. Как правило, это 1 байт. Каждый символ имеет свой собственный целочисленный код, согласно таблице ASCII (англ. American Standard Code for Information Interchange). Примеры значений типа char: ‘A’ (код 65), ‘7’ (код 55), ‘-’ (код 189), ‘/’ (код 191). |
fstream, ifstream, ofstream |
файловый поток. Используется для вывода данных в файл и считывания данных из файла. |
Программа на языке С++ имеет определенную структуру.
Существует определенная последовательность заранее определенных строк кода.
#include “stdafx.h” |
подключение заголовочного файла для сборки проекта. Обязательный пункт в Visual Studio, в среде Borland C++ не используется. |
#include <название_библиотеки> |
подключение библиотек. Необязательный пункт. Подробно о библиотеках смотреть ниже.
|
using namespace std; |
использование пространства имен. Обязательный пункт в Visual Studio, в среде Borland C++ не используется.
|
int main(){ или void main(){ |
главная функция программы. Именно она начинает выполняться, когда запускается программа. Обязательный пункт.
|
Тело_функции_main |
в теле функции main записываются действия и операции, предусмотренные алгоритмом. Обязательный пункт.
|
return 0;} или } |
конец программы. Самый последний оператор. Обязательный пункт. |
Библиотека – это файл, в котором описаны функции и операторы. Для каждой группы функций своя библиотека. Библиотек в языке 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++. Библиотека математических функций.
Математическая функция |
Программная запись |
Описание |
|
fabs(x) |
Модуль числа. |
|
sin(x) |
Синус числа, аргумент в радианах. |
|
cos(x) |
Косинус числа, аргумент в радианах. |
|
tan(x) |
Тангенс числа, аргумент в радианах. |
|
exp(x) |
Экспонента числа. |
|
log(x) |
Натуральный логарифм числа. |
|
log10(x) |
Десятичный логарифм числа. |
|
pow(x, y) |
х в степени y. |
|
pow10(x) |
Степень десяти. |
|
sqrt(x) |
Квадратный корень из числа. |
|
asin(x) |
Арксинус числа, в радианах. |
|
acos(x) |
Арккосинус числа, в радианах. |
|
atan(x) |
Арктангенс числа, в радианах. |
π |
M_PI |
Число π=3.141593 |
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. использовать далее в программе в расчетах или при выводе на экран.
Для числовых переменных определены простейшие арифметические операции. Для их использования не нужно подключать библиотеку.
Операция в С++ |
Описание |
Пример в программе |
= |
присвоение |
х=0.4; |
+ |
сложение |
х=8+3; y=x+7.9; |
- |
вычитание |
x=8-3; y=x-7.9; |
* |
умножение |
x=4*2.5; y=x*4; |
/ |
деление Результатом деления целых чисел является целое число. |
x=7.5/3.2; y=x/2.6; z=1/3; //z=0 (округление до целого, т.к. делятся целые числа) z=1.0/3.0; //z=0.333(3) |
Для сравнения переменных и чисел используются встроенные знаки сравнения. Для их использования не нужно подключать библиотеку.
Сравнение в С++ |
Описание |
Пример в программе |
> |
больше чем |
x>0 |
< |
меньше чем |
y<z |
>= |
больше или равно |
y>=x |
<= |
меньше или равно |
z<=8.56 |
== |
проверка на равенство |
x==0.7 |
!= |
не равно |
x!=y |
&& |
логическое И |
x>0 && x<1 // двойное неравенство 0<x<1 |
|| |
логическое ИЛИ |
s<8 || s>10 |
Для реализации разветвляющегося алгоритма в С++ используется условный оператор if. Приведем общий вид блок-схем рис. 4.1, рис. 4.2 и общий вид записи оператора if:
Рис. 4.1 Блок-схема разветвляющегося алгоритма |
if (условие) { Набор_действий_1; } else { Набор_действий_2; }
|
Рис. 4.2 Блок-схема разветвляющегося алгоритма |
if (условие) { Набор_действий_1; } |
Примечание. Если необходимо выполнить не набор действий, а всего одно действие, то фигурные скобки можно опустить.
Для реализации циклического алгоритма с предусловием в С++ предусмотрено два оператора while и for. По одной и той же блок-схеме с предусловием можно написать две программы, одну – с оператором while, другую – с оператором for. Оператор while удобно использовать, если неопределенно, сколько итераций нужно сделать, или это трудно сделать. Оператор for удобно использовать, когда мы заранее знаем количество итераций.
Приведем общий вид блок-схем и общий вид записи операторов while и for рис. 4.3:
Рис. 4.3 Блок схема операторов while и for |
Оператор while: x=xn; while(x<=xk){ Тело_цикла; x=x+hx; } |
Оператор for: for(x=xn; x<=xk; x=x+hx){ Тело_цикла; } |
Для реализации циклического алгоритма с постусловием в С++ предусмотрен оператор do while. Блок-схема рис. 4.4 и запись оператора do while в общем виде:
Рис. 4.4 Блок схема циклического алгоритма с постусловием |
Оператор do while: x=xn; do{ Тело_цикла; x=x+hx; } while(x<=xk); |
Существует ряд задач, где изменяется сразу две переменные. Тогда используют вложенные циклы. Внутри одного цикла (внешнего) организуют другой цикл (внутренний).
Для ясности будем делать внешний цикл по переменной х, а внутренний – по переменной у. Обозначим переменные: xn – начальное значение x, xk – конечное значение х, hx – шаг по переменной х, yn – начальное значение у, yk – конечное значение у, hy – шаг по переменной у. Приведем блок-схему на рис. 4.5 и вид записи операторов цикла с предусловием:
Рис. 4.5 Блок-схема вложенного цикла с предусловием |
Оператор while: x=xn; while (x<=xk){ y=yn; while (y<=yk){ Тело_цикла; y=y+hy; } x=x+hx; } |
Оператор for: for (x=xn; x<=xk; x=x+hx){ for(y=yn; y<=yk; y=y+hy){ Тело_цикла; } } |
Общий вид записи циклов с постусловием и блок-схема с постусловием приведена на рис. 4.6.
Рис. 4.6 Блок-схема вложенного цикла с постусловием |
Оператор do while: x=xn; do { y=yn; do { Тело_цикла; y=y+hy; } while (y<=yk); x=x+hx; } while (x<=xk); |
