Вы находитесь на странице: 1из 30

Сергей Талипов

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

«ЛитРес: Самиздат»
2020
Талипов С. Н.
Лекции по C++ для начинающих / С. Н. Талипов — «ЛитРес:
Самиздат», 2020
Лекции по Си и C++ для начинающих. Рассмотрены основные темы и
простейшие примеры, работающие на современных компиляторах.

© Талипов С. Н., 2020


© ЛитРес: Самиздат, 2020
С. Н. Талипов. «Лекции по C++ для начинающих»

Содержание
ТЕМА 1 – ТИПЫ ДАННЫХ. ВЫРАЖЕНИЯ. ОПЕРАТОРЫ 5
1) ДЕТАЛИ ЯЗЫКА 5
2) СТРУКТУРА ФАЙЛА, С КОТОРОГО НАЧИНАЕТСЯ 6
ПРОГРАММА
3) ТИПЫ ДАННЫХ В С++ 7
4) ВЫРАЖЕНИЯ 9
5) ОПЕРАТОР ПРИСВАИВАНИЯ 13
6) ОПЕРАТОР ВЫВОДА 14
7) ОПЕРАТОРЫ ВВОДА 17
ТЕМА 2 – ПРОГРАММИРОВАНИЕ РАЗВЕТВЛЯЮЩИХСЯ И 19
ЦИКЛИЧЕСКИХ АЛГОРИТМОВ
1) ПРОГРАММИРОВАНИЕ РАЗВЕТВЛЯЮЩИХСЯ 19
АЛГОРИТМОВ
2) ПРОГРАММИРОВАНИЕ ЦИКЛИЧЕСКИХ АЛГОРИТМОВ 24
Конец ознакомительного фрагмента. 30

4
С. Н. Талипов. «Лекции по C++ для начинающих»

Сергей Талипов
Лекции по C++ для начинающих
ТЕМА 1 – ТИПЫ ДАННЫХ.
ВЫРАЖЕНИЯ. ОПЕРАТОРЫ

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

Важным понятием языка является идентификатор, который в языке программирова-


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

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

Комментарий – часть программы, которая игнорируется компилятором и служит для


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

5
С. Н. Талипов. «Лекции по C++ для начинающих»

2) СТРУКТУРА ФАЙЛА, С КОТОРОГО


НАЧИНАЕТСЯ ПРОГРАММА

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

int main() {

}

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

#include <stdio.h>
int main() {
printf("Теперь можно идти устраиваться в Facebook!");
}

6
С. Н. Талипов. «Лекции по C++ для начинающих»

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

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

7
С. Н. Талипов. «Лекции по C++ для начинающих»

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

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


ния имеет вид: type name;
float A; int В = 6; char С;

8
С. Н. Талипов. «Лекции по C++ для начинающих»

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;
9
С. Н. Талипов. «Лекции по C++ для начинающих»

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++ значение переменной х сначала используется в выражении, и лишь затем пере-
менная увеличивается на единицу;
При ++х значение переменной х сначала увеличивается на единицу, а затем используется
в выражении.

ЛОГИЧЕСКИЕ ОПЕРАЦИИ
< меньше
<= меньше либо равно
== равно
>= больше либо равно
> больше
!= не равно

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

10
С. Н. Талипов. «Лекции по 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;
}

11
С. Н. Талипов. «Лекции по C++ для начинающих»

Программы с линейной структурой являются простейшими и используются, как пра-


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

12
С. Н. Талипов. «Лекции по C++ для начинающих»

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.

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

13
С. Н. Талипов. «Лекции по C++ для начинающих»

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 позиций)

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

14
С. Н. Талипов. «Лекции по C++ для начинающих»

Вызов функции 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);

15
С. Н. Талипов. «Лекции по C++ для начинающих»

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

16
С. Н. Талипов. «Лекции по C++ для начинающих»

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() {
17
С. Н. Талипов. «Лекции по C++ для начинающих»

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). Решить пример.


#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);
}
ПРИМЕР ЗАДАЧИ. Вычислить значения функций.

#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);
}

18
С. Н. Талипов. «Лекции по C++ для начинающих»

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

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

Последовательность выполнения программы определяется ветвлениями. Ветвление –


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

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

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


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

Например:
goto a2;

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


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

Например:
а2: к=5;

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


является нежелательным, так как он нарушает структурную наглядность программы.

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

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


if (проверка условия) {
инструкция 1
} else {
инструкция 2;
}

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


ложное – инструкция 2.

19
С. Н. Талипов. «Лекции по C++ для начинающих»

Например:
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() {
20
С. Н. Талипов. «Лекции по C++ для начинающих»

int i;
char ch;
printf("Введите целое число:\n");
scanf("%d", &i);

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


printf("Такой символ существует");
} else {
printf("Taкoгo символа нет");
}
}

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

#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). Вычислить функцию

#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 {
21
С. Н. Талипов. «Лекции по C++ для начинающих»

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':
22
С. Н. Талипов. «Лекции по C++ для начинающих»

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 не работают".

23
С. Н. Талипов. «Лекции по C++ для начинающих»

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);
}
24
С. Н. Талипов. «Лекции по C++ для начинающих»

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;
25
С. Н. Талипов. «Лекции по C++ для начинающих»

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). Вычислить значение функции , если


х изменяется с шагом 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). Вычислить сумму членов

ряда , для заданных n и х.

#include<stdio.h>
#include<math.h>

int main() {

26
С. Н. Талипов. «Лекции по C++ для начинающих»

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 тело цикла выполняется по крайней мере один раз. Тело
цикла будет выполняться до тех пор, пока выражение в скобках не примет ложное значение.
Если оно ложно при входе в цикл, то его тело выполняется ровно один раз.

27
С. Н. Талипов. «Лекции по C++ для начинающих»

Комментарий: После слова 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 вызывает пропуск идущих за ним
операторов тела цикла и осуществляется переход к началу следующей итерации.

28
С. Н. Талипов. «Лекции по C++ для начинающих»

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

ющегося с шагом h, где

29
С. Н. Талипов. «Лекции по C++ для начинающих»

Конец ознакомительного фрагмента.


Текст предоставлен ООО «ЛитРес».
Прочитайте эту книгу целиком, купив полную легальную версию на ЛитРес.
Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета
мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal,
WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам спо-
собом.

30

Вам также может понравиться