Главная
Уроки и советы


С++ для начинающих !
Урок 4

1. От автора

Также в предыдущем номере последний пример программы был нерабочий - всё дело в преобразовании HTML кода в HomeSite произошла вставка новых тегов для совместимости. Исправленная версия лежит на сайте http://www.sunday.ru/hitecos в разделе архив.



 
2. Переменные

 

В предыдущих программах мы использовали только константы, которые один раз записывались и больше не изменялись. Например, во время работы программы считающей выражение 5+5 - уже нельзя изменить какое-либо число, т.е. записали 5+5 так оно, и будет всегда. 
Для начала этого хватало, но программы росли и расширялись, и теперь потребовалась способность изменять данные в процессе выполнения программы. 
На помощь пришли переменные, которые способны в себе как в "ящике" хранить какое-либо число или букву и ее в любой момент использовать (записать, стереть). 

Числа бывают целого (1,2,3,…) и вещественного типа (1.5, 3.14, 0.019,… ), а в С++ есть еще и типы данных, которые могут быть со знаком (например, минус "-") так и без него - их называют знаковые и беззнаковые.
Чтобы в программе можно было использовать переменную, ее надо объявить, а потом только использовать. Переменные объявляются так: тип_переменной имя_переменной; имя для переменной Вы можете придумать любое, только чтобы оно не совпадало с именами служебных команд языка С(например void ).
Любое имя переменной должно начинаться с буквы (например "per"), но не с цифры, в крайнем случае можно использовать знак подчеркивания (например _ento_peremennay ). В С++ переменные, которые могут содержать только целые числа объявляются как int (целый тип ).
Напишем программу, которая создаёт переменную типа int и выводит ее значение.
 
#include <iostream.h>

void main(void)
{
 int i; // объявление переменой, где int - тип, i - имя

 cout << i;//вывод переменной i
}

Объявление переменных - это резервирование кусочка памяти, куда будут заноситься определенные данные. Но в памяти могут находиться данные от старых программ, и возможно именно в том кусочке, который был зарезервирован под переменную могут находятся остаточные данные, и тогда при вызове переменной программа будет использовать эти данные, находящиеся в памяти. Чтобы этого не произошло, надо присвоить переменной 0 или другое число, которое вам пригодиться.
!!! С/С++ различает заглавные и прописные буквы! Будте внимательны.

Программа, которая при объявлении инициализирует две переменные - одну в 0, другую в -100 и выводит их результат:
 
 
#include <iostream.h>

void main(void)
{
 int a= 0;// присвоение значения при объявлении переменной
 int b=-100;

 cout << a << " и " << b;// вывод обоих переменных
}

Чтобы присвоить значение переменной - Вы просто указываете имя переменной, оператор присваивания (=) и значение (константу или переменную) которое хотите присвоить: a= 10 b= a;

Программа, которая создаёт две переменные и с их помощью манипулирует данными:
 
#include <iostream.h>

void main(void)
{
 int a,b;// создание переменных целого типа с именем a и b

 a= 10;// заносим в переменную a значение 10
 b= 0;// очищаем переменную b

 cout << "Значение переменной a=" << a << endl;
 cout << "Значение переменной b=" << b << endl;

 b=a;
 cout << "после операции b=a, переменная b присвоила значение а" << endl;

 cout << "Значение переменной a=" << a << endl;
 cout << "Значение переменной b=" << b << endl;
}

Как Вы видите, объявлять переменные одного типа можно через запятую(int a,b, ... )

Ещё раз об именах переменных.
Имена переменных можно строить из одной, двух или нескольких букв, можно даже применять целые слова, чтобы было понятно, что именно храниться в переменной.
Например:
int year;
int day;
int time;
int more_time;
...

Переменные, которые могут хранить десятичные (вещественные) значения(3.14, 0.05 ).
Переменные вещественного типа отличаются от целого - тем, что в них можно хранить значения с плавающей запятой (у нас запятая, а у американцев разделителем является точка). Если Вы присвоите переменной целого (int ) типа десятичное значение, то все числа после запятой (точки) будут потеряны. 
Например:
int a=3.14;
cout << a;
результат будет равен 3, т.е. записалась только целая часть, а дробная откинулась.

