Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 3000101.doc
Скачиваний:
9
Добавлен:
30.04.2022
Размер:
370.18 Кб
Скачать

2.3. Символы и строки символов

Для работы с отдельными символами используются описания переменных типа

char sym1, sym2, sym3, c;

В программе можно явно присвоить значение переменной типа char

sym1 = ‘A’; sym2 = ‘a’;

sym3 = ‘c‘; c = ‘0x1B’; // ASCII символ

Ввод с клавиатуры:

scanf(“%c “, &sym1); sym1 = getchar();

Вывод на экран:

рrintf (“%c”, sym1); рutchar(sym1);

Фрагмент программы, выводящей на экране вводимые с клавиатуры символы до тех пор, пока не нажата клавиша Enter.

while((c = getchar( )) != ‘\ n’ ) рutchar(с);

2.4. Escпоследовательности

Esc-последовательности - это специальные символьные комбинации, которыми представляются неграфические и пробельные символы в строковых и символьных константах. Esc - последовательность cостоит из \ и следующей сразу за ней буквы или комбинации цифр:

\n - новая строка, \t - горизонтальная табуляция,

\v – вертикальная табуляция, \b – пробел,

\а – звонок, \` - одиночная кавычка,

\” - двойная кавычка, \\ - наклонная черта влево,

\ddd - восьмеричный код ASCII, \xdd -шестнадцатиричный код ASCII,

\c - означает обычный символ с.

Контрольные вопросы

1. Какие операции можно применять к указателям?

2. Каков результат выполнения оператора c[i]=i++; ?

3. Для чего и как происходит динамическое распределение памяти?

4. Что такое Esc-последовательность?

5. Для чего используются индексные выражения?

6. Каким образом выделяется память под массивы?

7. Что общего между массивами и указателями?

8. Как располагаются в памяти элементы многомерного массива?

3. Операторы

Простейшим оператором является оператор присваивания:

double x; int y; x=y; int fl=0, cfl=1;

#define MASK 0xfff

n=MASK;

j=i++;sum+=a[i]; q=(р==0)?(р+=1):(р+=2); l=b!!c;

d=0; a=b++=c++=d++; // значение а непредсказуемо

Обращения к функциям, вложенные операции присваивания, операции увеличения и уменьшения приводят к так называемым "побочным эффектам" - некоторые переменные изменяются в результате вычисления выражений. В любом выражении, в котором возникают побочные эффекты, могут существовать очень тонкие зависимости от порядка, в котором определяются входящие в него переменные. Примером типичной неудачной ситуации является оператор A[I] = I++; Возникает вопрос, старое или новое значение I служит в качестве индекса. Компилятор может поступать разными способами и в зависимости от своей интерпретации выдавать разные результаты.

Оператор if else организует ветвление в программе:

If(условие) оператор 1; else оператор 2;

Если условие истинно, то выполняется оператор 1, иначе - оператор 2. Оператор if else допускает любое число вложений, но проверка прекращается, если встречается истинное условие. Else - условие может опускаться.

if(num!=0 && 12/num==2) cout<<“YES!”;

else cout<<“NO”;

Более простое ветвление получается с помощью оператора switch:

switch (выражение) {

case константа 1:

оператор; . . .; оператор;

break;

case константа 2:

оператор; . . .; оператор;

break;

. . . . . . . . . . .

case константа n:

оператор; . . .; оператор;

break;

default:

оператор; . . .; оператор; }

Выражение может быть только целого типа. Его значение сопоставляется со всеми находящимися внутри switch-оператора case-константами, и выполняются те операторы, для которых установлено равенство. Если равенство не установлено, то выполняются операторы с меткой default:. Оператор break передает управление за пределы оператора switch. Если break отсутствует, то после найденного совпадения будут выполняться все операторы switch.

Оператор for организует цикл:

for(выражение 1; выражение 2; выражение 3 )

оператор;

выражение 3 (приращение) вычисляется после каждого прогона цикла;

выражение 1 (инициализация) вычисляется перед началом цикла;

выражение 2 (условие) - до и после каждого прогрона цикла.

Оператор тела цикла выполняется до тех пор, пока истинно выражение 2.

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

Фрагмент программы вычисления суммы чисел от 0 до 9:

#include <iostream.h>

void main() {

for(int counter=0, int add_counter=0; counter<10; counter++, add_counter+=counter)

// “,” используется для последовательного вычисления нескольких операторов

cout<<“Значение counter “<<counter<<endl;

// endl означает переход на новую строку

cout<<“Значение суммы “<<add_counter<<endl; }

Для организации цикла с предусловием используется оператор while: