Литмир - Электронная Библиотека

Рисунок 1

Типы данных

Типы данных:

char хранит символ (один байт),

int – целочисленные значения,

float – вещественные значения с одинарной точностью,

double – вещественное значения с двойной точностью и т.д.

Модификаторы:

short – короткое целое,

long – длинное целое.

Диапазон значений зависит от аппаратной и системной платформы.

Например, int будет или 16, или 32. Узнать это возможно, используя операцию sizeof(), она возвращает размер в байтах, смотри Листинг 8, Рисунок 2.

Листинг 8

#include<iostream>

using namespace std;

int main()

{

cout<<sizeof(int);

}

Программирование на С, С++ - img_3.png

Рисунок 2

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

Программный блок – это часть программы между фигурными скобками.

Локальные переменные живут только во время программного блока. Локальные переменные объявлены внутри блока.

Глобальная переменная живет на протяжении всей жизни программы. Глобальная переменная объявляется вне блоков программы.

Пример в Листинге 9. Если убрать скобки в строках 8 и 9, компилятор выдаст ошибку.

Листинг 9

1#include<iostream>

2using namespace std;

3

4 int main()

5 {

6      int i=10;

7      cout<<i;

8      {

9            int i=11;

10 cout<<endl<<i;

11      }

12}

Преобразование типов

В зависимости от версии компилятора, округление будет либо в большую, либо в меньшую сторону. Смотри Листинг 10, Рисунок 3.

Листинг 10

#include<iostream>

using namespace std;

int main()

{

int y;

y=(int)(3/10);

cout<<y<<endl;

y=(int)(10/3);

cout<<y;

}

Программирование на С, С++ - img_4.png

Рисунок 3

Поразрядные операции

Напишите программу, которая переводит введенное положительное число в двоичное систему счисления и выводит на экран результат перевода.

Пример решения задания в Листинге 11.

Листинг 11

#include <iostream>

using namespace std;

void dv(int a)

{

int b[100];

int i=0;

while(a>1)

{

b[i]=a%2;

      a=(a-a%2)/2;

      i++;

}

b[i]=a;

for(int j=i;j>=0;j–)

cout<<b[j];

}

int main()

{

int a;

cin>>a;

dv(a);

return 0;

}

Ниже даны тесты для проверки задач программы.

Тест 1

a=10

Результат

1010

Тест 2

a=2

Результат

10

Тест 3

a=8

Результат

1000

Поразрядные операции применимы только к целочисленным аргументам (char, short, int и long).

& – поразрядное И

| – поразрядное включающее ИЛИ

^ – поразрядное исключающее ИЛИ

<< – сдвиг влево

>> – сдвиг вправо

~ – одноместное поразрядное дополнение до единицы

В побитовых операциях работа идет над каждым битом.

Поразрядное включающее ИЛИ

Пример:

8 | 10 = 10

8 – это 1000 в двоичной системе счисления, 10 – это 1010 в двоичной системе счисления. С каждым битом числа выполняется операции логическое ИЛИ, и вместо этого бита ставится результат этой операции, смотри Рисунок 4.

Программирование на С, С++ - img_5.png

Рисунок 4

Поразрядное И

Пример:

8 & 10 = 8

8 – это 1000 в двоичной системе счисления, 10 – это 1010 в двоичной системе счисления. С каждым битом числа выполняется операции логическое И, и вместо этого бита ставится результат этой операции.

Пример программы в Листинге 12.

Листинг 12

#include <iostream>

using namespace std;

void dv(int a)

{

int b[100];

int i=0;

while(a>1)

{

b[i]=a%2;

      a=(a-a%2)/2;

      i++;

}

b[i]=a;

for(int j=i;j>=0;j–)

cout<<b[j];

}

int main()

{

int a,b;

int c;

cin>>a>>b;

c=a|b;

cout<<endl;

dv(a);

cout<<" | ";

dv(b);

cout<<" = ";

dv(c);

c=a&b;

cout<<endl;

dv(a);

cout<<" & ";

dv(b);

cout<<" = ";

dv(c);

return 0;

}

Ниже даны тесты для проверки задач программы.

Тест 1

a=10 b=8

Результат

1010 | 1000 =1010

1010 & 1000 =1000

Тест 2

a=11 b=3

Результат

1011 | 11 = 1011

1011 & 11 = 11

Сдвиг влево

Пример:

10 << 2 = 1000

Двоичная запись числа передвинется на 2 знака влево, на их место проставятся 0. Необходимо быть внимательными, так как в типе int и т.д. хранится ограниченное количество бит.

Сдвиг вправо

Пример:

100 >> 2 = 1

Двоичная запись числа передвинется на 2 знака вправо. 2 бита исчезнут.

Одноместное поразрядное дополнение до единицы

С каждым битом выполняется инверсия.

Пример:

x = ~8;

8 – это 1000 в двоичной системе счисления, после инверсии с каждым битом: 1 меняется на 0, 0 на 1. При хранении числа, один бит отвечает за знак, поэтому знак числа тоже меняется. ~x=|~x|-1. Результат: ~8=-9.

Комментарии

Для красивого стиля и правил оформления кода, необходимо, чтобы в коде все функции, блоки и т.д. были расшифрованы. Комментарии бывают /*….*/ (все, что между косыми чертами и звездочкой есть комментарий), // (все, что после // и на одной строке есть комментарий), смотри Листинг 13.

Листинг 13

/*демонстративная программа*/

#include<iostream>

using namespace std;

int main()

{

cout<<"Hello!"; //Вывод «Hello!» в консоль

}

Строки

Во второй программе мы уже использовали строки. Специальные функции для работы со строками определены в библиотечном файле <string.h>.

Некоторые функции для работы со строками, представлены ниже.

char* strcpy(str1,str2) – копирует строку str2 в строку str1 c ‘\0’, возвращает str1.

char* strcat(str1,str2) – присоединяет str2 в конец строки str1, возвращает str1.

Листинг 14

Работа со строками

#include<stdio.h>

#include<string.h>

int main()

{

char str1[100];

char str2[100];

printf("Vvedite stroky: \n");

scanf("%s",str1);

printf("Vvedenai stroka:\n%s \n",str1);

printf("Vvedite stroky: \n");

scanf("%s",str2);

printf("Vvedenai stroka:\n%s\n",str2);

strcat(str1,str2);

printf("Vvedenai stroka:\n%s\n",str1);

}

Задания:

Написать программу, в которой пользователь дописывает фразу, которую вывел компьютер, результат вывести на экран.

Закрепление материала

Операции

Присваивать значение переменной

a=10;

Вычислить значение выражения a^3+a^2-10.

Листинг 15

#include “stdio.h”

int main()

{

int a,s;

printf(“Vvedite zna4enie a\n”);

scanf(“%d”,&a);

s=a*a*a+a*a-10;

printf(“Rezultat: %d”,s);

}

Операция инкрементирования и декрементирования

++ – операция увеличения на 1,

– – – операция уменьшения на 1.

Операции ++ и – – бывают постфиксные и префиксные.

Пример:

N++;

++N;

–-N;

N–;

Разница в постфиксной и префиксной форме в том, что ++N – прибавление 1 до того, как переменная используется, N++ после того. Аналогично, с операцией –. Смотри Листинг 16, результат на Рисунке 5.

Листинг 16

2
{"b":"688737","o":1}