Создание рабочего пространства для нескольких проектов



Несколько проектов можно объединить в одно рабочее пространство с помощью команды Project/Insert Project into Workspace. Активный проект, т. е. тот, который будет выполняться, устанавливается с помощью команды Project/Set Active Project.Активный процесс надо отметить галочкой.

 

3.Структура программы на языке C/C++

 

Логически программа на С++ представляет собой набор функций, каждая функция должна реализовывать какое-то логически законченное действие. Функции вызываются либо из других функций, либо из главной функции с именем main().

Физически программа на С++ представляет собой один или несколько файлов. Главная функция main()находится в файле с расширением .cpp и произвольными именем (желательно, чтобы имя файла каким-то образом отражало ту задачу, которая решается этой программой). Другие файлы обычно содержат функции, вызываемые в main(), они оформляются в виде специальных заголовочных файлов и имеют расширение .h.

 

Рассмотрим пример программы:

//Дана последовательность //целых чисел из n //элементов. Найти среднее //арифметическое этой // последовательности.   комментарии
#include <iostream.h> #include <math.h> директивы препроцессора
void main()     {      int a,n,i,k=0; double s=0; заголовок функции, с которой начинается выполнение программы   начало функции   определения переменных, используемых в функции
cout<<"\nEnter n"; сin>>n;   ввод-вывод данных
for(i=1;i<=n;i++)     {               цикл с параметром начало цикла
           cout<<"\nEnter a"; cin>>a; s+=a;        k++; тело цикла
} s=s/k; cout<<"\nSr. arifm="<<s<<"\n"; }   конец цикла оператор присваивания вывод результата конец программы

 

Директивы препроцессора управляют преобразованием текста программы до ее компиляции. Исходная программа, подготовленная на С++ в виде текстового файла, проходит 3 этапа обработки:

1) препроцессорное преобразование текста;

2) компиляция;

3) компоновка (редактирование связей или сборка).

Рис. 2 Обработка С++ программы

После этих трех этапов формируется исполняемый код программы. Задача препроцессора – преобразование текста программы до ее компиляции. Правила препроцессорной обработки определяет программист с помощью директив препроцессора. Директива начинается с #.

 

#define - указывает правила замены в тексте.

 

#define ZERO 0.0

 

означает, что каждое использование в программе имени ZERO будет заменяться на 0.0.

 

#include<имя заголовочного файла> – директива предназначена для включения в текст программы текста из каталога заголовочных файлов, поставляемых вместе со стандартными библиотеками. Каждая библиотечная функция C имеет соответствующее описание в одном из заголовочных файлов. Список заголовочных файлов определен стандартом языка. Употребление директивы include не подключает соответствующую стандартную библиотеку, а только позволяют вставить в текст программы описания из указанного заголовочного файла. Если используется заголовочный файл из стандартной библиотеки, то его имя заключают в угловые скобки. Если используется заголовочный файл, который находится в текущем каталоге проекта (он может быть создан разработчиком программы), то его имя заключается в кавычки. Подключение кодов библиотеки осуществляется на этапе компоновки, т. е. после компиляции. Хотя в заголовочных файлах содержатся все описания стандартных функций, в код программы включаются только те функции, которые используются в программе. 

После выполнения препроцессорной обработки в тексте программы не остается ни одной препроцессорной директивы.

Программа представляет собой набор описаний и определений, и состоит из набора функций. Среди этих функций всегда должна быть функция с именем main. Без нее программа не может быть выполнена. Перед именем функции помещаются сведения о типе возвращаемого функцией значения (тип результата). Если функция ничего не возвращает, то указывается тип void: void main(). Каждая функция, в том числе и main, должна иметь список параметров. Список может быть пустым, тогда он указывается как(void) (слово void может быть опущено: ()).

За заголовком функции размещается тело функции. Тело функции – это последовательность определений, описаний и исполняемых операторов, заключенных в фигурные скобки. Каждое определение, описание или оператор заканчивается точкой с запятой.

Определения – вводят объекты (объект – это именованная область памяти, частный случай объекта – переменная), необходимые для представления в программе обрабатываемых данных. Примерами являются

 

const int y = 10 ; //именованная константа

float x ; //переменная

 

Описания – уведомляют компилятор о свойствах и именах объектов и функций, описанных в других частях программы.

Операторы – определяют действия программы на каждом шаге ее исполнения.

 

4. Элементы языка C/C++

1) Алфавит языка который включает

