For (инициализация; проверка; приращение)
оператор;
Оператор инициализация устанавливает начальное значение счетчика. Оператор проверка – это любое выражение С++, результат которого проверяется на каждой итерации: если результат TRUE, то выполняется тело цикла. После изменения счетчика на величину приращения (по умолчанию увеличение на 1), действия повторяются. Все эти выражения не являются обязательными.
Инициализирующее выражение, если оно есть, будет выполняться всегда. Вычисление конечного выражения (проверка) может не производиться, если условие ложно с самого начала. Приращение, как правило, определяет закон изменения параметра цикла, но и это необязательно. Более того, цикл for в С++ не является классическим циклом с параметром: параметр цикла может быть вещественным значением. Можно сделать так, чтобы значение параметра цикла возрастало, например, в геометрической прогрессии:
… for (d=1; d<15; d=d*5)
cout<<d; …
В цикле for можно опустить одно или более выражений, но при этом нельзя опускать символы «;». Необходимо только включить в тело цикла несколько операторов, которые приведут к завершению его работы, например,
… a=1;
for (n=2; a<15;)
a=a*n; …
Тело цикла
… for ( ; ; )
cout<<”Бесконечный цикл”<<endl;
будет выполняться бесконечно, поскольку пустое условие всегда считается истинным. Этот цикл не инициализирует параметр цикла, не содержит управляющего выражения и не выполняет никаких действий. Такой цикл называется открытым.
Пример 3.3 – Вывести на экран все значения y.
#include <iostream.h>
Void main()
{ int k, y;
for (k=1;k<=10;k++)
{// начало тела цикла
y=y*k;
cout<<y<<endl;// выводить на экран значениеy
} // конец тела цикла
}
Существует несколько способов прервать выполнение цикла или изменить порядок следования операторов тела цикла. Иногда необходимо перейти к началу цикла до завершения выполнения всех операторов тела цикла. С этой целью используется оператор continue;, который осуществляет переход в начало цикла, пропуская все оставшиеся операторы.
Пример 3.4 – Вывести на экран все числа, кратные 5, от 1 до 100.
#include <iostream.h>
Void main()
{ int k;
for (k=1;k<=100;k++)
{// начало тела цикла
if (k %5) continue;// если k не кратно 5, то следует
// перейти к началу циклаfor
cout<<k<<endl;// выводить на экран значениеk кратные 5
} // конец тела цикла
}
В ряде случаев требуется выйти из тела цикла еще до проверки условия продолжения цикла. Для этого используется оператор break;, который осуществляет выход из цикла, пропуская все, вплоть до закрывающейся фигурной скобки.
Пример 3.5 – Вывести на экран значения y, не превышающие 60.
#include <iostream.h>
Void main()
{ int k, y;
for (k=1;k<=10;k++)
{// начало тела цикла
if (y*y-5>60) break;// выйти из циклаfor, если y>60
cout<<y*y-5<<endl;// выводить на экран значениеy
} // конец тела цикла
}
И continue, и break следует использовать очень осторожно, т.к. их свободное применение способно запутать даже простой цикл while и сделать его нечитабельным. Это наиболее опасные команды после goto.
3.2 Задания к лабораторной работе
В вариантах 1 – 14 вычислить:
1. Через сколько лет арендатором накопится сумма S, достаточная для покупки собственного помещения, если его стартовый капитал –k тенге, ежемесячный доход – n%, аренда помещения – m тенге.
2. Факториал числа, введенного с клавиатуры.
3. Среднее арифметическое последовательности дробных чисел, вводимой с клавиатуры; количество чисел должно задаваться пользователем.
4. Высоту поднятия жидкости в капиллярной трубке, если заданы радиус трубки r, плотность жидкости ρ, коэффициент поверхностного натяжения α, а краевой угол θ изменяется от 0 до π.
5. Число π с заданной пользователем точностью, для чего воспользоваться числовым рядом , значение частичной суммы которогопри суммировании достаточно большого количества членов приближается к значению π/4.
6. Наибольший общий делитель двух целых чисел.
7. Все смещения точки, совершающей гармонические колебания с заданной амплитудой А, периодом колебаний Т и начальной фазой φ, от положения равновесия при изменении t от 0 до 10 сек с шагом 0,5 сек.
8. Момент времени t, в который будет достигнуто максимальное ускорение точки, если уравнение движения точки дано в виде: .
9. Максимальное значение среди сгенерированной последовательности из kслучайных чисел в диапазоне от 0 до 50, вывести эти числа на экран.
10. Сопротивление проводника, если известны (задаются пользователем): удельное сопротивление ρ, площадь поперечного сечения S, а длина проводника L изменяется от 1 до 20 см.
11. Момент времени t, в который будет достигнута максимальная скорость точки, если уравнение движения точки дано в виде: .
12. Минимальное значение среди сгенерированной последовательности из kслучайных чисел в диапазоне от 0 до 100, вывести эти числа на экран.
13. Все смещения точки при распространении незатухающих колебаний заданной амплитудой А, периодом колебаний Т и скоростью распространения с, отстоящей от источника колебаний на расстоянии L при изменении t от 0 до 10 сек с шагом 0,5 сек.
14. Среднее геометрическое среди сгенерированной последовательности из 10 случайных чисел в диапазоне от 1 до 10, вывести эти числа на экран.
В вариантах 15 – 20 вывести на экран:
15. Таблицу степеней (от нулевой до k-ой) числа Z; количество степеней k задается пользователем.
16. Таймер, который по истечении заданного промежутка времени t, величина которого вводится с клавиатуры, выдает звуковой сигнал.
17. Таблицу умножения на число n, задаваемое пользователем.
18. Изображение шахматной доски: черные клетки отображать «звездочкой», белые - пробелом.
19. Работающие «электронные часы», которые функционируют до нажатия любой клавиши.
20. Таблицу квадратов m первых целых положительных чисел.
В вариантах 21 – 23 проверить:
21. Знание пользователем таблицы умножения: вывести k примеров и выставить оценку (90-100% правильных ответов - «отлично», 75-89% - «хорошо», за 55-74% - «удовлетворительно», менее 55% - «плохо»).
22. Являются ли k целых чисел, введенных пользователем, простыми?
23. Является ли функция периодической, если аргумент х изменяется в интервале [0;5T], а период Т=2π?
24. Предложить пользователю угадать сгенерированное компьютером целое число в диапазоне от 1 до 10 за 5 попыток.
В вариантах 25 - 30 численно убедиться в справедливости равенства, для чего для заданного пользователем значения аргумента х вычислить левую его часть и разложение, стоящее в правой части с заданной погрешностью:
25. .
26.
27.
28.
29.
30.
3.3 Контрольные вопросы
3.3.1 Какие операторы цикла предусмотрены в С++?
3.3.2 В чем разница между циклами while и do-while?
3.3.3 Как с помощью цикла while можно смоделировать другие циклы?
3.3.4 Какой цикл называется открытым?
3.3.5 Как можно организовать бесконечный цикл?
3.3.6 В чем отличие цикла for в С++ от подобных циклов в других языках?
3.3.7 Можно ли организовать цикл while внутри цикла for?
3.3.8 Каким способом можно прервать выполнение цикла?
3.3.9 Каких рекомендаций следует придерживаться при выборе цикла?
3.3.10 В чем заключается разница между циклами while (true) и for ( ; ; )?
Приложение А
Основные элементы языка С++
Таблица А1 - Специальные и управляющие символы
Вид | Название | Вид | Название | |
Специальные символы | + | Плюс | | | Черта |
++ | Приращение | || | Логическое ИЛИ | |
- | Минус | ! | Восклицательный знак | |
-- | Уменьшение | -> | Стрелка | |
* | Звездочка | = | Операция присваивания | |
/ | Наклонная черта | = = | Знак равенства | |
\ | Обратный слеш | != | Не равно | |
// | Двойной слеш | > | Больше | |
. | Точка | < | Меньше | |
, | Запятая | <= | Меньше или равно | |
: | Двоеточие | << | Сдвиг влево | |
:: | Разрешение | >> | Сдвиг вправо | |
; | Точка с запятой | < > | Угловые скобки | |
‘ | Апостроф | ( ) | Круглые скобки | |
“ | Кавычки | [ ] | Квадратные скобки | |
^ | «Крышка» | { } | Фигурные скобки | |
% | Знак процента | /* */ | Скобки комментария | |
& | Амперсанд | # | Знак номера | |
&& | Логическое И | ~ | Тильда | |
Управляющие символы | \a | Сигнал динамика | \t | Горизонтальная табуляция |
\b | BS, забой символа | \v | Вертикальная табуляция | |
\f | Новая страница | \\ | Обратная косая черта | |
\n | Новая строка | \0 | Нулевой символ (байт) | |
\r | Возврат каретки | \000 | Восьмеричная константа | |
\” | Двойная кавычка | \xhhh | Шестнадцатеричная константа | |
\’ | Апостроф | \? | Знак вопроса |
Таблица А2 - Зарезервированные слова в C++
and | char | false | int | private | switch | virtual |
and_eq | class | float | long | protected | template | void |
asm | compl | for | mutable | public | this | volatile |
auto | const | else | namespace | register | throw | while |
bitand | continue | enum | new | return | true | xor |
bitor | default | explicit | not | short | try | xor_eq |
bool | delete | friend | not_eq | signed | typedef | |
break | do | goto | operator | sizeof | typename | |
case | double | if | or | static | union | |
catch | extern | inline | or_eq | struct | unsigned |
Таблица А3 – Типы данных с разными комбинациями модификаторов
Тип | Диапазон изменения | Размер в байтах (битах) | |
от | до | ||
void | - | - | |
char (signed char) | -128 | 1 (8) | |
unsigned char | 1 (8) | ||
wchar_t | 2 (16) | ||
bool | True (Истина) | False (Ложь) | 1 (8) |
int (signed int, short int, signed short int) | -32768 | 2 (16) | |
unsigned int (unsigned short int) | 2 (16) | ||
long int (signed long int) | -2147483648 | 4 (32) | |
unsigned long int | 4 (32) | ||
float | 3.4E-38 | 3.4E+38 | 4 (32) |
double | 1.7E-308 | 1.7E+308 | 8 (64) |
long double | 3.4E-4932 | 3.4E+4932 | 10 (80) |
Примечание – Размер в байтах и диапазон изменения могут варьироваться в зависимости от компилятора, процессора и операционной системы (среды). |
Таблица А4 – Перечень операций С++, их приоритет и порядок выполнения
Уровень | Оператор | Порядок | Уровень | Оператор | Порядок |
( ) . [ ] -> :: | Þ | & | Þ | ||
* & ! ~ ++ -- + - sizeof new delete | Ü | ^ | Þ | ||
. * -> * | Þ | | | Þ | ||
* / % | Þ | && | Þ | ||
+ - | Þ | | | | Þ | ||
<< >> | Þ | ?: | Ü | ||
< <= > >= | Þ | = *= /= += -= %= <<= >>= &= ^= |= | Ü | ||
== != | Þ | , | Þ | ||
Примечания 1 Наивысший приоритет имеют операторы 1 уровня, низший – 16 уровня. 2 Знак Þ обозначает выполнение операций слева направо, а знак Ü - выполнение операций справа налево. 3 Унарные операторы (+) и (-), находящиеся на уровне 2, обладают более высоким приоритетом, чем арифметические (+) и (-) с уровня 5. Символ & на уровне 2 - оператор обращения по адресу, а символ & на уровне 9 битовый оператор AND. Символ * на уровне 2 - оператор обращения к указателю, а символ * на уровне 4 – оператор умножения. 4 В отсутствие круглых скобок операторы, находящиеся на одном уровне, обрабатываются согласно их расположению слева направо. |
Таблица А5 – Основные математические функции
Наименование функции | Функция | Тип | Заголовочный файл | |
результата | аргумента | |||
Абсолютное значение | abs(x) cabs(x) fabs(x) | int double float | int double float | <stdlib.h> <math.h> <math.h> |
Арккосинус | acos(x) | double | double | <math.h> |
Арксинус | asin(x) | double | double | <math.h> |
Арктангенс | atan(x) | double | double | <math.h> |
Косинус | cos(x) | double | double | <math.h> |
Синус | sin(x) | double | double | <math.h> |
Экспонента ex | exp(x) | double | double | <math.h> |
Степенная функция xy | pow(x,y) | double | double | <math.h> |
Логарифм натуральный | log(x) | double | double | <math.h> |
Логарифм десятичный | log10(x) | double | double | <math.h> |
Корень квадратный | sqrt(x) | double | double | <math.h> |
Тангенс | tan(x) | double | double | <math.h> |
Таблица А6 – Символы преобразования в функциях ввода-вывода
Формат вывода | Значение | Формат ввода | Значение |
%c | вывод символа (char) | %c | чтение символа (char) |
%d | целое десятичное число (int) | %d | целое десятичное число (int) |
%i | целое десятичное число (int) | %i | целое десятичное число (int) |
%e (%E) | число (float/double) в виде х.хх е+хх (х.хх Е+хх ) | %e | чтение числа типа float/double |
%f (%F) | число float/double с фиксиро-ванной запятой хх.хххх | %h | чтение числа типа short int |
%g (%G) | число в виде f (F) или е(E) в зависимости от значения | %o | чтение восьмеричного числа |
%s | строка символов | %s | чтение строки символов |
%o | целое число (int) в восьмеричном представлении | %x | чтение шестнадцатеричного числа (int) |
%u | беззнаковое десятичное число (unsigned int) | %p | чтение указателя |
%x (%X) | целое число (int) в шестнад-цатеричном представлении | %n | чтение указателя в увеличенном формате |
%p (%n) | указатель | ||
Примечание – К форматам можно применять модификаторы l и h, например, %ld (long в десятичном виде), %lo (long в восьмеричном виде), %lu (unsigned long), %lx (long в шестнадцатеричном виде), %lf (long float c фиксированной точкой), %le (long float в экспоненциальной форме), %lg (long float в виде f или е в зависимости от значения). |
Список литературы
1. ГОСТ 19.701-90. ЕСПД. Схемы алгоритмов и программ. Обозначения условные, графические. – М.: Издательство стандартов,1990.
2 . Ю.Аляев, О.Козлов. Алгоритмизация и языки программирования Pascal, C++, Visual Basic: Учебно-справочное пособие. – М.: Финансы и статистика, 2004.
3. Дж.Либерти. Освой самостоятельно С++ за 21 день. – М.: Издательский дом «Вильямс», 2001.
4. И.В.Ашарина. Основы программирования на языках С и С++. – М.: Горячая линия-Телеком, 2002.
5. Б.И,Березин, С.Б.Березин. Начальный курс С и С++. – М.: ДИАЛОГ-МИФИ, 1999.
6. А.Б.Крупник. Самоучитель С++. – СПб.: Питер, 2005.
7. Дж.Бентли. Жемчужины программирования. - СПб.: Питер, 2003.
8. А.Л.Марченко. С++. Бархатный путь. - М.: Горячая линия-Телеком, 2002.
9. А.Я.Архангельский. C++ Builder 6. Справочное пособие. Книга 1. Язык С++. – М.: Бином-Пресс, 2002.
10. Культин Н.Б. Самоучитель С++Builder. – СПб.: БХВ-Петербург, 2004.
Содержание
Введение............................................................................................................. 3
1 Лабораторная работа №1. Основные понятия языка. Стандартные типы
данных. Оператор присваивания..................................................................... 4
2 Лабораторная работа №2. Программирование алгоритмов линейной
и разветвляющейся структуры ........................................................................ 15
3 Лабораторная работа №3. Программирование алгоритмов циклической
структуры.......................................................................................................... 25
Приложение А................................................................................................... 32
Список литературы........................................................................................... 35