Программирование на С, С++ - Солнечная Станислава страница 2.

Шрифт
Фон

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

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

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

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

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

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

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

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

Пример:

8 | 10 = 10

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

Рисунок 4

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

Пример:

8 & 10 = 8

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

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

Листинг 12

#include

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<

}

int main()

{

int a,b;

int c;

cin>>a>>b;

c=a|b;

cout<

dv(a);

cout<<" | ";

dv(b);

cout<<" = ";

dv(c);

c=a&b;

cout<

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

using namespace std;

int main()

{

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

}

Строки

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

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

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

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

Листинг 14

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

#include

#include

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

#include

using namespace std;

int main()

{

int y=3;

cout<

y=3;

cout<

}

Рисунок 5

Приоритет операций и порядок выполнения

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

В Таблице 3 представлен приоритет с ассоциированием слева направо для ANSI C.

Таблица 3

Работа с файлами

С писался для написания Unix, операционной системы. Все устройство Unix – это потоки. Также есть понятие файла. Файл – именованный памяти компьютера. «Поток» – это абстракция, все программирование – это абстракции.

Рассмотрим Листинг 17. 4 строка – это файловый указатель. Об указателях в части 3.

Строка 5.

1 – функция для открытия файла

2 – название файла

3 – режим доступа

Строка 6.

fwrite(“ura”,1,sizeof(char)*u,F);

1 – функция для записи в файл

2 – что записываем, строку

3 – сколько таких строк

4 – размер, функция sizeof() – вычисляет размер типа

5 – файловый указатель

После запуска программы, на компьютере в папке с программой будет текстовый файл «text».

Режимы доступа для функции fopen() приведены в Таблице 4.

Таблица 4

Листинг 17

Ввод в файл. Способ первый

1 #include

2 main()

3 {

4 File *F;

5 F=fopen(“text”, “w+”);

6 fwrite(“ura”,1,sizeof(char)*u,F);

7 fclose(F);

8 }

Рассмотрим второй способ записи в файл, Листинг 18.

Листинг 18

Ввод в файл. Способ второй


1 #include

2 #include

3 main()

4 {

5 File *F;

6 char text[100];

7 printf(«Vvedite text:/n»);

8 scanf(“%s”,&text);

9 F=fopen(“text”, “w+”);

10 fwrite(text,1,sizeof(char)*strlen(text), F);

11 fclose(F);

12 }

fwrite(text,1,sizeof(char)*strlen(text),F)

1 – функция для записи в файл

2 – что записываем, массив символов

3 – сколько таких строк

4 – размер, функция sizeof() – вычисляет размер типа, функция strlen() – вычисляет длину заполненного массива text.

5– файловый указатель

fclose(F);

1 – функция для закрытия файла

2 – файловый указатель

Задания:

Записать в файл строку.

Прочитать из файла текст.

Структуры

«Структура – это совокупность нескольких переменных, часто различных типов, сгруппированных под единым именем для удобства обращения» [4].

Методов в структурах нет в стандарте ANSI C. Я бы не рекомендовала смешивать методы С, С++ и следить за версиями компилятора для красоты стиля программирования.

Несколько структур с одним набором данных.

struct {…} x,y,z;

Описание структуры.

struct point

{

int x;

int y;

};

Объявление структур: через точку, в начале название структуры, в конце имя переменной

point.x;

Листинг 19

Создание структуры

1 #include

2 struct point

3 {

4 int x;

5 int y;

6 };

7 int main ()

8 {

9 printf(“Введите координаты точки /n Введите абциссу точки”);

10 scanf(“%d”,&point.x);

11 printf(«Введите ординату точки»);

12 scanf(“%d”,&point.y);

13 printf(“/n (%d,%d)”,point.x,point.y);

14 }

Массивы структур

struct key

{

char* word;

int count;

}keytab[NKEYS];

Листинг 20

Работа со структурой

1 #include

2 struct zapisi

3 {

4 char text[100];

5 char data[11];

6 };

7 main()

8{

9 struct zapisi x;

10 int d;

11 printf(«Vvedite datu, v formate dd.mm.yyyy: \n»);

12 scanf(“%s”,x.data);

13 printf(“Vvedite poslanie: \n”);

Программирование на С, С++
читать Программирование на С, С++
Солнечная Станислава
Задача данной книги простым и доступным языком объяснить примеры использования C, C++ и основные возможности С, С++. Изложено кратко о некоторых инструментах и их использовании на практике. Также даны сведения об аппаратном обеспечении вычислительной техники, для представления механизма программиров

Ваша оценка очень важна

0
Шрифт
Фон

Помогите Вашим друзьям узнать о библиотеке