· прописные и строчные латинские буквы и знак подчеркивания;

· арабские цифры от 0 до 9;

· специальные знаки “{},| []()+-/%*.\’:;&?<>=!#^

· пробельные символы (пробел, символ табуляции, символы перехода на новую строку).

2) Из символов формируются лексемы языка:

· Идентификаторы – имена объектов C/C++-программ. В идентификаторе могут быть использованы латинские буквы, цифры и знак подчеркивания. Прописные и строчные буквы различаются, например, PROG1, prog1 и Prog1 – три различных идентификатора. Первым символом должна быть буква или знак подчеркивания (но не цифра). Пробелы в идентификаторах не допускаются. 

· Ключевые (зарезервированные) слова – это слова, которые имеют специальное значение для компилятора. Их нельзя использовать в качестве идентификаторов.

· Знаки операций – это один или несколько символов, определяющих действие над операндами. Операции делятся на унарные, бинарные и тернарную по количеству участвующих в этой операции операндов.

· Константы – это неизменяемые величины. Существуют целые, вещественные, символьные и строковые константы. Компилятор выделяет константу в качестве лексемы (элементарной конструкции) и относит ее к одному из типов по ее внешнему виду.

· Разделители – скобки, точка, запятая пробельные символы.

 

5. Константы в C/C++

Константа – это лексема, представляющая изображение фиксированного числового, строкового или символьного значения. Константы делятся на 5 групп:

· целые;

· вещественные (с плавающей точкой);

· перечислимые;

· символьные;

· строковые.

Компилятор выделяет лексему и относит ее к той или другой группе, а затем внутри группы к определенному типу по ее форме записи в тексте программы и по числовому значению.

Целые константы могут быть десятичными, восьмеричными и шестнадцатеричными. Десятичная константа определяется как последовательность десятичных цифр, начинающаяся не с 0, если это число не 0 (примеры: 8, 0, 192345). Восьмеричная константа – это константа , которая всегда начинается с 0. За 0 следуют восьмеричные цифры (примеры: 016 – десятичное значение 14, 01). Шестнадцатеричные константы – последовательность шестнадцатеричных цифр, которым предшествуют символы 0х или 0Х (примеры: 0хА, 0Х00F).

В зависимости от значения целой константы компилятор по-разному представит ее в памяти компьютера (т. е. компилятор припишет константе соответствующий тип данных).

Вещественные константы имеют другую форму внутреннего представления в памяти компьютера. Компилятор распознает такие константы по их виду. Вещественные константы могут иметь две формы представления: с фиксированной точкой и с плавающей точкой. Вид константы с фиксированной точкой: [цифры].[цифры] (примеры: 5.7, .0001, 41.). Вид константы с плавающей точкой: [цифры][.][цифры]E|e[+|-][цифры] (примеры:0.5е5, .11е-5, 5Е3). В записи вещественных констант может опускаться либо целая, либо дробная части, либо десятичная точка, либо признак экспоненты с показателем степени.

Перечислимые константы вводятся с помощью ключевого слова enum. Это обычные целые константы, которым приписаны уникальные и удобные для использования обозначения.

 

enum {one=1, two=2, three=3, four=4};

enum {zero,one,two,three};

 

Если в определении перечислимых констант опустить знаки = и числовые значения, то значения будут приписываться по умолчанию. При этом самый левый идентификатор получит значение 0, а каждый последующий будет увеличиваться на 1.

 

enum {ten=10, three=3, four, five, six};

enum {Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday};

 

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

· для представления символов, не имеющих графического отображения, например:

\a – звуковой сигнал,

\b – возврат на один шаг,

\n – перевод строки,

\t – горизонтальная табуляция;

· для представления символов: \ , ’ , ? , ” ( \\, \’ ,\? ,\” );

· для представления символов с помощью шестнадцатеричных или восьмеричных кодов (\073, \0хF5);

Строковая константа – это последовательность символов, заключенная в кавычки. Внутри строк также могут использоваться управляющие символы. Например:

”\nНовая строка”,

”\n\”Алгоритмические языки программирования””.

6. Типы данных в C/C++

 

Типы C/C++ можно разделить на простые и составные. К простым типам относят типы, которые характеризуются одним значением. В языке C определено 4, а в C++ – 6 простых типов данных:

int (целый)

целочисленные
char (символьный)

wchar_t (расширенный символьный) (C++)

bool (логический) (C++)

с плавающей точкой
float (вещественный)

double (вещественный с двойной точностью)

 

Существует 4 спецификатора типа, уточняющих внутреннее представление и диапазон стандартных типов

 

short (короткий)

long (длинный)

signed (знаковый)

unsigned (беззнаковый)

Тип int

 

Значениями этого типа являются целые числа.

Размер типа int не определяется стандартом, а зависит от компьютера и компилятора. Для 16-разрядного процессора под него отводится 2 байта, для 32-разрядного – 4 байта.

Если перед int стоит спецификатор short, то под число отводится 2 байта, а если спецификатор long, то 4 байта. От количества отводимой под объект памяти зависит множество допустимых значений, которые может принимать объект:

short int – занимает 2 байта, следовательно, имеет диапазон –32768 … +32767;

long int – занимает 4 байта, следовательно, имеет диапазон
–2 147 483 648 … +2 147 483 647.

Тип int совпадает с типом short int на 16-разрядных ПК и с типом long int на 32-разрядных ПК.

Модификаторы signed и unsigned также влияют на множество допустимых значений, которые может принимать объект:

unsigned short int – занимает 2 байта, следовательно, имеет диапазон 0 … 65536;

unsigned long int – занимает 4 байта, следовательно, имеет диапазон 0 … +4 294 967 295.

 

Тип char

 

Значениями этого типа являются элементы конечного упорядоченного множества символов. Каждому символу ставится в соответствие число, которое называется кодом символа. Под величину символьного типа отводится 1 байт. Тип char может использоваться со спецификаторами signed и unsigned. В данных типа signed char можно хранить значения в диапазоне от –128 до 127. При использовании типа unsigned char значения могут находиться в диапазоне от 0 до 255. Для кодировки используется код ASCII (American Standard Code for International Interchange). Символы с кодами от 0 до 31 относятся к служебным и имеют самостоятельное значение только в операторах ввода-вывода.

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

 

Тип wchar_t

 

Предназначается для работы с набором символов, для кодировки которых недостаточно 1 байта, например Unicode. Размер этого типа, как правило, соответствует типу short. Строковые константы такого типа записываются с префиксом L: L”String #1”.

 

Тип bool

 

Тип bool называется логическим. Его величины могут принимать значения true и false. Внутренняя форма представления false – 0, любое другое значение интерпретируется как true.

 

Типы с плавающей точкой

 

Внутреннее представление вещественного числа состоит из 2 частей: мантиссы и порядка. В IBM-совместимых ПК величины типа float занимают 4 байта, из которых один разряд отводится под знак мантиссы, 8 разрядов под порядок и 24 – под мантиссу. 

Величины типы double занимают 8 байтов, под порядок и мантиссу отводятся 11 и 52 разряда соответственно. Длина мантиссы определяет точность числа, а длина порядка его диапазон.

Если перед именем типа double стоит спецификатор long, то под величину отводится 10 байтов.

 

Тип void

 

К основным типам также относится тип void. Множество значений этого типа – пусто.

 

Переменные

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

 

int a; float x;

 

Общий вид оператора описания:

 

[класс памяти][const]тип имя [инициализатор];

 

Класс памяти определяет время жизни и область видимости переменной. Время жизни может быть постоянным – в течение выполнения программы или временным – в течение блока. Область видимости  - это та часть программы, из которой можно обратиться к переменной обычным образом. В зависимости от области действия переменная может быть локальной и глобальной. Локальная переменная определена внутри блока (т. е. внутри оператора {…}), область ее действия от точки описания до конца блока. Глобальная переменная определена вне блока, область ее действия от точки описания до конца файла. Класс памяти может принимать значения: auto, extern, static, register. Если класс памяти не указан явно, то компилятор определяет его исходя из контекста объявления.

Классы памяти:

auto – автоматическая локальная переменная. Спецификатор auto может быть задан только при определении объектов блока, например, в теле функции. Этим переменным память выделяется при входе в блок и освобождается при выходе из него. Вне блока такие переменные не существуют.

extern – глобальная переменная, она находится в другом месте программы (в другом файле или долее по тексту). Используется для создания переменных, которые доступны во всех файлах программы.

static – статическая переменная, она существует только в пределах того файла, где определена переменная.

register – аналогичны auto, но память под них выделяется в регистрах процессора. Если такой возможности нет, то переменные обрабатываются как auto.

 

int a;   //глобальная переменная

void main()

