Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

5 Основы программирования 2012

.pdf
Скачиваний:
35
Добавлен:
29.02.2016
Размер:
448.12 Кб
Скачать

11

Для консольного ввода данных в С используются следующие функции Таблица 5.11 Функции ввода данных conio.h

Функция

 

 

Описание

getchar()

Читает символ с

клавиатуры до нажатия Enter

getche()

Читает один символ с

клавиатуры с эхом без Enter

getch()

Читает один символ с

клавиатуры без эха и без Enter

gets()

Читает строку с

клавиатуры

 

 

 

 

Scanf()

Форматированный

ввод

данных с консоли

Функция getchar используется для ввода символа с клавиатуры. После набора символа на клавиатуре он отражается на экране (ввод с эхом), подтвердить ввод нужно нажатием клавиши Enter.

Таблица 5.12 Функции вывода данных conio.h

Функция

 

 

 

Описание

putchar()

Вывод

символа на экран

puts()

Вывод

строки на

экран

 

printf()

Форматированный

вывод

данных на экран

 

 

 

 

 

Основной функцией вывода в С является printf, а чтения данных scanf. Эти функции имеют следующий формат

printf(―форматная строка‖, данные); scanf(форматная строка‖,&переменные);

В форматной строке указываются следующие спецификаторы данных, которые определяют формат ввода-вывода конкретных данных

Таблица

5.13 Спецификаторы формата данных

 

 

Спецификатор

Описание

%c

Символ

 

 

%d

Знаковое десятичное целое число

%I

Знаковое десятичное целое число

%e

Действительное число в научной нотации (е строчное)

%E

Действительное число в научной нотации (E прописное)

%f

Десятичное действительное число с плавающей точкой

%g

Более короткое представление %e и %f

%G

Более короткое представление %E и %F

%o

Беззнаковое восьмеричное число

%s

Строка символов

 

 

%u

Беззнаковое целое десятичное число

%x

Беззнаковое шестнадцатеричное число строчными символами

%X

Беззнаковое шестнадцатеричное число прописными символами

 

 

%p

Вывод указателя

%%

Вывод знака процентов %

%[]

Сканирует множество символов

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

Модификатор минимума длинны поля указывается для чисел в виде цифры сразу за символом %. Пример:

%8d минимальная ширина поля 8 символов с заполнением пустых позиций пробелами;

%05i минимальная ширина поля 5 с заполнением пустых позиций нулями Модификатор точности указывается для вещественных чисел (%e, %f, %E) в

формате %общая_длинна.символы_дробной_части, например

%10.4f

Модификатор вывода по левому краю при более короткой длине данных выполняется с помощью указания символа -. Например %-20d

Модификаторы l и h используются для работы с длинными и короткими целыми при модификаторах d, i, o, u и x. А так же l для e, f и g.

12

 

Спецификаторы * могут использоваться для

задания минимальной ширины поля

и точности с помощью изменяемых данных

 

―%*.*f, длина_поля, длинна_дробной части, вещественное_число

Спецификаторы # (диез) перед g, G, f,

Е обеспечивает наличие точки в

конце целой части при отсутствии дробной части.

 

5.8.2 Ввод – вывод в языке программирования С++

ВС++ для обмена данными с консолью используется два стандартных потока:

1)cin поток ввода данных с клавиатуру в программу;

2)cout поток вывода данных из программы на экран.

Для передачи данных в эти потоки используются два оператора << и >>. С помощью первого передаются данных на поток cout, второй читает данные из cin.

При вводе данных используется следующий формат

cin >> <Данные1> >> <Данные2> >> >> <Данные N>;

При выводе данных на консоль

cout << <Данные1> << <Данные2> << << <Данные N>;

Для форматированного вывода в С++ используются встроенные функции потока cout и манипуляторы модуля iomanip.

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

поток.функция(параметры);

Таблица 5.14 Встроенные функции потока cout

Функция

Описание

 

width(int x)

минимальное число знаков до следующего вывода

 

fill(char x)

устанавливает символ-заполнитель и возвращает

предыдущий

 

символ-заполнитель. По умолчанию в качестве символа-

 

заполнителя используется пробел

 

precision(int x)

устанавливает число значащих знаков для чисел

с плавающей

 

точкой

 

Пример:

 

 

 

int X=101, Y=2, Z=3;

// Объявление

переменных

cout.width(10);

//

задание ширины вывода данных в 10 позиций

cout << X << Y << Z;

//