Специально для хранения в переменных вещественных значений, в С++ существует такой тип, как float. Напишем программу по вычислению площади круга, которая работает с типом float(5.2, 0.001,... ):
 
 
#include <iostream.h>

void main(void)
{
 float pi= 3.14;// значение числа Пи
 < /FONT> int R=17;// радиус круга возьмем=17
  float S;// сюда запишем вычисленную площадь круга

 S=pi*R*R;

 cout << endl << S << endl;
}


 

Программа по взятию корня=3, с использованием типа float 
 
#include <iostream.h>
#include <math.h>

void main(void)
{
 float a;

 a= sqrt(3);// использование функции взятия корня sqrt
 cout << a;
}



Задание:
1. Вычислите объем конуса по формуле V=(1/3)*Pi*R*R*H, где Pi - число Пи=3.1415926, R - радиус конуса=19, H - высота=99.19;

2. Вычислить диагональ прямоугольника, если сторона a=10.01, b=11.2. Здесь можно применить функцию извлечения квадратного корня(sqrt()) заголовочного файла math.h.



 
 
3. "Точность - вежливость королей" или понятия о размерах и точности переменных

 

Все бы хорошо, но вот размер переменных разный, да и точность некоторых оставляет желать лучшего. Для эксперимента присвойте переменной типа float значение равное=3.123456789, а потом выведите его - Вы увидите, что вывелось значение равное=3.1234567, а остальное было потеряно. Поэтому в расчетах тип float лучше использовать там, где нужна точность не более 7 знаков после запятой.

На начальных примерах в переменные закладывались значение не очень большого значения - этого вполне хватало, а вот если в переменную типа int присвоить число равное 40000 или больше? Программа работать будет, да вот только в этой переменной будет храниться не 40000, а -25536! А произошло это из-за выхода значения за допустимый размер, который может хранить переменная. Тип int может содержать значения в диапазоне от -32768 до 32768. Конечно, можно сделать тип int беззнаковым - добавив к нему служебное слово unsigned: unsigned int имя_переменной ; теперь переменная может хранить только положительные целые числа в диапазоне от 0 до 65535. Если Вам и этого будет мало, что очень вероятно, то в С++ существуют другие типы данных, большего объема и точности.

целые:
char от -128 до 127;
unsigned char от 0 до 255;
int от -32768 до 32768;
long от -2 147 483 648 до 2 147 483 647;

действительные:
float от -3.4Е-38 до 3.4Е38; точность 7 десятичных цифр
double от -1.7Е-308 до 1.7Е308; точность 15 десятичных цифр
long double от -3.4Е-4932 до 3.4Е4932; точность 19 десятичных цифр



 

Хранение символов в переменных .

Иногда в программе нужно вывести какой-нибудь символ - это может быть цифра или элемент псевдографики, который "зашит" в 886 кодовую страницу. Как Вы наверно помните, что каждому символу дан свой код, который может варьировать от 0 до 255. Тип char был указан как целочисленный тип, но обычно его используют для хранения букв алфавита. Принцип действия такой: при присвоении переменной типа char буквы(char a='A';), в переменную записывается код этой буквы, а при выводе на экран - выводиться буква под тем кодом. Но код буквы - тоже цифра, поэтому этот тип данных также можно использовать при вычислениях.

Программа, которая присваивает одной переменной букву, второй код другой буквы, и все это выводит:
 
#include <iostream.h>

void main(void)
{
 char a,b;
 int b1;

 a= 'X';//присвоение буквы "Х" переменной a 
 b=121;
cout << a << ", " << b << endl;

b1= b;// пересылка кода буквы "Х" в переменную целого типа

cout << b1;//вывод код буквы "Х"
}



Задание:
Напишите программу, которая создает три переменных разного типа, записывает в одну число 25000, в другую 17001.125, в третью букву "Ю" с последующим выводом на экран всех переменных.


Источник http://www.sunday.ru/hitecos
Hosted by uCoz