Главная Случайная страница


Полезное:

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

Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Определение переменной. Наиболее простым объектом программы является переменная





 

Наиболее простым объектом программы является переменная. Она характеризуется типом и значением. Для определения переменной используются следующие базовые

типы:

- unsigned char ( беззнаковый символьный) - 1 байт;

- char (символьный ) - 1 байт;

- unsigned int (беззнаковый целый ) - 2 байта;

- int (целый) - 2 байта;

- unsigned long (беззнаковое длинное целое) - 4 байта;

- long (длинное целое) - 4 байта;

- float (вещественный) - 4 байта;

- double (вещественный с удвоенной точностью) - 8 байтов;

- long double (длинное вещественное с удвоенной точностью) - 10 байтов;

- void (отсутствие значения);

- enum (перечислимый) - 2 байта;

- bool (логический) - 1 байт.

 

Определение переменной начинается с указания типа, за которым следует имя переменной (идентификатор) и (необязательно) инициализирующее выражение.

Например:

char symbol = ‘\n’;

double pi = 3.141592653589;

long double s;

unsigned int a, b, c; // 0.. 65535

unsigned char ch; // 0..255

 

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

Например:

….

int i;

cout << sizeof (i); // 2

….

Для более удобного обозначения составных типов можно использовать ключевое слово typedef:

 

typedef unsigned char cod;

Здесь cod - это новое имя типа unsigned char. Далее в программе можно сослаться на это имя при определении, например, переменных:

cod x,y;

В языке С++ из базовых типов можно создавать производные типы с помощью [ ] , ( ) и *, например, указатели, массивы, прототипы функций.

Например:

int array[5]; // массив array из 5-ти целых чисел.

 

Выражения.

 

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

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



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

Арифметические операции: +, -, *, /, %, ++, -- .

Примеры записи арифметических выражений:

 

float x, ALPHA, BETA;

int Z1, Z2;

int MAS[4];

….

157 // целая константа

x // вещественная переменная

cos(x) // обращение к числовой функции

ALPHA*(BETA – 4.5) // вещественные выражения

Z1 % Z2 // целое выражение

MAS[2] + 1

Z1 ++

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

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

В языке С++ существует неявное и явное преобразование типов.

Неявное преобразование выполняется компилятором в соответствии со следующими правилами.

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

 

(char,unsigned char, enum) -> int

 

Все остальные типы приводятся к типу самого большого операнда. Например, если один операнд имеет тип int , а другой - long int (long) , то тип int расширяется в тип long int. Или, если хотя бы один из операндов имеет тип double, любой другой приводится к типу double. После преобразования оба операнда будут иметь один и тот же тип.

Значения типа bool при использовании в целочисленном выражении автоматически преобразуются в целые числа 0 и 1. При обратном преобразовании нуль преобразуется в false, а ненулевое значение – в true.

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

Рассмотрим пример.

 

#include <iostream.h>

void main()

{ long k = 123456789;

float g = (float) k;

cout << “\n k = “ << k; // к = 123456789

cout << “\n g = “ << g; // g = 1.234567е+8

k = (long) g;

cout << “\n k = “ << k; // к = 123456792

}

 

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

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

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

>, <, >=, <=, !=, = =. Выражение отношения принимают значение true, если соотношение имеет место и false в противном случае.

При записи логических выражений можно пользоваться следующими логическими операциями:

!, &&, ||, &, |, ^



Примеры записи логических выражений:

B != false && x = = y

X <= 1 || y >=0

Значением логического выражения является логическая константа true или false.

 

Вопросы

1 Операндом арифметического выражения может быть:

1. числовая константа;

2. числовая переменная;

3. логическое выражение;

4. строка;

5. обращение к числовой функции

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

1. выражение отношения;

2. логическая константа;

3. логическая переменная;

4. адрес;

5. числовая переменная.

3. Если значение логической переменной x равно true, а значение логической переменной y равно false, то значение выражения

x | y

равно

1. false;

2. true;

3. 1;

4. 0.

4. Укажите корректную запись выражения

4x+[y(2x+3)+x]lnx

1. 4x+(y*(2*x+3)+x)ln(x)

2. 4*x+(y*(2*x+3)+x)*log(x)

3. 4x+[y*(2*x+3)+x]*ln(x)

4. 4*x+(y*(2x+3)+x)ln(x)

 

Лекция 6

 

Основные операторы языка С++

 

1. Оператор присваивания. Используется для присваивания значения переменной.

1. Синтаксис:

<переменная> = <выражение>;

 

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

2. Семантика: вычисляется значение выражения, которое записывается по адресу, соответствующему переменной. Тип выражения приводится к типу переменной.

Например:

int x;

char ch;

float f;

ch = x; // 1 строка

x = f; // 2 строка

f = ch; // 3 строка

f = x; //4 строка

 

В 1 строке символьной переменной ch будут присвоены младшие 8 бит. Во 2 строке переменная х получит часть значения f.

|| При преобразовании вещественного числа в целое отбрасывается дробная часть.

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

В 4 строке целое значение типа int будет преобразовано в формат с плавающей точкой. Следует отметить, что при преобразовании целого числа в логическое значение типа bool 0 превращается в false, а отличное от нуля значение – в true

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

Напимер: int x,y,z;

x = y = z = 100;

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

for ( int i = 0, p =1; i< 5; i++, p* = i);

 

3. Составной оператор. Это последовательность операторов, заключенная в фигурные скобки { …. } .

 

  1. Синтаксис:

