Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...
Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначенные для поддерживания проводов на необходимой высоте над землей, водой...
Топ:
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного хозяйства...
Марксистская теория происхождения государства: По мнению Маркса и Энгельса, в основе развития общества, происходящих в нем изменений лежит...
Интересное:
Как мы говорим и как мы слушаем: общение можно сравнить с огромным зонтиком, под которым скрыто все...
Что нужно делать при лейкемии: Прежде всего, необходимо выяснить, не страдаете ли вы каким-либо душевным недугом...
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Дисциплины:
|
из
5.00
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
|
|
Элементы массива простого типа:
1). <идент. типа><идент.>[]; - передача значением; <идент.> имеет смысл «указатель».
Пример: сортировка массива.
void sort(int n, float a[])
{
…
}
n, - количество элементов массива; a, - сам массив.
2). <идент. типа><идент.>[const].
Элементы массива – массивы:
Необходимо указать количество индексов для элемента массива:
1). … float b[][5];
2). … float b[10][5]
Использование функций.
Имя функции имеет смысл переменной.
В качестве параметра функции необходимо описать его как указатель на некоторую функцию.
В С это описание называют прототипом.
Прототип носит справочный характер.
Пример:
float kv (float t)
void swap1 (float &x, float &y, float (*k)(float t))
{
float z;
z=k(x);
x=k(y);
y=z;
}
void main ()
{
…
swap1(a, b, kv)
…
}
# include “mod.h”
void main ()
{
…
swap1(a, b, kv);
…
}
Перегрузка функции.
Может быть описано несколько функций с одним идентификатором, но с разным списком параметров.
Пример: Найти площадь треугольника тремя способами.
float strl(float &x, float &y)
{
return x*y/2;
}
float strl(float &x, float &y, int &z)
{
return x*y*atan(1)*z/90;
}
float strl(float &x, float &y, float &z)
{
float p;
p=(x+y+z)/2;
return sqrt(p*(p-x)(p-y)(p-z));
}
void main ()
{
float a, b, c;
int n;
cout<<”Ploshad’ treugol’nika:”<<endl;
cout<<”1. Po osn. I vis.: ”<<endl;
cout<<”2. Po storonam I uglu v gradusah: ”<<endl;
cout<<”3. Po trem storonam: ”<<endl;
cout<<”Nomer puncta? ”<<endl;
cin>>n;
switch n
{
case 1:
cout<<”Osnovanie I visota? ”;
cin>>a>>b;
cout<<”Ploshad’ = ”<<strl(a, b)<<endl;
break;
case 2:
cout<<”Smegnie storoni I ugol? ”;
cin>>a>>b>>n;
cout<<”Ploshad’ = ”<<strl(a, b, n)<<endl;
break;
case 3:
cout<<”Tri storoni? ”;
cin>>a>>b>>c;
cout<<”Ploshad’ = ”<<strl(a, b, c)<<endl;
break;
default
cout<<”Nepravil’niy nomer punkta. ”;
}
}
Функции с параметрами по умолчанию.
При описании функции можно инициализировать некоторые параметры функции. Формальные параметры инициализируются значениями или глобальными константами, которые определены с помощью директивы define.
При вызове такой функции в качестве фактических параметров достаточно указать только те, которые соответствуют не инициализированным формальным. При этом для создания динамического варианта функции в качестве значений формальных инициализированных параметров будут использоваться те значения, которые были указаны при описании. Если для инициализированного параметра при вызове функции указан фактический параметр, то алгоритм использует значение этого фактического параметра.
Правила:
1. Формальные инициализированные параметры должны располагаться подряд после неинициализированных, т.е. секция инициализированных параметров должна быть последней в списке формальных параметров.
2. При вызове функции фактические параметры, соответствующие инициализированным формальным, должны располагаться подряд с начала секции инициализации.
Пример:
Нахождение длины отрезка
<тип значения><идент.>(<тип пар.> [ =<знач.> ]{, <тип пар.> [ =<знач.> ]})
float par (float, float = 1, float = 1);
float par (float &x, float &y, float &z)
{
return x*y*z;
}
void main ()
{
float a, b, c;
int n;
cout<<”1. Dlina otrezka ”<<endl;
cout<<”2. Ploshad’ pryamougol’nika ”<<endl;
cout<<”3. Obyom pryamougol’nogo parallelipipeda ”<<endl;
cout<<”Nomer punkta? ”;
cin>>n;
switch (n)
{
case 1:
cout<<”Dlina? ”;
cin>>a;
cout<<”Dlina otrezka = “<<par(a);
break;
case 2:
cout<<”Dlina I shirina? ”;
cin>>a>>b;
cout<<”Ploshad’ = ”<<par(a, b);
break;
case 3:
cout<<”Dlina, shirina i visota? ”;
cin>>a>>b>>c;
cout<<”Obyom = ”<<par(a,b,c);
break
default
cout<<”Nepravil’niy nomer punkta”;
}
}
Тип структура в Си.
Этот тип является аналогом типа “запись” в Turbo Pascal. Позволяет объединить данные различных типов.
<тип структура> ≡ struct
{
<резерв. пам.>;
{ <резерв. пам.>; }
}
Компоненты этого типа называются членами структуры.
Описание переменной с типом <структура>:
Сначала определяется идентификатор типа <структура>, затем описываются переменные с использованием этого идентификатора.
<определение типа> ≡ typedef <тип><идент. типа>
Пример:
typedef struct
{
char F[15], I[15], O[15];
int B[4];
float SB;
}
rez;
rez GR [25];
GR[5].F //Фамилия 6-го студента группы//
GR[5].B[1] //Оценка этого студента на втором экзамене//
Ввод фамилии, имени и отчества можно организовать с помощью оператора cin, т.к. эти переменные не будут содержать пробелов.
Тип указатель.
Программные объекты, которые порождаются с помощью соответствующих описаний называются статическими. Память за ними закрепляется на все время работы программы.
Данные, созданием и уничтожением которых управляет сам программист, внутренне строение которых формируется по особому закону, но количество, взаимное расположение и взаимосвязи которых могут изменяться в процессе выполнения программы, называются динамическими.
При объявлении данных динамической структуры в разделе описания указывается не сама переменная, а только ссылка на нее. Такая организация данных позволяет динамически занимать и освобождать память в процессе работы блока программы.
Это осуществляется с помощью типа указателя.
Синтаксис:
typedef <тип >* <тип указатель>;
<тип указатель> <идентификатор>;
Или
<тип> *<идентификатор>;
Над указателями выполняются следующие простейшие действия:
Объявление переменной
int *p;
char *s;
Выделение области памяти
Это осуществляется с помощью процедуры new, она выделяет область памяти из области «куча» соответствующий тому типу, который описан для указателя и записывает ее адрес в указатель.
p=new float;
Операция взятия указателя
Для этого служит унарная операция ”&”.
int *p;
int n;
…
p=&n;
Операция &n даст адрес величины n и в программе его значение будет присвоено указателю p.
Занесение информации
*p:=1;
*n:=2;
Операция сравнения
if (p!=NULL)
…
Копирование информации
*p=*n;
В область памяти одной переменной заносится значение, хранившееся в другой.
Копирование адреса
p=n;
Обе ссылочные переменные ссылаются на одну и ту же область памяти.
Освобождение памяти
<освобождение памяти>≡delete <выр.>.
Процедура освобождает область памяти на которую указывает ссылочная переменная, после чего эта область становится доступной для распределения под другие динамические переменные.
|
|
|
Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...
Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначенные для поддерживания проводов на необходимой высоте над землей, водой...
Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...
История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...
© cyberpediasu.com 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!