Учебное пособие 1450
.pdfЗатем параметр цикла I увеличивается на шаг H. Если новое значение параметра I меньше или равно значению N2, то цикл (действия 1 и 2) повторяется вновь.
Если значение параметра I превышает N2, то цикл перестает работать, происходит выход из цикла и выполняется действие 3.
Операторы данного цикла в разных языках программирования могут иметь различные отклонения от данной схемы при реализации. В частности, возможен расчет всех значений параметра I до начала выполнения цикла. Получается список значений, из которого выбирается очередное значение I при каждом повторе цикла.
I = N1, N2, H
Действие 1
Действие 2
Действие 3
Рис. 6. Структура цикла с заданным числом повторений
11
1.3. Примеры реализации алгоритмических структур Пример 1. Составить структурную схему алгоритма для
вычисления функции при произвольных значениях A, X.
y(x) a* x sin2 x ln x a eax
Структурная схема приведена на рис. 7.
1
|
Начало |
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
Вычисление |
|
||||||
|
Вывод: |
|||||||||||||||
|
«Введи- |
Y1 = AX + |
|
|||||||||||||
|
те A, X» |
|
|
SIN2(X) |
|
|||||||||||
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
|
|
|
|
|
|
|
3 |
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
Вычисление |
|
|||||||
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
||||||||
|
Ввод |
|
|
Y2=LN A+X |
|
|||||||||||
|
A, X |
|
|
|
+ eAX |
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Вычисление |
|
|||||
|
|
|
|
|
|
|
|
|
Y= Y1 - Y2 |
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
7 |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
Вывод |
|||||
|
|
|
|
|
|
|
|
|
|
|
Y, Х, А |
|
8
Конец
Рис. 7. Структурная схема реализации линейной вычислительной задачи
12
Пример 2. Составить структурную схему алгоритма для реализации вычисления разветвляющейся функции
|
ln |
x a |
sin |
2 |
(x), еслиx a; |
||
|
|
|
|||||
|
|
|
|
|
|
|
|
|
a |
|
x a, еслиx a. |
||||
|
|
|
1
Начало
2
Вывод: «Введите А, Х»
3
Ввод А, Х
4 |
|
нет |
|
|
|
||
X >= A? |
|||
|
да
5
Вычислить
___
Y=A + X-A
6
Вычислить
Y= LN|X+A| + SIN2(X)
7
Вывод Y, Х
8
Конец
Рис. 8. Структурная схема реализации разветвляющейся вычислительной задачи
13
Пример 3. В массиве P(20) найти количество положительных элементов и сформировать новый массив Р1, каждый элемент которого получается делением соответствующего элемента массива P на найденное количество. Составить структурную схему алгоритма.
1
Начало
2
Вывод: «Введите
Р»
3
I = 1, 10
4
5
K=0
6
I = 1, 10
А
.нет |
7 |
|
|
> 0 ? |
|
Pi |
да
8
Ввод Рi |
|
K=К + 1 |
|
Рис. 9. Структурная схема решения циклической задачи по обработке одномерного массива (начало)
14
А |
9 |
I = 1, 10 |
10 |
P1i = Pi / K |
11 |
Вывод: |
«Массив |
Р» |
12 |
I = 1, 10 |
14
Вывод K
15
Вывод: «Новый массив»
16
I = 1, 10
17
Вывод: Р1i
|
|
|
|
|
|
|
13 |
|
|
|
|
|
|
|
|
18 |
|
|
||
|
|
Конец |
||||
|
|
|
||||
Вывод: |
||||||
|
||||||
|
||||||
Рi |
|
|
|
Рис. 9. Структурная схема решения циклической задачи по обработке одномерного массива (окончание)
15
Пример 4. В матрице А(3, 3) найти максимальный элемент и номер строки и столбца, где он стоит. Вывести максимальный элемент и его номера. Составить структурную схему алгоритма решения данной задачи.
1 |
Начало |
2 |
Вывод: |
«Введите |
А(3,3)» |
3 |
I = 1, 3 |
4 |
J = 1, 3 |
5 |
Ввод |
А I , J |
6 |
|
|
|
Max = A(1,1) |
|
||
|
Nctr = 1 |
|
|
|
Nctl =1 |
|
|
|
7 |
|
11 |
|
|
|
Вывод |
|
I = 1, 3 |
Max, |
|
|
|
|
Nctr, Nctl |
|
8 |
|
12 |
|
|
|
Конец |
|
J = 1, 3 |
|
|
Нет |
|
|
|
9 |
Max |
< |
|
|
Aij ? |
|
|
10 |
|
Да |
|
|
|
|
|
Max = A(I,J) |
|
||
|
Nctr = I |
|
|
|
Nctl =J |
|
Рис. 10. Структурная схема работы с матрицей
16
2. СПРАВКА ПО ПРОГРАММИРОВАНИЮ НА ЯЗЫКЕ С++
2.1. Базовые средства языка С++
Алгоритмический язык программирования включает следующие базовые средства [2]:
–лексемы;
–выражения;
–операторы.
Совокупность всех символов образует алфавит языка. Из символов составляются лексемы. Лексемы - это минимальные единицы языка, имеющие самостоятельный смысл.
Выражения определяют правила вычисления какоголибо значения.
Операторы описывают типовые действия. Базовые средства приведены в табл. 2.
Таблица 2
Базовые средства языка С++
Базовое средство |
|
|
Описание |
||
Прописные и строчные ла- |
|
Элемент алфавита |
|||
тинские буквы и знак подчер- |
|
|
|||
кивания |
|
|
|
|
|
Арабские цифры от 0 до 9, |
|
Элемент алфавита |
|||
и цифры от A до F, исполь- |
|
|
|||
зуемые в шестнадцатеричной |
|
|
|||
системе счисления |
|
|
|
|
|
Специальные знаки: |
[ ] |
|
Элемент алфавита |
||
“ { } |
, |
| |
|
|
|
( ) |
+ |
- |
/ |
|
|
% |
* |
. |
\ |
|
|
‘ |
: |
? |
< |
|
|
= |
> |
! |
& |
|
|
# |
- |
; |
^ |
|
|
|
|
|
|
17 |
Окончание табл. 2
Символы пробела, табуля- |
|
Элемент алфавита |
|
|
||
ции, перехода на новую стро- |
|
|
|
|
|
|
ку |
|
|
|
|
|
|
Идентификатор |
|
Имя |
программного |
объекта, |
||
|
|
начинается с буквы, в имени |
||||
|
|
используют латинские буквы, |
||||
|
|
цифры и знак подчеркивания, |
||||
|
|
в идентификаторе прописные |
||||
|
|
и строчные буквы различают- |
||||
|
|
ся |
|
|
|
|
Ключевые слова |
|
Зарезервированные |
иденти- |
|||
|
|
фикаторы, которые |
имеют |
|||
|
|
специальное |
значение |
для |
||
|
|
компилятора. Например: asm, |
||||
|
|
futo, else и т.д. |
|
|
|
|
Знаки операций |
|
Один или более символов, |
||||
|
|
определяющих |
действие |
над |
||
|
|
операндами. Операции по ко- |
||||
|
|
личеству участвующих в них |
||||
|
|
операндов делятся на унар- |
||||
|
|
ные, бинарные и тернарные. |
||||
Константы |
|
Величины, которые не меня- |
||||
|
|
ют свои значения. Различают- |
||||
|
|
ся целые, вещественные, сим- |
||||
|
|
вольные и строковые кон- |
||||
|
|
станты. |
|
|
|
|
Комментарии |
|
Либо начинаются с двух сим- |
||||
|
|
волов «прямая косая черта» |
||||
|
|
(//) и заканчивают символом |
||||
|
|
перехода на новую строку, |
||||
|
|
либо |
заключаются |
между |
||
|
|
символами-скобками /* и */. |
||||
|
18 |
|
|
|
|
2.2. Основные типы данных в C++
Основные (стандартные) типы данных следую-
щие [3]:
–int (целый);
–char (символьный);
–wchar_t (расширенный символьный);
–bool (логический);
–float (вещественный);
–double (вещественный с двойной точностью). Существует четыре спецификатора типа, уточняющих
внутреннее представление и диапазон значений стандартных типов:
short (короткий); long (длинный); signed (знаковый);
unsigned (беззнаковый).
В табл. 3 приведены диапазоны значений для простых типов данных.
Таблица 3 Диапазоны значений простых типов данных
Тип |
|
Диапазон значений |
Размер (байт) |
bool |
true и false |
1 |
|
signed char |
-128 ... 127 |
1 |
|
unsigned char |
0 |
... 255 |
1 |
signed short int |
-32 768 ... 32 767 |
2 |
|
unsigned short int |
0 |
... 65 535 |
2 |
signed long int |
-2 147 483 648 ... |
4 |
|
|
2 |
147 483 647 |
|
unsigned long int |
0 |
... 4 294 967 295 |
4 |
float |
3.4e-38 ... 3.4e+38 |
4 |
|
double |
1.7e-308 ... 1.7e+308 |
8 |
|
long double |
3.4e-4932 ... 3.4e+4932 |
10 |
|
|
|
19 |
|
2.3. Структура программы
Программа на языке С++ состоит из директив препро-
цессора, описаний и функций.
Пример структуры программы, содержащей функции main, fl и f2:
директивы препроцессора описания
int main(){
операторы главной функции
}
int fl(){
операторы функции fl
}
int f2(){
операторы функции f2
}
2.4. Переменные, константы, выражения Переменная – это именованная область памяти, в кото-
рой хранятся данные определенного типа, которые могут изменять свое значение.
Перед использованием любая переменная должна быть описана.
Пример описания целой переменной с именем а и вещественной переменной х:
int a; float х;
Общий вид оператора описания переменных: [const] тип имя [инициализатор];
20