{ <оператор 1>;

<оператор 2>;

…..

<оператор к>;

}

2.. Семантика: операторы выполняются последовательно друг за другом. Составной оператор используется тогда, когда в соответствии с синтаксисом нужно написать оператор, а по смыслу выполнить несколько действий.

Если среди операторов имеются определения объектов, то составной оператор превращается в блок. Внутри блока и составного оператора любой оператор заканчивается “;”

Примеры:

{ int a; char symbol = ‘a’; a = (int) symbol; cout << a; } // блок

{ x = 4; z = 4*x + 3; cout << x << z; } // составной оператор

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

4. Операторы выбора. К операторам выбора относят условный оператор ( if … else) и переключатель (switch).

4.1 Условный оператор

 

  1. Синтаксис:

if (<выражение>)

<оператор 1>;

else

<оператор 2>;

Здесь <выражение > - это логическое или арифметическое выражение, <оператор 1> и <оператор 2> - любые операторы С++, в том числе блоки или составные операторы..

  1. Семантика:

Вначале вычисляется значение <выражения>. Если оно “истина” (выражение # 0 ), то выполняется <оператор 1>, в противном случае <оператор 2>.

Пример.

if (x<0)

{

x = -x;

f(x+2);

}

else

{

int i = 2;

x *= i;

f(x);

}

Все объекты, определенные в блоке, локализованы в нем.

Например:

if (j > 0)

{

int i;

i = 2*j;

}

else

i = - j; // ошибка: переменная i видима внутри блока

 

Пример. Вычислить частное от деления двух целых чисел.

#include <iostream.h>

void main()

{

int a,b;

cout << “ Введите числитель: “ ;

cin >> a;

cout << “ Введите знаменатель: “ ;

cin >> b;

if(b)

cout << “ Результат: “ << a / b << ‘\n’;

else

cout << “ на нуль делить нельзя. \n “ ;

}

Допустима сокращенная форма условного оператора, в которой отсутствует ветвь else.

Например:

if (a < 0 ) a = -a;

В этом случае при невыполнении условия никакие действия не выполняются.

Следует отметить, что <оператор 1> и <оператор 2> могут быть условными без ветви else. Синтаксис языка предполагает, что при вложенных условных операторах каждая ветвь else соответствует ближайшему к нему оператору if.

Пример: Найти максимальное значение из трех вещественных чисел: x, y, z.

…..

if ( x < y)

if ( y < z)

max = z;

else

max=y;

 

else

if(x<z)

max=z;

else

max=x;

….

 

4.2. Переключатели

 

Этот оператор позволяет делать выбор одной из множества альтернатив.

1. Синтаксис.

switch (<выражение>)

{ case <константа 1> : <оператор 1>;

case <константа 2> : <оператор 2>;

……..

case <константа n> : <оператор n>;

default : <оператор>;

}

Здесь <выражение> и константы должны быть одного символьного или целого типа,

<оператор i> - любой оператор С++.

2. Семантика. Вначале вычисляется значение <выражения>. Затем выполняется поиск оператора, которому предшествует константа, равная значению <выражения>. Если такой оператор найден, он выполняется, в противном случае осуществляется переход к оператору с меткой default. Если эта метка отсутствует, то не выполняется ни один из операторов. Если в конструкции выбора (альтернативе) не предусмотрен выход из переключателя с помощью оператора break, то в переключателе последовательно выполняются все операторы, начиная с той метки, на которую передано управление до тех пор, пока не встретится break или конец оператора switch В переключателе каждому оператору может предшествовать несколько констант выбора, которые отделяются друг от друга символом “:”.

Пример. Вывести на экран название нечетных цифр, которые не меньше заданной. Если задана цифра 2, то вывести 2,5,7,9 и т.д.

 

#include <iostream.h>

void main()

{ int cifra;

cout << “Введите цифру : “;

cin >> cifra;

cout << ‘\n’;

switch (cifra)

{ case 0: case 1: cout << “один, ”;

case 2: case 3: cout << “три, ”;

case 4: case 5: cout << “пять, ”;

case 6: case 7: cout << “семь, ”;

case 8: case 9: cout << “девять. ”;

break;

default : cout << “ошибка !”;

}

}

 

Результаты:

 

Введите цифру : 4

пять, семь, девять.

Введите цифру : а

ошибка !

 

Если поместить операторы break после вывода каждой цифры, то программа будет выводить на экран название только одной нечетной цифры.

Вопросы

1.Значение R после выполнения операции логического присваивания

R = ! (A || B || (X > 2) && (Y < 0))

при A = false, B = false, X = 3, Y = 2 будет равно

1. –1;

2. false;

3. true;

4. 0;

5. 1.

2. Значения переменных p и d после выполнения фрагмента кода

int k=47,d; bool p;

switch(k%9)

{case 5:{d=k;p=true;break;}

case 0:case 1:case 2:{d=2;p=false;break;}

case 8:{d=1;p=true;break;}

}

равны

1. p = true, d = 1;

2. p = false, d = 2;

3. p = false, d = 3;

4. p = true, d = 47;

5. p = true, d = 2.

3. Фрагмент программы

S = A; A = B; B = S;

выполняет

1. обмен значений переменных A, B;

2. присваивание переменным А, B значения S;

3. замена значения переменной A значением переменной B;

4. во фрагменте не выполняется никаких действий;

5. замена значения переменной B значением переменной A.

 

 






Date: 2015-12-12; view: 160; Нарушение авторских прав

mydocx.ru - 2015-2019 year. (0.02 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию