5. Краткие теоретические сведения
С++ является мощным языком. Он позволяет вам делать то, что невозможно в других языках. Однако это могущество не дается даром. С++ предоставляет вам достаточно возможностей, чтобы «повесить» компьютер. Крах программы обычно происходит при выходе за границу отведенной памяти или нарушении прав доступа к системным ресурсам.
С++ позволяет в полном объеме использовать возможности объектно-ориентированного программирования (ООП), позволяя вам создавать объекты, которые можно использовать не только в текущей, но и в будущих программах.
! Объект (object), подобно компонентам, представляет собой участок двоичного кода, выполняющий определенную задачу. (Компоненты являются объектами, но не все объекты — компоненты.)
Объект раскрывает пользователю (программисту, использующему этот объект) только ту часть себя, которая необходима для работы с ним. Все внутренние механизмы, о которых пользователю не нужно знать, скрыты от взгляда. Все это входит в концепцию объектно-ориентированного программирования. Программы C++Builder являются объектно-ориентированными по причине интенсивного использования объектов. После того, как объект (ваш собственный или встроенный в C++Builder) создан, он может использоваться в любой программе C++Builder. Объект также может быть расширен путем наследования для создания нового объекта с дополнительными свойствами. Самым ценным является то, что объекты скрывают свои внутренние детали и позволяют программисту сконцентрироваться на достижении максимальной эффективности их использования.
!Переменная - это имя, присвоенное некоторому участку памяти.
После объявления переменной вы можете использовать ее для операций с данными в памяти.
Имена переменных могут состоять из букв верхнего и нижнего регистров, цифр и знака подчеркивания (_), но не могут содержать пробелы или другие специальные символы. Имя переменной должно начинаться с буквы или знака подчеркивания. Максимально допустимая длина имени переменной 31 символ.
Типы данных С++! В С++ тип данных (data type) определяет способ хранения информации в памяти.
В таблице 1.1 приведены базовые типы данных С++, их размеры и диапазоны допустимых значений.
Таблица 1.1.
Тип данных | Размер в байтах | Диапазон допустимых значений |
char | 1 | от -128 до 127 |
unsigned char | 1 | от 0 до 255 |
short | 2 | от -32 768 до 32 767 |
unsigned short | 2 | от 0 до 65 535 |
long | 4 | от -2 147 483 648 до 2 147 483 647 |
unsigned long | 4 | от 0 до 4 294 967 295 |
int | 4 | совпадает с long |
unsigned int | 4 | совпадает с unsigned long |
float | 4 | от 1.2Е-38 до 3.4Е38 |
double | 8 | от 2.2Е-308 до 1.8Е308 |
bool | 1 | true или false |
С++ автоматически выполняет преобразования между различными типами данных, когда это возможно.
Пример 1.
// явление "заворачивания"
#pragma hdrstop
#include <condefs.h>
#include <iostream.h>
#include <conio.h>
//----------------------------
#pragma argsused
int main(int argc, char** argv)
{int x;
х = 2147483647;
cout << "x = " << x<<endl;
x++;
cout << "x = " << x<<endl;
getch();
return 0;
}
Операторы С++
! Операторы (operators) используются для обработки данных. Операторы выполняют вычисления, сравнения, присваивания, а также много других специфических задач.
В таблице 1.2 приведены обычно используемые операторы С++
Таблица 1.2.
Оператор | Описание | Пример |
Арифметические операторы | ||
+ | Сложение | Х = Х + Z; |
- | Вычитание | Х = у - 2; |
* | Умножение | х = у * х; |
/ | Деление | х = у / z; |
% | Остаток от деления целых чисел | х=х%у; |
Операторы присваивания | ||
= | Присваивание | х = 10; |
+= | Сложение с присваиванием | х += 10; (то же, что и х = х + 10;) |
-= | Вычитание с присваиванием | х -= 10; |
*= | Умножение с присваиванием | х *= 10; |
/= | Деление с присваиванием | х /= 10; |
&= | Поразрядное И с присваиванием | х &= 10; |
|= | Поразрядное ИЛИ с присваиванием | х |= 10; |
Логические операторы | ||
&& | Логическое И | if (х && OxFF) {...} |
|| | Логическое ИЛИ | if (х || OxFF) {...} |
Операторы отношения | ||
= = | Равно | if (x = = 10) {…} |
!= | Не равно | if (x != 10) {...} |
< | Меньше | if (x< 10) {...} |
> | Больше | if (x > 10) (...) |
<= | Меньше или равно | if (x<=10) {...} |
>= | Больше или равно | if (x >= 10) {...} |
Унарные операторы | ||
* | Косвенная адресация | int х = *у; |
& | Взятие адреса | int* х = &у; |
~ | Поразрядное НЕ | х &= ~0х02; |
! | Логическое НЕ | if (!valid) {...} |
+ | Инкремент | x++; (то же, что и х = х + 1;) |
-- | Декремент | х--: |
Операторы классов и структур | ||
:: | Разрешение области видимости | MyClass::SomeFunction(); |
-> | Косвенный доступ | MyClass->SomeFunction(); |
. | Прямой доступ | MyClass.SomeFunction(); |
Как видите, список операторов слегка ошеломляет, но не пытайтесь сразу запомнить каждый из них. Работая с С++, вы постепенно научитесь использовать все эти операторы.
Следует заметить, что в некоторых случаях операторы могут быть как преинкрементными (++х), так и постинкрементными (х++). Преинкрементный (pre-increment) оператор указывает компилятору: «Увеличить значение переменной и затем использовать эту переменную». Постинкрементный (post-increment) оператор указывает компилятору: «Сначала использовать переменную, а затем увеличить ее значение» (см. пример 2).
Пример 2.
#pragma hdrstop
#include <condefs.h>
#include <iostream.h>
#include <conio.h>
//----------------------------
#pragma argsused
int main(int argc, char** argv)
{int a, b;
b = 10;
a = b++;
cout << "a = " << a << " b = " << b << endl;
b = 10;
a = ++b;
cout << "a = " << a << " b = " << b << endl;
getch();
return 0;
}
Пример 3.
#pragma hdrstop
#include <condefs.h>
#include <iostream.h>
#include <conio.h>
//----------------------------
#pragma argsused
int main(int argc, char** argv)
{ int a, b;
float a1,b1;
a = 5; b = 3;
cout << "a / b = " << a/ b << endl
<<"a % b = "<<a%b<<endl;
a1 = 5; b1 = 3;
cout << "a1 / b1 = " << a1/ b1 << endl;
getch();
return 0;
}
Пример 4
//программа вычисления площади треугольника по высоте и основанию
#pragma hdrstop
#include <condefs.h>
#include <iostream.h>
#include <conio.h>
//----------------------------
#pragma argsused
int main(int argc, char** argv)
{float a,h,S;
cout << "Введите длину основания и высоту: " << endl;
cin >> a >> h; //ввод данных с клавиатуры
S = a*h/2;
cout << "Площадь треугольника S = " << S << endl;
getch();
return 0;
}
6. Выполнение работы
1. Запустите среду С++Builder, дважды щелкнув левой кнопкой мыши по соответствующей пиктограмме на рабочем столе.
2. Запустите консольное приложение. (Выберите в главном меню пункт File | New. В открывшемся репозитории дважды щелкните на Console Wizard для создания нового консольного приложения. В открывшемся окне нажмите на кнопку Finish).
3. В окне редактора кода наберите программу Пример 1.
4. Для компиляции и запуска программы щелкните на кнопке Run оперативной панели.
5. Определите в чем заключается явление "заворачивания".
6. Повторите пп. 3-4 для программы Пример 2. Определите чем отличаются преинкрементный и постинкрементный операторы.
7. Повторите пп. 3-4 для программы Пример 3. Определите в чем отличие деления целых и вещественных чисел.
8. Повторите пп. 3-4 для программы Пример 4.
9. Напишите программу вычисления объема конуса (s=1/3pr2h). Повторите пп. 3-4 для этой программы.
10. Напишите программу пересчета величины временного интервала, заданного в минутах, в величину, выраженную в часах и минутах. (Например, 150 мин. - это 2 ч. 30 мин.). Повторите пп. 3-4 для этой программы.
Контрольные вопросы
1. Что такое объектно-ориентированное программирование?
2. Что такое переменная?
3. Какой тип могут иметь целые переменные?
4. Какой тип могут иметь вещественные переменные?
5. Какое значение имеет переменная после объявления?
6. Что делает функция getch()?
7. Можно ли присвоить переменной целого типа значение, содержащее дробную часть?
8. В чем заключается явление "заворачивания"?
9. Как получить целую часть от деления целых чисел?
10. Как получить остаток от деления целых чисел?
... ООП. Сейчас язык С++ является языком публикаций по вопросам ООП. Практикум на С/С++:Фактически С++ содержит 2 языка: Полностью включает низкоуровневый Си, поддерживающий конструкции СП, и, собственно, С++ (Си с классами) – язык объектно-ориентированного программирования (ООП). Мы находимся сейчас на технологической ступени структурного программирования, поэтому начинаем с Си: Знакомство с С, ...
... безболезненно производить модернизацию программы в процессе ее эксплуатации и облегчает ее сопровождение. Дополнительно модульный подход позволяет разрабатывать части программ одного проекта на разных языках программирования, после чего с помощью компоновочных средств объединять их в единый загрузочный модуль. · Реализуемые решения должны быть простыми и ясными. Если назначение модуля ...
... профессором Н. Виртом, язык назван в честь французского математика и по замыслу автора предназначался для обучения программированию. Однако язык получился на столько удачным, что стал одним из основных инструментов прикладных и системных программистов при решении задач вычислительного и информационно-логического характера. В 1979 году был подготовлен проект описания языка – Британский стандарт ...
... доступа с записью равной байту. Такие файлы называются двоичными. Файлы прямого доступа незаменимы при написании программ, которые должны работать с большими объемами информации, хранящимися на внешних устройствах. В основе обработке СУБД лежат файлы прямого доступа. Кратко изложим основные положения работы с файлами прямого доступа. 1). Каждая запись в файле прямого доступа имеет свой номер ...
0 комментариев