Читать онлайн Лекции по C++ для начинающих бесплатно

Лекции по C++ для начинающих

ТЕМА 1 – ТИПЫ ДАННЫХ. ВЫРАЖЕНИЯ. ОПЕРАТОРЫ

1) ДЕТАЛИ ЯЗЫКА

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

Необходимо помнить, что язык C++ различает прописные и строчные буквы. Язык C++, как говорят, является чувствительным к регистру. Имена «Summa», «SUMMA» и «summa» определяют три различных имени переменных. В именах переменных, как уже говорилось, можно использовать символ подчеркивания. Однако обычно с символа подчеркивания начинаются имена системных зарезервированных переменных и констант. Поэтому старайтесь не использовать имен, начинающихся с символа подчеркивания, и вам удастся избежать возможных конфликтов и взаимопересечений с множеством библиотечных имен.

Комментарий – часть программы, которая игнорируется компилятором и служит для удобочитаемости исходного текста программы. В процессе компиляции комментарий заменяется пробелом: следовательно комментарий может располагаться в любом месте программы, где допускается использование пробела. Комментарием в языке C++ является любая последовательность символов, заключенная между парами символов /* и */. Для однострочного комментария можно использовать символы //

2) СТРУКТУРА ФАЙЛА, С КОТОРОГО НАЧИНАЕТСЯ ПРОГРАММА

В языке СИ любая программа состоит из одной или более функции, которые нужно выполнить. Выполнение любой программы начинается с функции main. Далее в main мы пишем текст программы и вызываем другие функции. Таким образом, структура программы имеет вид:

int main() {

}

В самом простом случае функция main не имеет аргументов, поэтому в скобках ничего не содержится. Для работы программы, обеспечивающей ввод и вывод информации, перед функцией main необходимо поместить строку: #include <stdio.h>

#include <stdio.h>

int main() {

printf("Теперь можно идти устраиваться в Facebook!");

}

3) ТИПЫ ДАННЫХ В С++

Рис.0 Лекции по C++ для начинающих

ОБЩИЕ ТИПЫ ДАННЫХ В С++ И JAVA

Рис.1 Лекции по C++ для начинающих

ОСНОВНЫЕ ТИПЫ ДАННЫХ В С++ (С АНАЛОГАМИ В JAVA)

Рис.2 Лекции по C++ для начинающих

Все переменные должны быть объявлены до их использования. Общая форма объявления имеет вид: type name;

float A; int В = 6; char С;

4) ВЫРАЖЕНИЯ

Выражения формируются из констант, переменных, функции, знаков операции и круглых скобок по определенным синтаксическим правилам. Выражение – это единица языка, которая определяет способ вычисления некоторого значения.

АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИ

+ сложение

– вычитание

* умножение

/ деление

% деление по модулю

++ увеличение на единицу

–– уменьшение на единицу

Результатом деления по модулю является остаток от деления. Например, если b=5, с=2, то при выполнении операции а = b % с, переменная а получит значение 1.

Унарные операции ++ и – могут следовать перед или после операнда.

Три оператора х= х + 1; ++х; х++; имеют один результат, но имеют различие при использовании.

/* Пример старого способа ввода/вывода через "<stdio.h>" для С */

#include <stdio.h>

int main() {

printf("Я очень люблю C++!\n");

int a;

printf("Введите Ваше любимое число: ");

scanf("%d", &a);

printf("Ваше число * 2 = %d\n", a * 2);

}

/* Пример нового способа ввода/вывода через "<iostream>" для С++ */

#include <iostream>

using namespace std;

int main() {

cout << "Я очень люблю C++!\n";

int a;

cout << "Введите Ваше любимое число: ";

cin >> a;

cout << "Ваше число * 2 = " << a * 2 << endl;

}

/* Пример нового способа ввода/вывода через "<iostream>" без namespace для С++ */

#include <iostream>

int main() {

std::cout << "Я очень люблю C++!\n";

int a;

std::cout << "Введите Ваше любимое число: ";

std::cin >> a;

std::cout << "Ваше число * 2 = " << a * 2 << std::endl;

}

Например (EX1):

#include <stdio.h>

int main() {

int x, y;

x = 5;

y = 60;

x++;

++y;

printf("x = %d y = %d \n", x, y);

printf("x = %d y = %d \n", x++, ++y);

}

Результат:

"x = 6 y = 61"

