Kitabı oxu: «Лекции по C++ для начинающих»

Şrift:

ТЕМА 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) ТИПЫ ДАННЫХ В С++





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



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



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

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


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

< меньше

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

== равно

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

> больше

!= не равно


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


Перед аргументом и функцией указан допустимый тип (при программировании эта запись типа опускается). Для работы с математическими функциями необходимо перед функцией 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). Решить пример.

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

}



Pulsuz fraqment bitdi.

Janr və etiketlər

Yaş həddi:
12+
Litresdə buraxılış tarixi:
05 iyun 2021
Yazılma tarixi:
2020
Həcm:
81 səh. 20 illustrasiyalar
Müəllif hüququ sahibi:
Автор
Yükləmə formatı:
Mətn PDF
Orta reytinq 4,8, 36 qiymətləndirmə əsasında
Mətn
Orta reytinq 4,2, 55 qiymətləndirmə əsasında
Mətn PDF
Orta reytinq 3,4, 26 qiymətləndirmə əsasında
Mətn PDF
Orta reytinq 3,8, 16 qiymətləndirmə əsasında