Читаем Программирование на С, С++ полностью

for (int i=0; i

{

….

}

int i=0 – инициализация,

i

i++ – модификация.

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

Задание: вычислить значение функции y=x*x-4*x при х от 100 до 200 включительно, начиная от 100 с шагом 20. Решение задачи в Листинге 7, результат решения Листинга 7 на Рисунке 1.

Листинг 7

#include

using namespace std;

int main

{

int y;

for(int x=100;x<=200;x=x+20)

{

       y=x*x-4*x;

       cout<<"y("<

}

}

Рисунок 1

Типы данных

Типы данных:

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

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

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

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

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

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

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

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

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

Листинг 8

#include

using namespace std;

int main

{

cout<

}

Рисунок 2

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

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

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

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

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

Листинг 9

1#include

2using namespace std;

3

4 int main

5 {

6      int i=10;

7      cout<

8      {

9            int i=11;

10 cout<

11      }

12}

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

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

Листинг 10

#include

using namespace std;

int main

{

int y;

y=(int)(3/10);

cout<

y=(int)(10/3);

cout<

}

Рисунок 3

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

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

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

Листинг 11

#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;

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.

Рисунок 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”);

Перейти на страницу:

Похожие книги

1С: Управление небольшой фирмой 8.2 с нуля. 100 уроков для начинающих
1С: Управление небольшой фирмой 8.2 с нуля. 100 уроков для начинающих

Книга предоставляет полное описание приемов и методов работы с программой "1С:Управление небольшой фирмой 8.2". Показано, как автоматизировать управленческий учет всех основных операций, а также автоматизировать процессы организационного характера (маркетинг, построение кадровой политики и др.). Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, формировать разнообразные отчеты, выводить данные на печать. Материал подан в виде тематических уроков, в которых рассмотрены все основные аспекты деятельности современного предприятия. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов. Все приведенные в книге примеры и рекомендации основаны на реальных фактах и имеют практическое подтверждение.

Алексей Анатольевич Гладкий

Экономика / Программное обеспечение / Прочая компьютерная литература / Прочая справочная литература / Книги по IT / Словари и Энциклопедии