"x = 6 y = 62"

При x++ значение переменной х сначала используется в выражении, и лишь затем переменная увеличивается на единицу;

При ++х значение переменной х сначала увеличивается на единицу, а затем используется в выражении.

ЛОГИЧЕСКИЕ ОПЕРАЦИИ

< меньше

<= меньше либо равно

== равно

>= больше либо равно

> больше

!= не равно

МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ

Рис.3 Лекции по C++ для начинающих

Перед аргументом и функцией указан допустимый тип (при программировании эта запись типа опускается). Для работы с математическими функциями необходимо перед функцией main поместить строку: #include <math.h>

#include <iostream>

#include <math.h>

using namespace std;

int main() {

double x;

cout << "Введите число: ";

cin >> x;

cout << "sin(x)=" << sin(x) << endl;

cout << "sqrt(x)=" << sqrt(x) << endl;

}

ШПАРГАЛКА ПО ВВОДУ-ВЫВОДУ

#include <stdio.h>

#include <iostream>

using namespace std;

int main(int argc, char** argv) {

int number1;

float number2;

/* Стиль С из <stdio.h> */

printf("Введите целое и вещественное число через пробел: ");

scanf("\n%d %f", &number1, &number2);

printf("number1 = %d, number2 = %f \n", number1, number2);

puts("Спасибо!");

/* Стиль С++ из <iostream> */

cout << "Введите еще число: ";

cin >> number1;

cout << "Вы ввели число " << number1 << endl;

/* Создание задержки на экране. Стиль С++ из <iostream> */

cout << "\nНажмите Enter для завершения программы…\n";

// Очистим ввод с клавиатуры и будем ожидать нажатие клавиши "Enter"

cin.ignore(); cin.get();

return 0;

}

Программы с линейной структурой являются простейшими и используются, как правило, для реализации простых вычислений по формулам. В программах с линейной структурой инструкции выполняются последовательно, одна за другой.

5) ОПЕРАТОР ПРИСВАИВАНИЯ

Оператор присваивания в языке C++ обозначается просто знаком =. В отличие от других языков в языке C++ оператор присваивания может использоваться в выражениях, которые включают в себя операторы сравнения или логические операторы.

Например (EX1):

#include <stdio.h>

int main() {

int C;

if ((C = 5 + 3) > 0) {

printf("Число C больше нуля!");

}

}

Сначала вычисляется величина 5 + 3, которая присваивается переменной С, затем сравнивается ее значение с нулем.

Существует также возможность многократного присваивания.

Например: int x = y = z = 5 * 3

Такое присваивание выполняется справа налево. Сначала вычисляется 5 * 3, затем это значение присваивается z, потом у, и лишь затем х.

Есть дополнительные операторы присваивания: +=, -=, *= и %=.

Вместо n = n + 2 можно использовать n += 2. += это аддитивная операция, в результате выполнения которой величина, стоящая справа, прибавляется к значению переменной, стоящей слева.

Аналогично:

n -= 2 это n = n – 2;

n *= 2 это n = n * 2;

n /= 2 это n = n / 2;

n %= 2 это n = n % 2.

Эти операции имеют тот же приоритет, что и операция присваивания =, то есть ниже, чем приоритет арифметических операций.

6) ОПЕРАТОР ВЫВОДА

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

printf("управляющая строка", аргумент1, аргумент2, …);

Управляющая строка содержит два типа информации: символы, которые непосредственно выводятся на экран, и команды формата, определяющие, как выводить аргументы. Команда формата начинается с символа %, за которым следует код формата.

ОСНОВНЫЕ КОДЫ КОМАНДЫ ФОРМАТА:

1. d – значением аргумента является десятичное целое число;

2. с – значением аргумента является символ;

3. s – значением аргумента является строка символов:

4. f – значением аргумента является вещественное число с плавающей точкой;

5. р – значением аргумента является указатель (адрес).

Функция printf использует управляющую строку, чтобы определить, сколько всего аргументов и каковы их типы. Например, в результате работы программы получена переменная i, имеющая значение 100, и переменная j, имеющая значение 25. Обе переменные целого типа. Для вывода этих переменных на экран в виде

int i = 100;

int j = 25;

необходимо применить функцию

printf("i = %d j = %d", i , j);

