Основы Программирования (теория, ч.2)

Константы

Константы как и переменные предназначены для хранения данных,но в отличие от переменных должны инициализироваться при объявлении и им нельзя присвоить новое значение.Константы можно определить двумя способами:

#define MyConstant 10 ( о директиве #define см. тут)

const int MyOtherConstant = 10 ;

предпочтительнее использовать второй способ так как при определении константы с помощью #define она не имеет типа,а тип константы вам может понадобиться.

Билет 3. Использование суффиксов для задания типов констант.

Можно явно задать тип константы, используя для этого суффиксы. Существует 3 вида суффиксов F float U unsigned L long(для целых и вещественных) кроме того, допускается совместное использование суффиксов UL/LU

3.14F float

3.14L long double(10 байт)

Производные типы.

Операции, создающие из основных типов новые типы

* - указатель на переменную

*const - константный указатель

& - ссылка

[ ] – массив

Константы.

1. Целые десятичные числа, начинающиеся не с 0.

2. Целые восьмеричные числа, начинаются с 0.

3. Целые шестнадцатеричные числа. Запись начинается с 0х

4. Если в записи числовой константы присутствует десятичная точка (2.5) или экспоненциальное расширение (1Е-8),то компилятор рассматривает её как вещественное число и ставит ей в соответствие тип double

5. Символьные константы заключаются в апострофы. Например, ‘a’ . Строковые константы, представляющие собой символьные последовательности, заключается в двойные кавычки “abs”

Особую разновидность символьных констант представляют управляющие символы. Их назначение – управление выводом на экран.

\n – переход на новую строку

\t – табуляция

Именованную константу можно определить с помощью предпроцессорной директивы #define

Билет 4. Арифметические и логические операции

- вычитание

+сложение

*умножение

/ остаток от деления

% деление по модулю

++ инкремент (унарная операция увеличения на 1)

-- декремент

Операция % применима только к целым числам, все остальные к любым. Если делимое и делитель – целые числа, то результат – целое число. Например 7/3 = 2

Если хоть один из операторов вещественный, то результат вещественный.

1./5=0.2

Операции инкремента и декремента могут записываться как перед операндом(префиксная форма) так и после (постфиксная форма).

Различие префиксной и постфиксной формы проявляется при использовании их в выражениях

A=3 .b=2 . c=a++ * b++, то a=4. b=3. c=6

A=3 .b=2 . c=++a * ++b, то a=4. b=3. c=12

Одинаковые по старшинству операции выполняются слева направо. Для изменения порядка выполнения операций применяются скобки.

Билет 23. Структуры и объединения

Имя строки является указателем переменной и следовательно его значение может подвергнуться изменению. Структура — объединённое в единое целое множество поименованных элементов, в общем случае разных типов.

Элемент структуры — поле. Каждому полю соответствует имя и тип.

Struct имя_типа

{ определение элементов; }

struct Student

{

char fio[100];

int kurs;

};

Void main()

{

Student std1;

...

}

Или:

struct Student

{

...

} std1;

Обращение к полям:

имя_структуры.имя_элемента;

Student stud1={«Иванов», 2};

Определим указатель к структуре:

Student *pst, stud1;

Тогда, после выполнения операции присваивания (pst=&stud1) к каждому элементу структуры можно будет обратиться 3-я способами:

stud1.fio

(*pst).fio

pst → fio

Поля структуры могут сами иметь структурный тип. Допускается использование массивов структур.

Объединение.

Union имя_типа

{ определения_элементов; };

Отличия от структуры в способе организации внутренней памяти. Общий объём занимаемый в памяти равен объёму самого большого поля. Изменение значения любого поля объединения меняет значения других полей.

Билет 24. Работа с файлами

Работа с файлами начинается с объявления указателя на поток.

FILE *имя_указателя;

FILE *fp;

Применяется библиотека stdio.h. Следующий шаг — открытие файла стандартной функцией:

fopen();

имя_указателя=fopen(имя_файла, режим_открытия);

Пример:

fp=fopen(C:\bbc\proba.txt, “r”);

Режимы открытия файлов:

r - открыть для чтения

w - -//- запись

a - -//- добавление

r+ - -//- чтение и запись

w+ - -//- создать для чтения и записи

a+ - -//- добавление или создать для чтения/записи

Открытие уже существуещего файла для записи ведёт к потере данных в нём. Открыть для чтения можно только существующий файл.

\n – возврат строки и перевод каретки.

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

Пример:

rb

r+b

wr

T – текстовый режим.

Rt

r+t

wt

Если при открытии файла произошла ошибка, то функция fopen() возвращает значение NULL.

Fclose(); //Закрытие файла

Запись символов в поток:

putc();

Запись цеых чисел в поток:

putw();

Считывание:

puts(); и putw(); аналогично.

Основы Программирования (теория, ч.2)

Билет 1. Основные типы данных в С++

Основные типы в C++ подразделяются на две группы: целочисленные типы и типы с плавающей точкой (для краткости их будем называть плавающими типами). Это арифметические типы.

В C++ нет жёсткого стандарта на диапазоны значений арифметических типов (в стандарте языка оговариваются лишь минимально допустимые значения). В принципе, эти диапазоны определяются конкретной реализацией. Обычно выбор этих характеристик диктуется эффективностью использования вычислительных возможностей компьютера. Зависимость языка от реализации создаёт определённые проблемы переносимости. C++ остаётся машинно-зависимым языком.

