Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Среда программирования CodeBlocks

Поиск

Многие компиляторы реализованы в виде интегрированных сред разработки. Они позволяют выполнить все операции по разработке приложения (редактирование, компиляция, отладка и т.д.) из одной главной программы. К ним относятся Microsoft Visual Studio и Microsoft Visual C++, Borland C++, Borland C++ Builder и другие.

Среда программирования CodeBlocks содержит компилятор GNU GCC, который используется и в операционной системе Linux, поэтому в перспективе возможен перенос программ под Linux.

Наряду с исходным текстом программы среда CodeBlocks создает вспомогательные файлы, которые используются для ускорения компиляции. Эти файл в совокупности образуют проект. Все файлы проекта следует сохранять в отдельной папке.

Для создания нового проекта в стартовом окне следует выбрать Create a new project либо выполнить команду меню File|New|Project. В диалоговом окне выбрать Console Application и щелкнуть на кнопке Go. Откроется окно мастера создания консольного приложения. При запросе о языке программирования следует выбрать язык C++.

После этого откроется окно выбора папки для сохранения проекта.

В левой части окна содержатся сведения о составе проекта, в центре – исходный код приложения. Для компиляции и запуска программы доступны следующие команды:

Действие Команда меню Сочетание клавиш
Компилировать и выполнить Build|Build and Run F9
Выполнить программу Build|Run Ctrl+F10
Выполнить до курсора Debug|Run to Cursor F4
Запуск в режиме отладки Debug|Start/Continue F8
Запуск построчного выполнения Debug|Step into Shift+F7
Продолжить построчное выполнение Debug|Next line F7

Форматированный ввод –вывод в языке C++

Язык C++ допускает два способа ввода/вывода данных: потоковый и форматированный. Первый способ допустим только в C++. Стандартные ввод и вывод рассматриваются как поток байтов, ввод и вывод реализуются операторами cin и cout:

cin >> a; // ввод значения переменной a с клавиатуры

cin >> a >> k; //ввод значений a и k

Форматированный ввод/вывод унаследован от языка C. Для простого вывода используется функция printf(), а для ввода – функция scanf(). Синтаксис этих функций имеет вид:

printf("форматная_строка", список_переменных);

scanf("форматная_строка", список_адресов_перем);

В форматной строке записывается формат выводимой информации, а в списке – перечень выражений, значения которых нужно подставить на место соответствующих спецификаторов в форматной строке.

Строка форматирования состоит из элементов двух типов: 1) символы, которые выводятся на экран; 2) спецификации формата, определяющие способ отображения аргументов. Спецификации всегда начинаются знаком %. Например: printf(“сумма равна: %d, среднее значение равно %10.6f\n”,sum, av); При выполнении этого оператора на месте первого спецификатора будет выведено значение sum как целое десятичное, на месте второго – значение av (10 цифр, из них 6 после десятичной точки):

сумма равна: 155, среднее значение равно 1.486000

Пример ввода: scanf(“%i %f”,&n,&sum); - первое значение будет считано как целое, второе – как float. При вводе указывается не имя переменной ( sum ), а ее адрес: &sum.

Основные спецификаторы: d, i – целые числа (d – в десятичной форме), u – беззнаковое целое (unsigned); c – символ; s – строка; f – вещественное в форме (–)dd.dd; e – вещественное в форме (–)d.ddde(+|–)nn; l – длинное целое (long), lf – вещественное double; 10.4f – под вывод отвести 10 мест, из них под дробную часть – 4 места.

Массивы в языке C++

Массивы – это однородные данные (т.е. данные одного типа), расположенные в последовательных ячейках оперативной памяти. Массивы данных могут быть одномерными (векторами размера или ), двумерными (матрицами размера ) или многомерными (размера ).

Объявление массива сводится к указанию типа его элементов и количества элементов по каждому измерению:

char a1[20],a2[2][80]; // массивы символов int b1[25],b2[Nmax];

В языках C/C++ индекс первого элемента массива всегда равен нулю

Например, первый элемент массива обозначается a[0], десятый – a[9], элемент второй строки, четвертого столбца – x[1][3].

Объявление массива можно совместить с его инициализацией, т.е. с присвоением начальных значений всем элементами массива или только нескольким первым элементам:

char a[7]="Привет"; // не забывать о символе конца строкиchar b[7]={'П','р','и','в','е','т',0x0}; // объявление эквивалентно предыдущемуchar c[]="Привет"; // размер будет вычислен автоматически – 7float d[10]={1.,2.,3.,4.}; // остальные элементы не определеныint q[2][3]={{1,2,3},{4,5,6}}; // пример инициализации двумерного массива

< Далее рассказать о связи между массивами и указателями >

При передаче массива в качестве параметра функции возможны следующие эквивалентные варианты:

int sumv(int a[],int n) // передается массив целых чисел

int sumv(int* a, int n) // имя массива – как указатель на его первый элемент

< Привести примеры: например, ввод и вывод одномерного массива >

Понятие структуры в языке C++

Первоначальным образом для данных типа структур явились строки таблиц. Поля структуры могут быть разных типов (как столбцы таблиц), но в во всем столбце данные должны быть одного типа. Объявление структуры начинается со слова struct, за которым в фигурных скобках следуют описания полей:

struct AEROFLOT

{

char nazn[30]; // пункт назначения

int numr; // номер рейса

char tip[15]; // тип самолета

};

Строковые поля в структурах имеют фиксированные размеры

Идентификатор AEROFLOT выполняет функцию имени шаблона или типа структуры. В дальнейшем им можно пользоваться для объявления конкретных переменных – структур типа AEROFLOT:

typedef struct AEROFLOT Aeroflot;

Aeroflot airport[5], BufRec, MinRec; //3 переменных типа Aeroflot

Таким образом мы определили свой собственный тип данных - Aeroflot.

Для доступа к полям структур используются составные имена, образованные из имени структуры, точки и имени поля: Bufrec.numr=n; strcpy(airport[i].nazn, bufNazn); airport[i].numr=bufNumr;

Если мы имеем дело с указателем, который настроен на адрес структуры, то составные имена записываются с использованием двух символов "->": strcpy(buf->nazn, bufNazn); buf->numr=bufNumr;

Структуры могут объединяться в массивы: Aeroflot airport[5]; //массив структур типа Aeroflot

И тогда для доступа к полям соответствующего элемента используются индексированные составные имена:

strcpy(airport[i].nazn, bufNazn);airport[i].numr=bufNumr;strcpy(airport[i].tip, bufTip);

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

b1=a; //все поля структуры a копируются в структуру b1. Однако одноименные поля строкового типа у структур копировать присваиванием нельзя – необходимо использовать функции типа strcpy: strcpy(airport[i].nazn, bufNazn);

Функции в языке C++

Функции – это основные единицы построения программ при процедурном программировании на языке Си++.

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

Функция может возвращать значение, – результат своей работы, или выполнять некоторое другое действие, не связанное с возвратом результата. Если функция возвращает значение, то в ее заголовке перед именем функции должен быть указан тип возвращаемого значения: double mid(double x, double y). Если функция не возвращает значение, то в ее заголовке перед именем функции должен быть указан тип void.

Имя функции встречается в программе в трех контекстах:

q в объявлении функции (синонимы – прототип, сигнатура) сообщается, какие аргументы принимает функция и какой тип результата она возвращает;

q в определении функции, которое описывает все, что делает функция;

q в вызове функции, при котором происходит выполнение описанных в определении функции действий.

Любая функция должна быть объявлена и определена. Определение функции содержит заголовок и тело функции, представляющее собой последовательность операторов и описаний в фигурных скобках.

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

float sr(int n, float x); //функция приним. два параметра (int и float), возвращ. float

Объявление функции может иметь и более общий вид: float sr(int, float); double sqrt(double);

Такое объявление называют прототипом функции.

Отдельно записывается определение функции. Определение функции описывает, как она работает:

float sr(int n, float x) { return x/n;}

Аргументы n и x называются формальными параметрами. При вызове функции вместо них подставляются фактические параметры – значения, передаваемые функции.

После того, как функция объявлена, ее можно использовать в выражениях: sred1=sr(k,sum);

< Далее рассказать о способах передачи аргументов функциям >

Передача аргументов в языке C++ по значению и с помощью указателей

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

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

Формальный параметр в заголовке функции называют явным параметром- указателем, если перед его именем находится символ *. Изменения в значениях переменных отражаются в вызывающей программе.

< Кратко определить, что такое указатель >

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

Итоговая таблица способов передачи функции аргументов

по значению с помощью указателей по ссылке
прототипы
void Swap(int, int); void Swap(int *x, int *y); void Swap(int &x, int &y);
определение
void Swap(int x, int y) { int tmp=x;x=y; y=tmp; } void Swap(int *x, int *y) { int tmp=*x; *x=*y; *y=tmp; } void Swap(int &x, int &y) { int tmp=x; x=y; y=tmp; }
вызов функции
Swap(x,y); Swap(&x,&y); Swap(x,y);

Понятие указателя. Связь указателей и массивов в языке C++

Указатель – это производный тип, который представляет собой адрес какого-либо значения.

Работа с адресами досталась С++ в наследство от языка Си.

Операция &, примененная к переменной, – это операция взятия адреса. Операция *, примененная к адресу, – это операция обращения по адресу.

Указатель – это не просто адрес, а адрес величины определенного типа. Объявление указателя имеет вид: тип * имя. Например, int * xptr – объявление переменной xptr как указателя на целочисленное значение.

Таким образом, два оператора эквивалентны:

int y = x; // присвоить переменной y значение xint y = *xptr; // присвоить переменной y значение,находящееся по адресу xptr

< Кратко рассказать об операциях над указателями >

При обработке массивов часто используют тот факт, что

имя массива одновременно является указателем на первый элемент массива.

Поэтому допустимы выражения: arr[10]; &arr+10; Если xptr – указатель на целое число, а массив arr состоит из целых чисел, то допустимо выражение xptr=arr+10.

Прототип функции, принимающей массив в качестве параметра, может иметь вид: int sum(int * arr);



Поделиться:


Последнее изменение этой страницы: 2017-01-24; просмотров: 1133; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

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