Как было описано выше, в кавычках задается формат вывода, перед знаком % записываются символы, которые будут непосредственно выданы на экран. После знака % применена спецификация d, т.к. переменные i и j имеют целый тип. Сами i и j приведены через запятую в списке аргументов.

Если после знака % стоит цифра, то она задает поле, в котором будет выполнен вывод числа. Приведем несколько функций printf, которые будут обеспечивать вывод одной и той же переменной S целого типа, имеющей значение 336.

Вызов функции printf("%2d", S);

Вывод: 336

В этом примере ширина поля (она равна двум) меньше, чем число цифр в числе 336, поэтому поле автоматически расширяется до необходимого размера.

Вызов функции printf("%6d", S)

Вывод: _ _ _336 (6 позиций)

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

Вызов функции printf("%-6d", S);

Вывод: 336_ _ _ (6 позиций)

Знак «минус» перед спецификацией приводит к сдвигу числа к левому краю поля.

Рассмотрим вывод вещественных чисел. Если перед спецификацией f ничего не указано, то выводится число с шестью знаками после запятой, при печати числа с плавающей точкой перед спецификацией f тоже могут находиться цифры.

%6f – печать числа с плавающей точкой в поле из шести позиции;

%.2f – печать числа с плавающей точкой с двумя цифрами после десятичной точки;

%6.2f- печать числа с плавающей точкой в поле из шести позиций и двумя цифрами после десятичной точки.

Примеры:

float а = 3,687;

float b = 10,17;

Вызов функции printf("%7f %8f", a, b);

Вывод: _ _3.687_ _ _ _ 10.17

Как видно из примера, лишние позиции заполняются пробелами.

Вызов функции printf("%.2f %.2f", а, b);

Вывод: 3.69 10.17

В первом числе третья цифра после десятичной точки отброшена с округлением, т.к. указан формат числа с двумя цифрами после десятичной точки.

Вызов функции printf("%7.2f %e", a, b);

Вывод: _ _ _3.68 1.017000е+01

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

Как было отмечено выше, в управляющей строке могут содержаться управляющие символьные константы. Среди управляющих символьных констант наиболее часто используются следующие:

\b – для перевода курсора влево на одну позицию;

\n – для перехода на новую строку;

\t – для горизонтальной табуляции;

Предположим, в результате работы программы переменная i получила значение 50.

Вызов функции printf("\t ЭBM\n%d\n", i);

Сначала выполнится горизонтальная табуляция (\t), т.е. курсор сместится от края экрана на 8 позиций, затем на экран будет выведено слово «ЭВМ» после этого курсор переместится в начало следующей строки (\n) затем будет выведено целое значение i по формату d, и окончательно курсор перейдет в начало новой строки (\n). Таким образом, результат работы этой функции на экране будет иметь вид:

_ _ _ _ _ _ _ _ ЭВМ

50

7) ОПЕРАТОРЫ ВВОДА

Для форматного ввода данных используется функция:

scanf("управляющая строка", аргумент1, аргумент2, …);

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

Если нам надо ввести значения для переменных i (целого типа) и а (вещественного типа). Эту задачу сможет выполнить функция: scanf("%d%f", &i, &a).

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

/*

* Пример решения квадратного уравнения

*/

#include <iostream>

#include <cmath>

using namespace std;

int main() {

double a, b, c, x1, x2;

cout << "Введите значение a: "; cin >> a;

cout << "Введите значение b: "; cin >> b;

cout << "Введите значение c: "; cin >> c;

if ((b * b – 4 * a * c) >= 0) {

x1 = (-b + sqrt(b * b – 4 * a * c)) / (2 * a);

x2 = (-b – sqrt(b * b – 4 * a * c)) / (2 * a);

cout << "Первый корень = " << x1 << endl;

cout << "Второй корень = " << x2 << endl;

} else {

cout << "Нет решения: дискриминант меньше 0";

}

}

ПРИМЕР ЗАДАЧИ (EX2). Чему равна площадь трапеции, если основания равны, а = 6.5, b = 3.9, а высота h = 4.7?

#include <stdio.h>

int main() {

float a, b, h, s;

printf("Введите значения – a, b, h \n");

scanf("\n%f %f %f", &a, &b, &h);

s = (a + b) * h / 2;

printf("Площадь трапеции");

printf("\ns = %f", s);

}

ПРИМЕР ЗАДАЧИ (EX3). Решить пример.

Рис.4 Лекции по C++ для начинающих

#include <stdio.h>