Вывод трех

переменных

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

Таблица 5.15 Манипуляторы потоков модулей iostream.h и iomanip.h

Манипулятор

 

Описание

endl

перевод строки

 

flush

выгружает содержимое

буфера в поток

dec

меняет формат вывода

числа на десятичный

oct

меняет формат вывода

числа на восьмеричный

 

 

 

hex

меняет формат вывода

числа на шестнадцатеричный

ws

извлекает и удаляет символы пустых промежутков из потока

showpos

показывает '+' перед

неотрицательными числами

showpoint

показывает десятичную точку

 

 

noshowpoint

скрывает десятичную точку

setw(int w)

Задает минимальную ширину вывода

setprecision(int n)

Установка точности представления чисел с плавающей точкой

 

равной n разрядам

 

setfill(int code)

Установка кода символа-заполнителя

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

cout << setw(4) << i << setw(6) << j;

Это эквивалентно более широкой записи с использованием функций cout.width(4);

cout << i;

13

cout.width(6); cout << j;

5.8.3 Дополнительные функции консольного ввода-вывода

Функции текстового режима в консольном окне делятся на четыре группы:

1)вывода и манипулирование текстом;

2)управления окнами и режимом;

3)управления атрибутами;

4)запроса состояния.

Таблица 5.16 функции манипулирование текстом (и курсором) в окне консоли

Функция

Описание

сlreol

Стирание от курсора до конца строки.

clrscr

Стирание текстового окна консоли

 

 

delline

Удаление текущей строки курсора

gotoxy

Позиционирование курсора в нутрии окна консоли.

insline

Вставка пустой строки под текущей позицией курсора.

movetext

Копирование текста из одной области экрана на другую

По умолчанию программы консольного вывода работают с текстовым окном, без предварительных установок режима. После того, как текст выведен на экран, можно стереть активное окно при помощи clrscr, либо стереть часть строки от текущей позиции курсора при помощи clreol, либо удалить строку при помощи delline, либо вставить пустую строку при помощи insline. Три последние функции работают относительно текущей позиции курсора; перемещение курсора в желаемую позицию выполняется при помощи gotoxy. Можно скопировать целый блок текста из одной прямоугольной области в другую при помощи movetext.

5.9 Операторы программирования переходов

Данная группа операторов используется для программирования алгоритмов ветвления и выбора. В С и С++ имеется три условных оператора: if, switch и ?.

5.9.1 Условный оператор if

Синтаксис описания оператора условного перехода if имеет вид: if (выражение_условия) выражение_альтернативы_Да;

else выражение_альтернативы_Нет;

Два момента, на которые следует обратить внимание при использовании if: а) часть оператора else не является обязательной, допустимо использовать

оператор if в следующем виде:

if (выражение_условия) оператор_Да;

в этом случае оператор_Да выполняется тогда, когда выражение истинно, в противном случае пропускается <оператор_Да> и выполняется следующий оператор;

б) если необходимо выполнить более одного оператора, то следует использовать составной оператор.

Условие в операторе if должно быть заключено в круглые скобки.

5.9.2 Оператор выбора switch

Оператор switch производит сопоставление значения с множеством констант и передает управление на блок операторов, отметенных искомым значением. Пример:

switch (i)

// Проверка условия по значению переменной X

{

case 1:

cout << ―Один;

// Вывод сообщения

 

 

break;

// Окончание switch

 

case 2:

cout << ―Два;

// Вывод сообщения

 

 

break;

// Окончание switch

 

default:

cout << ―Другие числа; // Вывод сообщения

 

 

break;

// Окончание switch

}// Конец оператора switch

Операторы break применяются для выхода из оператора switch. Константы в вариантах case должны быть различными, и если проверяемое значение не совпадает ни с одной из констант, выбирается вариант default, не являющийся обязательным.

14

5.9.3 Оператор ?

В С имеется компактное представление логического перехода, которое используется вместо конструкции if-else – оператор ?. Синтаксис оператора следующий:

<выражение_условия>? <выражение_ДА>:<выражение_НЕТ>;

Сначала вычисляется выражение условия. Если оно истинно, то выполняется выражение_ДА, если не выполняется – выражение_НЕТ.

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

#include <iostream.h> #include <conio.h> int X,Y;

int main()

{cout << "\nВведите X и Y"; cin >> X >> Y;

if(X>Y) cout << "\nX>Y"; else cout << "\nX<=Y";

getch(); return 0;

}

