Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 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 >; < оператор 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 Условный оператор
if (<выражение>) <оператор 1>; else <оператор 2>; Здесь <выражение > - это логическое или арифметическое выражение, <оператор 1> и <оператор 2> - любые операторы С++, в том числе блоки или составные операторы..
Вначале вычисляется значение <выражения>. Если оно “истина” (выражение # 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: 611; Нарушение авторских прав |