#include <math.h>

int main() {

float x, y, a;

printf("Введите исходное значение X \n");

scanf("%f", &x);

a = x + 0.25;

y = a + sin(exp(a)) + sqrt(a / 2.5);

printf("x = %f y = %-f", x, y);

}

ПРИМЕР ЗАДАЧИ. Вычислить значения функций.

Рис.5 Лекции по C++ для начинающих

Рис.6 Лекции по C++ для начинающих

#include <stdio.h>

#include <math.h>

int main() {

float a, b, x, y, z;

printf("введите исходные данные a, b, x\n");

scanf("%f%f %f", &a, &b, &x);

y = pow(x, 3) + log(pow(x, 2) + 1.2) + sqrt(abs(x – 3.6));

z = exp(a * y) – sin(b * y – 2.37);

printf("x = %7.3f y=%7.3f z=%7.3f", x, y, z);

}

ТЕМА 2 – ПРОГРАММИРОВАНИЕ РАЗВЕТВЛЯЮЩИХСЯ И ЦИКЛИЧЕСКИХ АЛГОРИТМОВ

1) ПРОГРАММИРОВАНИЕ РАЗВЕТВЛЯЮЩИХСЯ АЛГОРИТМОВ

Последовательность выполнения программы определяется ветвлениями. Ветвление – выбор одного из возможных направлений выполнения алгоритма в зависимости от значения некоторых условий. Для организации разветвлений в программах используются операторы перехода, условный и выбора.

ОПЕРАТОР ПЕРЕХОДА

Его можно представить в следующей форме: goto метка;

Метка – это любой идентификатор.

Например:

goto a2;

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

Например:

а2: к=5;

Метки в программе описывать не нужно. Применение оператора перехода в языке C++ является нежелательным, так как он нарушает структурную наглядность программы.

УСЛОВНЫЙ ОПЕРАТОР

Оператор if имеет вид:

if (проверка условия) {

инструкция 1

} else {

инструкция 2;

}

Если условие в скобках принимает истинное значение, выполняется инструкция 1, а если ложное – инструкция 2.

Например:

if (a > b) {

z=a;

} else {

z=b;

}

В операторе if слово else может отсутствовать. В этом случае, если условие в скобках принимает истинное значение, выполняется инструкция 1, а если ложное, то инструкция 1 пропускается и управление передается следующему оператору по тексту программы.

Например:

if (num>10) num = 2 * num;

printf("%d\n", num);

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

Пример (EX1):

#include <stdio.h>

int main() {

int a, b;

puts("Введите значения а и b");

scanf("%d %d", &a, &b);

if (a > b) puts("a больше b");

else puts("a меньше или равно b");

if (a == b) puts("a равно b");

}

Если для выполнения программы ввести числа 5 и 3, то на экране появится строка: "а больше b". При введении чисел 5 и 5, на экране появится две строки: "а меньше или равно b" и "а равно b"

Иногда в условном операторе после ключевых слов if или else следует инструкция if, ее называют вложенной. Слово else всегда относится к ближнему предшествующему ему if. Также после ключевых слов if и else вместо одной инструкции может быть записано несколько инструкций, которые должны заключаться в фигурные скобки. В сложных конструкциях, содержащих много if и else, уместно вложенные if обрамлять фигурными скобками.

ПРИМЕР ЗАДАЧИ (EX2). Ввести целое число. Вывести сообщение существуется ли символ ASCII-таблицы под таким номером (от 0 до 31 расположены управляющие коды, затем от 32 до 256 – символы).

#include <stdio.h>

int main() {

int i;

char ch;

printf("Введите целое число:\n");

scanf("%d", &i);

if ((i > 31) && (i < 256)) {

printf("Такой символ существует");

} else {

printf("Taкoгo символа нет");

}

}

ПРИМЕР ЗАДАЧИ (EX3). Вычислить функцию

Рис.7 Лекции по C++ для начинающих

#include <stdio.h>

#include <math.h>

int main() {

float x, y;

printf("Введите исходное значение х\n");

scanf("%f", &x);

if (x > 0) {

y = log(x);

} else {

y = pow(cos(x), 2);

}

printf("y =%7.3f", y);

}

ПРИМЕР ЗАДАЧИ (EX4). Вычислить функцию

Рис.8 Лекции по C++ для начинающих

#include <stdio.h>

#include <math.h>