с использованием оператора ? #include <iostream.h> #include <conio.h>

int X,Y; int main()

{cout << "\nВведите X и Y"; cin >> X >> Y;

(X>Y)? cout << "\nX>Y": cout << "\nX<=Y"; getch();

return 0;

}

5.9.4 Операторы безусловного перехода.

Операторы безусловного перехода производят изменение управления в программе без задания условия.

5.9.4.1 Оператор break

Оператор break можно использовать только внутри операторов циклов (while, do и for) или с оператором switch. Он прекращает выполнение итерации или оператора switch. Поскольку операторы циклов и оператор switch могут комбинироваться и иметь любую глубину вложенности, следует обращать особое внимание на то, чтобы оператор break выполнял выход именно из нужного цикла или оператора switch. Оператор break заканчивает выполнение ближайшего к нему объемлющего цикла итерации или оператора switch.

5.9.4.2 Оператор continue

Оператор continue может быть использован только внутри оператора цикла; он передает управление на проверку условия циклов while и do, либо на выражение инкремента цикла for. При вложенности циклов итерации оператор continue считается принадлежащим ближайшей объемлющей итерации.

5.9.4.3 Оператор goto Синтаксис оператора следующий: goto метка;

Оператор goto передает управление оператору, имеющему указанную "метку", которая должна находиться в пределах операторной части этой же функции. В С++ допустимо обойти объявление с явным или неявным инициализатором, если это объявление не находится во внутреннем блоке, который также обходится.

5.9.4.4 Оператор return

Если тип возврата функции не равен void, то тело функции должно содержать как минимум один оператор return следующего формата:

return выражение-возврата;

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

15

оператор return отсутствует, то выполнение "проваливается" к последней закрывающей фигурной скобке тела функции.

int main()

{...

return 0; // Возвращение кода отсутствия ошибок

}

5.9.5 Примеры программ с ветвящейся структурой

Пример программ расчета

значений переменных по формулам:

1)

переменной

условия

С = A3-B;

 

 

2)

переменной

решения

D

=

B∙A-C2

при

C<0

 

 

 

D

=

B∙A-C2

при

C≥0

Начало

 

Ввод A

 

 

 

 

 

 

 

Ввод B

 

 

 

 

 

 

 

 

 

Расчет C

 

 

 

 

 

Да

 

Нет

 

С<0

 

Ввод значения переменной A по запросу с клавиатуры

Ввод значения переменной B после запроса с клавиатуры

Расчет значения выражения переменной C

 

 

 

 

 

 

 

 

 

 

D=A*B-С2

 

 

D=С*B-A2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вывод значения переменной C

 

 

 

 

 

 

 

 

 

 

C

 

 

 

 

 

 

 

 

 

 

условия на экран

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вывод значения переменной D

 

 

 

 

 

 

 

 

 

 

D

 

 

 

 

 

 

 

 

 

 

результата на экран

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Конец

Рисунок 5.1 - Схема алгоритма программы решения задачи

На языке программирования

C++ программа решения имеет вид

#include <iostream.h>

 

// Подключение заголовочных файлов

#include <conio.h>

 

 

int main()

 

// Заголовок главной функции

{ float A, B, C, D;

 

// Описание локальных переменных

cout << "\nA=";

 

// Вывод запроса на ввод переменной А

cin >> A;

 

// Ввод с клавиатуры переменной А

cout << "\nB=";

 

// Вывод запроса на ввод переменной А

cin >> B;

 

// Ввод с клавиатуры переменной B

C = A*A*A-B;

 

// Расчет переменной С

if (C<0)

 

// Условие ветвления

 

D=B*A-C*С;

 

// Расчет при выполнении условия

else

D=C*A-B*B;

 

// Расчет при не выполнении условия

cout << "\nC = " << C;

// Вывод переменной условия С

cout << "\nD = "<<D;

 

// Вывод переменной результата

getch();

 

// Приостановка закрытия окна консоли

return 0;

 

// Возврат кода успешного завершения программы

}//-----------

Конец программы ----------------

Пример программы решения этой же задачи на языке С

#include <stdio.h>

//

Подключение заголовочных файлов

#include <conio.h>

 

 

void main(void)

 

// Заголовок главной функции

 

 

 

 

16