К целочисленным типам относятся типы, представленные следующими именами основных типов:

char

short

int

long

Имена целочисленных типов могут использоваться в сочетании с парой модификаторов типа:

signed

unsigned

Эти модификаторы изменяют формат представления данных, но не влияют на размеры выделяемых областей памяти.

Модификатор типа signed указывает, что переменная может принимать как положительные, так и отрицательные значения. Возможно, что при этом самый левый бит области памяти, выделяемой для хранения значения, используется для представления знака. Если этот бит установлен в 0, то значение переменной считается положительным. Если бит установлен в 1, то значение переменной считается отрицательным.

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

В ряде случаев модификаторы типа можно рассматривать как имена основных типов.

Здесь также многое определяется конкретной реализацией. В версиях Borland C++ данные типов, обозначаемых как signed, short и int в памяти занимают одно и то же количество байтов.

Особое место среди множества основных целочисленных типов занимают перечисления, которые обозначаются ключевым словом enum. Перечисления представляют собой упорядоченные наборы целых значений. Они имеют своеобразный синтаксис и достаточно специфическую область использования. Их изучению будет посвящён специальный раздел.

Здесь также многое зависит от реализации. По крайней мере, для Borland C++ 4.5, основные характеристики целочисленных типов выглядят следующим образом:

Тип данных Байты Биты Min Max

signed char 1 8 - 128 127

unsigned char 1 8 0 255

signed short 2 16 -32768 32767

enum 2 16 -32768 32767

unsigned short 2 16 0 65535

signed int 2 16 -32768 32767

unsigned int 2 16 0 65535

signed long 4 32 -2147483648 2147483647

unsigned long 4 32 0 4294967295

К плавающим типам относятся три типа, представленные следующими именами типов, модификаторов и их сочетаний:

float

double

long double

Как и ранее, модификатор типа входит в число имён основных типов.

Плавающие типы используются для работы с вещественными числами, которые представляются в форме записи с десятичной точкой, так и в "научной нотации". Разница между нотациями становится очевидной из простого примера, который демонстрирует запись одного и того же вещественного числа в различных нотациях.

297.7

2.977*10**2

2.977E2

и ещё один пример…

0.002355

2.355*10**-3

2.355E-3

В научной нотации слева от символа E записывается мантисса, справа - значение экспоненты, которая всегда равняется показателю степени 10.

Для хранения значений плавающих типов в памяти используется специальный формат представления вещественных чисел. Этот формат называется IEEE форматом.

Ниже представлены основные характеристики типов данных с плавающей точкой (опять же для Borland C++ 4.5):

Тип данных Байты Биты Min Max

float 4 32 3.4E-38 3.4E+38

double 8 64 1.7E-308 1.7E+308

long double 10 80 3.4E-4932 3.4E+4932

Подведём итог.

Имена типов данных и их сочетания с модификаторами типов используются для представления данных различных размеров в знаковом и беззнаковом представлении:

char

signed char

unsigned char

short

signed short

unsigned short

signed

unsigned

short int

signed short int

unsigned short int

int

signed int

unsigned int

long

signed long

unsigned long

long int

signed long int

unsigned long int

Все эти типы образуют множество целочисленных типов. К этому множеству также относятся перечисления.

А вот сочетания имён типов и модификаторов для представления чисел с плавающей точкой:

float

double

long double

Вот и всё об основных типах. Помимо основных типов в C++ существуют специальные языковые средства, которые позволяют из элементов основных типов создавать новые, так называемые производные типы.

Билет 2. Способы определения констант в С++

Константы

Константы как и переменные предназначены для хранения данных,но в отличие от переменных должны инициализироваться при объявлении и им нельзя присвоить новое значение.Константы можно определить двумя способами:

#define MyConstant 10 ( о директиве #define см. тут)

const int MyOtherConstant = 10 ;

предпочтительнее использовать второй способ так как при определении константы с помощью #define она не имеет типа,а тип константы вам может понадобиться.

Билет 3. Использование суффиксов для задания типов констант.

Можно явно задать тип константы, используя для этого суффиксы. Существует 3 вида суффиксов F float U unsigned L long(для целых и вещественных) кроме того, допускается совместное использование суффиксов UL/LU

3.14F float

3.14L long double(10 байт)

Производные типы.

Операции, создающие из основных типов новые типы

* - указатель на переменную

*const - константный указатель

& - ссылка

[ ] – массив

Константы.

1. Целые десятичные числа, начинающиеся не с 0.

2. Целые восьмеричные числа, начинаются с 0.

3. Целые шестнадцатеричные числа. Запись начинается с 0х

4. Если в записи числовой константы присутствует десятичная точка (2.5) или экспоненциальное расширение (1Е-8),то компилятор рассматривает её как вещественное число и ставит ей в соответствие тип double

5. Символьные константы заключаются в апострофы. Например, ‘a’ . Строковые константы, представляющие собой символьные последовательности, заключается в двойные кавычки “abs”

Особую разновидность символьных констант представляют управляющие символы. Их назначение – управление выводом на экран.

\n – переход на новую строку

\t – табуляция

Именованную константу можно определить с помощью предпроцессорной директивы #define

Наши рекомендации