int main() {

float x, y, b;

printf("Введите исходные данные х, b \n");

scanf("%f%f", &x, &b);

if (x < 10) {

y = 1 + b * pow(x, 2);

} else {

if (x <= 15) {

y = log(x) + b;

} else {

y = sin(b * x);

}

}

printf("y = %7.3f", y);

}

ОПЕРАТОР ВЫБОРА

Оператор switch позволяет выбрать одну из нескольких альтернатив. Он записывается в следующем виде:

switch (выражение) {

case константа 1:

вариант 1;

break;

case константа n:

вариант n;

break;

default:

вариант n+1;

break;

}

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

Например (EX5):

#include<stdio.h>

int main() {

char y;

scanf("%c", &y);

switch (y) {

case '1':

printf("Ветвь 1\n");

break;

case '2':

case '3':

printf("Ветвь 2 или 3\n");

break;

default:

printf("Bетви 1, 2, 3 не работают\n");

}

}

Оператор scanf вводит переменную у. Ее значение в операторе switch сравнивается со всеми константами операторов case. Если ввести символ 1, то на экране появится строка: "Ветвь 1".

По оператору break произойдет выход из переключателя switch и программа завершит свою работу. Если ввести символы 2 или 3 то на экран будет выведена строка: "Ветвь 2 или 3".

При вводе любого другого символа управление перейдет к ключевому слову default и на экране появится строка: "Ветви 1, 2, 3 не работают".

2) ПРОГРАММИРОВАНИЕ ЦИКЛИЧЕСКИХ АЛГОРИТМОВ

Цикл – повторное выполнение операторов, завершаемое при выполнении некоторых условий. Однократное выполнение операторов цикла называется итерацией. Операторы и конструкции цикла также называются телом цикла.

Различают 3 вида оператора цикла: for, while и do-while.

ЦИКЛЫ С ПАРАМЕТРОМ

Описание: for (выражение 1; выражение 2; выражение 3) { … };

Действие: в круглых скобках содержится три выражения. Первое из них служит для инициализации счетчика. Она осуществляется только один раз – когда цикл for начинает выполняться. Второе выражение необходимо для проверки условия, которая осуществляется перед каждым возможным выполнением тела цикла. Когда выражение становится ложным, цикл завершается. Третье выражение вычисляется в конце каждого выполнения тела цикла, происходит приращение числа на шаг.

Комментарий: в операторе цикла for точка с запятой после закрывающейся круглой скобки не ставится. Любое из трех или все три выражения в операторе могут отсутствовать, однако разделяющие их точки с запятыми опускать нельзя. Если отсутствует выражение 2, имеем бесконечный цикл.

Если отсутствуют выражения 1 и 3, цикл становится эквивалентным while.

Например:

for (;а<20;) { … };

Каждое из выражений может состоять из нескольких выражений, объединенных операцией «запятая».

Например:

for (i=0, j=l; i<100; i++, j++) a[i] = b[j];

Пример (EX6):

#include <stdio.h>

int main() {

int i, j = 1, k;

for (i = 1; i <= 3; i++) {

printf("Acтана \t");

}

printf("\nУкажите число повторений цикла\n");

scanf("%d", &k);

for (i = 1; i <= k; i++) {

printf("%d", j);

}

j = i;

printf("\n");

for (i = 1; i <= k; i++) {

printf("%d ", j *= i);

}

}

Вывод:

Астана Астана Астана

Укажите число повторений цикла

5

11111

6 12 36 144 720

ПРИМЕР ЗАДАЧИ (EX7). Вычислить n-e число Фибоначчи. Числа Фибоначчи строятся следующим образом: F(0) = F(1) = 1; F(i + 1) = F(i) + F(i – 1) для i >= 1. Это пример вычислений по рекуррентным формулам.

#include<stdio.h>

int main() {

int a, b, c, i, n;

printf("Введите номер числа Фибоначчи ");

scanf("\n %d", &n);

a = 1; // a=F(0), а соответствует F(i-2)

b = 1; // b=F(1), b соответствует F(i-1)

for (i = 2; i <= n; i++) {

c = a + b; // с соответствует F(i)

// в качестве а и b берется следующая пара чисел

a = b;

b = c;

}

printf("%d-е число Фиббоначчи = %d", n, b);

}

ПРИМЕР ЗАДАЧИ (EX8). Вычислить 50 значений функции у = arctg(x2), где X изменяется от начального значения а с шагом h. Результаты вывести в виде таблицы значений X и У.

#include<stdio.h>

#include<math.h>

int main() {

float x, y, a, h;

int i;

printf("Введите исходные данные a, h \n");

scanf("%f %f", &a, &h);

x = a;

for (i = 1; i <= 5; i++) {

y = atan(pow(x, 2));

printf("x = %7.3f у = %7.3f \n", x, y);

x = x + h;

}

}

ПРИМЕР ЗАДАЧИ (EX9). Вычислить значение функции

Рис.9 Лекции по C++ для начинающих
, если х изменяется с шагом h одновременно с i.

#include<stdio.h>

#include<math.h>

int main() {

float x, y, z, h;

int i, n;

printf("Введитe исходные данные h, n \n");

scanf("%f %n", &h, &n);

x = 0;

z = 0;

for (i = 1; i <= n; i++) {

y = sin(x) / sqrt(1 + x);

z = z + y;

x = x + h;

}

printf("x = %7.3f z = %7.3f", x, z);

}

ПРИМЕР ЗАДАЧИ (EX10). Вычислить сумму членов ряда

Рис.10 Лекции по C++ для начинающих
, для заданных n и х.

#include<stdio.h>

#include<math.h>

int main() {

float x, s, p;

int k, n;

printf("Введите исходные данные х, n \n");

scanf("%f %d", &x, &n);

p = 1;

s = 0;

for (k = 1; k <= n; k++) {

p = p*x;

s = s + (p + k) / pow(k, 2);

}

printf("s = %7.3f", s);

}

ЦИКЛЫ С УСЛОВИЕМ

Оператор цикла while: while (выражение) { … };

Действие: Выполняется оператор до тех пор, пока значение выражения в скобках истинно. Проверка значения выражения происходит перед каждым выполнением оператора. Когда значение выражения ложно, цикл while заканчивается. Если выражение ложно с самого начала, оператор не выполняется ни разу.

Комментарий: Следует заметить, что после ключевого слова while и выражения, заключенного в круглые скобки, точка с запятой не ставится. Оператор иногда называется телом цикла. В теле цикла должны выполняться действия, в результате которых меняется значение управляющего выражения. В противном случае можем получить бесконечный цикл.

Пример (EX11):

#include<stdio.h>

int main() {

int i, s;

i = 1;

while (scanf("%d", &s)) {

printf("Введенное число %d\n", s);

i++;

};

}

Оператор цикла do-while: do { … } while (выражение);

Действие: В операторе do-while тело цикла выполняется по крайней мере один раз. Тело цикла будет выполняться до тех пор, пока выражение в скобках не примет ложное значение. Если оно ложно при входе в цикл, то его тело выполняется ровно один раз.

Комментарий: После слова while и выражения, заключенного в скобки, ставится точка с запятой. Если в теле цикла содержится более одной инструкции, то операторы цикла заключаются в фигурные скобки.

Например (EX12):

#include<stdio.h>

int main() {

int i, s;

i = 1;

do {

printf("Введенное число %d\n", s);

i++;

} while (scanf("%d", &s));

}

ОПЕРАТОР BREAK

Описание: break используется для прекращения выполнения цикла из-за обнаружения ошибки, для организации дополнения к условию в заголовке цикла, для прекращения бесконечного цикла. Например:

while (st > 0 && st < 25) {

if (st == 4||st == 8||st == 12) break;

}

Работа цикла полностью прекращается, как только условие в операторе if становится истинным.

ОПЕРАТОР CONTINUE

Действие. Этот оператор может использоваться во всех трех типах циклов. Как и в случае оператора break, он приводит к изменению характера выполнения программы. Однако вместо завершения работы цикла наличие оператора continue вызывает пропуск "оставшейся" части итерации и переход к началу следующей.

Например:

Заменим в предыдущей программе оператор break на continue.

while (st > 0 && st < 25) {

if (st == 4 || st == 8|| st == 12) continue;

}

При истинном условии в операторе if оператор continue вызывает пропуск идущих за ним операторов тела цикла и осуществляется переход к началу следующей итерации.

ПРИМЕР ЗАДАЧИ. Вычислить значение функции у = f(x) для

Рис.11 Лекции по C++ для начинающих
для изменяющегося с шагом h, где
Рис.12 Лекции по C++ для начинающих

Продолжить чтение