{ float A, B, C, D;

 

 

// Описание локальных переменных

printf("\nA=");

 

 

// Вывод запроса на ввод переменной А

scanf(―%f‖,&A);

 

 

// Ввод с клавиатуры переменной А

printf("\nB=");

 

 

// Вывод запроса на ввод переменной А

scanf(―%f‖,&B);

 

 

// Ввод с клавиатуры переменной B

C = A*A*A-B;

 

 

// Расчет переменной С

if (C<0)

 

 

// Условие ветвления

 

D=B*A-C*С;

 

 

// Расчет при выполнении условия

else D=C*A-B*B;

 

 

// Расчет при не выполнении условия

printf("\nC = %f",C);

 

// Вывод переменной условия С

printf("\nD = %f",D);

 

// Вывод переменной результата

getch();

 

 

// Приостановка закрытия окна консоли

}//----------- Конец программы ----------------

Пример

программы,

в которой вводятся три вещественных числа и

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

#include <iostream.h>

// модуль ввода-вывода С++

#include <conio.h>

 

// стандартный ввод-вывод С

double A,B,C, max;

 

// Глобальные переменные

int main()

 

// Определение главной функции

{ cout << "\nA=";

 

// ввод по запросу А

cin >> A;

 

 

 

cout << "\nB=";

 

// ввод по запросу B

cin >> B;

 

 

 

cout << "\nC=";

 

// ввод по запросу C

cin >> C;

 

 

 

if(A>B) { if(A>C)

max=A;

 

 

else

max=C;

 

 

}

 

 

 

else

{ if(B>C) max=B;

 

 

else

max=C;

 

 

}

 

 

 

cout << "\nmax=" << max;

// вывод результата на экран

getch();

 

 

// приостановка экранного вывода

return 0;

 

 

// код успешного завершения программы

}// ---------------

 

Конец программы

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

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

1)цикл с предусловием

2)цикл с постусловием;

3)цикл с заданным числом итераций.

5.10.1 Оператор цикла с предусловием while

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

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

while (условие)

 

{

тело_цикла

 

}

 

 

Следующее после while условие должно быть заключено в круглые скобки.

Выражение

условие вычисляется,

и если его значение не ноль (условие истинно),

то выполняется непосредственно

следующий за ним оператор. Это повторяется до

тех пор, пока вычисление условия не даст ноль (станет ложно).

5.10.2 Цикл с постусловием do .. while.

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

17

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

do { оператор; оператор;

...

оператор;

} while (условие продолжения цикла);

5.10.3 Оператор цикла for

Данный оператор используется для задания цикла с заранее определенными параметрами итераций. Формат описания цикла for:

for (начальная_инструкция; условие_выполнения_цикла; выражение_модификации )

{

операторы_тела_цикла;

}

 

Сначала выполняется начальная_инструкция, потом проверяется условие и если оно истинно, то выполняются инструкции, затем вычисляется выражение и управление передается в начало цикла с разницей что начальная_инструкция уже не выполняется. Например:

#include <iostream.h> int main()

{ for(int i = 0; i != 10; ++i) cout << i << endl;

return 0;

}

Пример вывода на экран десяти целых чисел, начиная с нуля: for (int i=0; i<10; i++) cout << i << ― ―;

Что эквивалентно int i = 0;

while (i<10) { cout << i << ― ―; i++; }

но более удобочитаемо, поскольку вся информация, управляющая циклом, локализована. Операция ++ к целой переменной i добавляет к ней единицу. Первая часть оператора for не обязательно должна быть описанием, она может быть любым оператором.

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

for(инициализация первого счетчика, инициализация второго счетчика; условие продолжения итераций;

 

 

изменение_счетчика_1,

изменение_счетчика_2) тело цикла;

 

 

Пример

задания вывода на экран двух переменных: i от 10 до 100 шагом 10 и

j от 1000

до

100 шагом 100,

пока i<j.

 

 

for(int i=10, int j=1000;i<j; i+=10,j-=100) cout << i << ―

<< j;

Для

прерывания циклов

могут

использоваться следующие операторы

 

1)break прерывает выполнение цикла в указанной точке;

2)continue прекращает расчет текущей итерации и возвращает процесс в точку проверки условия продолжения итераций.

5.10.4 Примеры циклических программ

5.10.4.1 Пример программы с циклом с предусловием Задача. Написать консольную программу для расчета функции по формуле

Y(X)=X3+X2+X+1 на заданном интервале X

Исходные данные вводятся с клавиатуры, результаты расчета выводятся на

экран. Схема алгоритма программы показана на рисунке 5.3.

 

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

 

#include

<iostream.h>

// Подключение заголовочных файлов

 