{

int b; //локальная переменная

extern int x; //переменная х определена в другом месте,

// память не выделяется

static int c; //локальная статическая переменная

a=1; //присваивание глобальной переменной

int a; //локальная переменная а

a=2; //присваивание локальной переменной

::a=3; //присваивание глобальной переменной

}

int x=4; //определение и инициализация х

 

В примере переменная а определена вне всех блоков. Областью действия переменной а является вся программа, кроме тех строк, где используется локальная переменная а. Переменные b и с – локальные, область их видимости – блок. Время жизни различно: память под b выделяется при входе в блок (т. к. по умолчанию класс памяти auto), освобождается при выходе из него. Переменная с (static) существует, пока работает программа.

Если при определении начальное значение переменным не задается явным образом, то компилятор обнуляет глобальные и статические переменные. Автоматические переменные не инициализируются.

Имя переменной должно быть уникальным в своей области действия.

Описание переменной может быть выполнено или как объявление, или как определение. Объявление содержит информацию о классе памяти и типе переменной, определение вместе с этой информацией дает указание выделить память. В примере extern int x; – объявление, а остальные – определения.

const – показывает, что эту переменную нельзя изменять (именованная константа).

При описании можно присвоить переменной начальное значение (инициализация).

const num=10;

 

Выражения

 

Из констант, переменных, разделителей и знаков операций можно конструировать выражения. Каждое выражение представляет собой правило вычисления нового значения. Каждое выражение состоит из одного или нескольких операндов, символов операций и ограничителей. Если выражение формирует целое или вещественное число, то оно называется арифметическим. Пара арифметических выражений, объединенная операцией сравнения, называется отношением. Если отношение имеет ненулевое значение, то оно – истинно, иначе – ложно.

 

Ввод и вывод данных

 

В языке C/C++ нет встроенных средств ввода и вывода – он осуществляется с помощью функций, типов и объектов, которые находятся в стандартных библиотеках. Существует два основных способа: функции C и объекты C++.

Для ввода/вывода данных в стиле C используются функции, которые описываются в библиотечном файле stdio.h.

· printf (форматная строка, список аргументов);

форматная строка – строка символов, заключенных в кавычки, которая показывает, как должны быть напечатаны аргументы. Например:

 

printf (”Значение числа Пи равно %f\n”, pi);

 

Форматная строка может содержать:

· символы печатаемые текстуально;

· спецификации преобразования;

· управляющие символы.

 

Каждому аргументу соответствует своя спецификация преобразования:

%d, %i    – десятичное целое число;

%f – число с плавающей точкой;

%e,%E      – число с плавающей точкой в экспоненциальной форме;

%u – десятичное число в беззнаковой форме;

%c – символ;

%s – строка.

 

В форматную строку также могут входить управляющие символы:

\n – управляющий символ новая строка;

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

\a – звуковой сигнал и др.

Также в форматной строке могут использоваться модификаторы формата, которые управляют шириной поля, отводимого для размещения выводимого значения. Модификаторы – это числа, которые указывают минимальное количество позиций для вывода значения и количество позиций ля вывода дробной части числа:

%[-]m[.p]C, где

–    – задает выравнивание по левому краю,

m    – минимальная ширина поля,

p    – количество цифр после запятой для чисел с плавающей точкой и минимальное количество выводимых цифр для целых чисел (если цифр в числе меньше, чем значение р, то выводятся начальные нули),

С – спецификация формата вывода.

 

printf("\nСпецификации формата:\n%10.5d - целое, \n \\ %10.5f  - с плавающей точкой\\n %10.5e  – \\
в экспоненциальной форме\n%10s - строка", 10, 10.0, 10.0, "10");

 

Будет выведено:

Спецификации формата:

 00010 – целое

10.00000 – с плавающей точкой

1.00000е+001 - в экспоненциальной форме

   10 – строка.

· scanf (форматная строка, список аргументов);

в качестве аргументов используются адреса переменных. Например:

 

 

scanf(“ %d%f ”, &x,&y);

 

 

При использовании библиотеки классов C++, используется библиотечный файл iostream.h, в котором определены стандартные потоки ввода данных от клавиатуры cin и вывода данных на экран cout, а также соответствующие операции

<< – операция записи данных в поток;

>> – операция чтения данных из потока.

 

#include <iostream.h>;

cout << “\nВведите количество элементов: ”;

cin >> n;

10. Операторы C/C++

 


Дата добавления: 2018-04-04; просмотров: 174;