#include

<conio.h>

 

 

int main()

// головная функция программы

 

{ float Xn, Xk, Hx, X, Y;

// Описание переменных

 

cout << "\nXn=";

// Вывод запроса на ввод переменной

Xn

cin >>

Xn;

// Ввод с клавиатуры переменной

Xn

cout << "\nXk=";

// Вывод запроса на ввод переменной Xk

cin >>

Xk;

// Ввод с клавиатуры переменной

Xk

 

 

 

18

 

 

 

cout << "\nHx=";

// Вывод

запроса

на ввод переменной

Hx

cin

>> Hx;

//

Ввод с клавиатуры переменной

Hx

X =

Xn;

//

Инициализация

переменной аргумента

while (X<=Xk)

//Цикл с

предусловием расчета точек

функции

{Y = X*X*X+X*X+X+1; // Расчет функции для текущего аргумента

cout << "\nX = "<< X << "

Y=" << Y;

// Вывод точки результата

X += Hx

// Переход на следующую точку аргумента

}

 

 

 

 

 

 

// конец тела цикла while

 

getch();

// Приостановка закрытия консоли

 

return 0;

// Возвращение кода успешного завершения

}//---------------------- Конец программы

 

 

 

 

Начало

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ввод по запросу начального

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ввод Xn

 

 

 

 

 

 

 

 

 

 

 

 

значения аргумента

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ввод по запросу конечного

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ввод Xk

 

 

 

 

 

 

 

 

 

 

 

 

значения аргумента

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ввод по запросу значения шага

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ввод Hx

 

 

 

 

 

 

 

 

 

 

 

 

изменения аргумента

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Начало цикла расчета функции с

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Цикл пока X>Xk

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

постусловием

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Расчет значения выражения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Расчет Y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

переменной Y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вывод экран текущих значений

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X, Y

 

 

 

 

 

 

 

 

 

 

 

 

 

переменных аргумента и функции

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Наращивание текущего значения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X = X + Hx

 

 

 

 

 

 

 

 

 

 

 

 

 

 

переменной аргументов

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Выход из цикла расчета значений

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Конец цикла

 

 

 

 

 

 

 

функций

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Конец

 

 

 

 

 

 

 

 

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

 

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

 

#include <stdio.h>

// Подключение заголовочных файлов

 

#include <conio.h>

 

 

 

 

 

 

 

 

int main()

// головная функция программы

 

{ float Xn, Xk, Hx, X, Y;

// Описание переменных

 

printf("\nXn=");

// Вывод запроса на ввод переменной

Xn

scanf(―%f,&Xn);

// Ввод с клавиатуры переменной

Xn

printf("\nXk=");

// Вывод запроса на ввод переменной Xk

scanf(―%f‖,&Xk);

// Ввод с клавиатуры переменной

Xk

printf("\nHx=");

// Вывод запроса на ввод переменной Hx

scanf(―%f‖,&Hx);

// Ввод с клавиатуры переменной

Hx

X = Xn;

// Инициализация переменной аргумента

while (X<=Xk)

//Цикл с предусловием расчета точек функции

{Y = X*X*X+X*X+X+1; // Расчет функции для текущего аргумента

printf( "\nX = %5.2f

Y=%5.2f",X,Y);

// Вывод точки результата

X += Hx

// Переход на следующую точку аргумента

}

// конец тела цикла while

getch();

// Приостановка закрытия консоли

return 0;

// Возвращение кода успешного завершения

}//----------------------

Конец программы

 

19

5.10.4.2 Пример программы с циклом с постусловием

Задача расчета функции Y(X)=X3+X2+X+1 на заданном интервале. Алгоритм решения задачи показан на рисунке 5.4

 

 

Начало

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ввод по запросу начального

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ввод Xn

 

 

 

 

 

 

 

 

 

 

 

значения аргумента

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ввод по запросу конечного

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ввод Xk

 

 

 

 

 

 

 

 

 

 

 

значения аргумента

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ввод по запросу значения шага

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ввод Hx

 

 

 

 

 

 

 

 

 

 

 

изменения аргумента

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Начало цикла расчета функции с

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Цикл

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

постусловием

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Расчет значения выражения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Расчет Y

 

 

 

 

 

 

 

 

 

 

 

переменной Y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вывод экран текущих значений

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X, Y

 

 

 

 

 

 

 

 

 

переменных аргумента и функции

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Наращивание текущего значения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X = X + Hx

 

 

 

 

 

 

 

 

 

 

переменной аргументов

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Выход из цикла расчета значений

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Продолжение X<Xk

 

 

 

 

функций

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Конец

 

 

 

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

 

Пример реализации алгоритма на языке программирования С++

 

#include <iostream.h>

// Подключение заголовочных файлов

 

#include <conio.h>

 

 

 

int main()

// головная функция программы

 

{ float Xn, Xk, Hx, X, Y;

// Описание переменных

 

cout << "\nXn=";

// Вывод запроса на ввод переменной

Xn

cin >> Xn;

// Ввод с клавиатуры переменной

Xn

cout << "\nXk=";

// Вывод запроса на ввод переменной Xk

cin >> Xk;

// Ввод с клавиатуры переменной

Xk

cout << "\nHx=";

// Вывод запроса на ввод переменной Hx

cin >> Hx;

// Ввод с клавиатуры переменной

Hx

X = Xn;

// Инициализация переменной аргумента

do{ Y = X*X*X+X*X+X+1;

// Расчет функции для текущего аргумента

 

cout << "\nX = "<< X << "

Y=" << Y;

// Вывод точки результата

 

X += Hx

// Переход на следующую точку аргумента

} while (X<=Xk);

// Проверка условия продолжения цикла

getch();

// Приостановка закрытия консоли

 

return 0;

// Возвращение кода успешного завершения

}//---------------------- Конец программы

 

 

Пример реализации алгоритма на языке программирования С

 

#include <stdio.h>

// Подключение заголовочных файлов

 

#include <conio.h>

 

 

 

int main(void)

// головная функция программы

 

{ float Xn, Xk, Hx, X, Y;

// Описание переменных

 

printf("\nXn=");

// Вывод запроса на ввод переменной

Xn

scanf(―%f‖,&Xn);

// Ввод с клавиатуры переменной

Xn

 

 

20

 

 

printf("\nXk=");

 

// Вывод запроса на ввод переменной Xk

scanf(―%f‖,&Xk);

 

// Ввод с клавиатуры переменной

Xk

printf("\nHx=");

 

// Вывод запроса на ввод переменной Hx

scanf(―%f‖,&Hx);

 

// Ввод с клавиатуры переменной

Hx

X = Xn;

 

// Инициализация переменной аргумента

 

do{ Y = X*X*X+X*X+X+1;

// Расчет функции для текущего аргумента

printf("\nX =

%f

Y=%f", X, Y);

// Вывод точки результата

X += Hx

 

// Переход на следующую точку аргумента

} while (X<=Xk);

 

// Проверка условия продолжения цикла

 

getch();

 

// Приостановка закрытия консоли

 

return 0;

 

// Возвращение кода успешного завершения

5.10.4.3 Пример программы с циклом for

 

 

В качестве примера

рассматривается следующая задача.

 

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

1)тип переменных float;

2)число элементов массивов 10;

3)выражение функции

 

Y(X)=5.4X2+3.2X+1

 

 

 

Схема алгоритма решения задачи показана на рисунке 5.5.

 

Текст программы

решения задачи на языке программирования С++

#include <iostream.h>

//

Подключение

модуля с потоками cin и cout

#include <conio.h>

//

Модуль для приостановки закрытия окна (getch)

const

int size=10;

//

Константа числа расчетных элементов

float

X, Y;

//

независимая

и зависимая переменные

float

xn;

//

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

float

xk;

//

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

float

hx;

//

Шаг расчета

аргумента

int main()

//

Заголовок главной функции

{ cout << "начало х=";

//

Вывод приглашения для ввода начала интервала

cin

>> xn;

//

Ввод значения переменной начала расчета

cout << "конец x=";

//

Вывод приглашения для ввода конца интервала

cin

>> xk;

//

Ввод значения переменной окончания расчетов

hx = (xk-xn)/(size-1);

// Определение шага изменения аргумента

X=xn;

// инициализация первого элемента аргумента

for

(int i=0; i<size;

i++)

//

цикл расчета точек функции

{

Y=5.4*X*X+3.2*X+1;

 

 

//

расчет функции

 

cout << "\n << i << ―

X=" << X << " Y=" << Y; // вывод на экран

 

X+=hx;

 

 

//

Наращивание аргумента

}

 

 

 

//

конец цикла

getche();

 

 

//

Приостановка экранного вывода

return 0;

 

 

//

код отсутствия ошибки

}//------------ Конец программы

------------------------------------

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]