Лабораторная работа № 1-14 Структуры. Создание и вызов функций в C

advertisement
-1Информатика
Лабораторная работа 1-14
Лабораторная работа № 1-14
Структуры. Создание и вызов функций в C
1. ЦЕЛЬ РАБОТЫ
Целью работы является разработка, отладка и выполнение программы на C с
использованием структур, а также определение и вызов функций в программах.
2. СОСТАВ РАБОЧЕГО МЕСТА
2.1. Оборудование: IBM-совместимый персональный компьютер (ПК).
2.2. Программное обеспечение: операционная система Windows, интегрированная
оболочка BorlandC++.
3. КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ
3.1. Структуры
Массив позволяет работать с наборами данных, все элементы которых имеют один
и тот же тип. Однако во многих задачах приходится иметь дело с наборами данных,
состоящих из элементов разного типа. Для работы с такими наборами данных в C введены
структуры.
Структура – это одна или несколько переменных (возможно различных типов),
которые для удобства работы с ними сгруппированы под одним именем. Структуры
помогают в организации сложных данных, особенно в больших программах, поскольку
позволяют группу связанных между собой переменных рассматривать не как множество
отдельных элементов, а как единое целое.
Объявление структуры в C задается в одном из следующих двух форматов:
struct имя-типа {список-объявлений} описатель-1, описатель-2...;
struct имя-типа описатель-1, описатель-2...;
где
 имя-типа в первом формате – необязательный идентификатор, именующий
структурный тип, задаваемый списком перечисления, указанном в операторе, а во втором
формате – ссылка на структуру тип с именем имя-типа, объявленную в другом месте
программы;
 список-объявлений – последовательность из одного и более объявлений
переменных или битовых полей. Элементы структуры могут иметь базовый тип, либо
быть массивом, указателем, объединением или, в свою очередь, структурой. Объявление
элементов структуры как битовых полей будет описано при рассмотрении операций над
битами.
 описатель – либо идентификатор переменной структурного типа, либо указатель
на структуру данного типа, либо массив структур данного типа, либо функция,
возвращающая структуру данного типа.
Идентификаторы элементов структуры должны различаться между собой, а
идентификаторы элементов разных структур могут совпадать.
Файл: 308812725 Создан: 17.10.1998 Модифицирован: 25.01.2016
Автор: Шонин В.А.
-2Информатика
Лабораторная работа 1-14
Объявление даты как структуры будет иметь следующий вид:
struct date
{
int unsigned day;
/* День месяца */
char *month;
/* Наименование месяца */
int unsigned year; /* Год */
char *week_day;
/* День недели */
} current_date;
Здесь объявлен тип структуры date, описывающий компоновку даты и конкретная
структура для текущей даты типа date с именем current_date.
В программе затем можно объявлять и другие структуры типа date, используя
второй формат объявления структуры, например, дату дня рождения можно объявить как
структуру типа date следующим образом:
struct date birth_date;
Элементы структуры могут быть проинициализированы, если после описателя
переменной задан символ "=" и указан (в фигурных скобках) список начальных значений
элементов структуры в порядке их следования в объявлении. Элементы списка
отделяются друг от друга запятыми.
Элемент структуры не может быть структурой того же типа, в которой он содержится,
однако он может быть объявлен как указатель на тип структуры, в которую он входит. Это
позволяет создавать связанные списки структур.
Можно создавать вложенные структуры, т.е. структуры, элементами которых могут
быть другие структуры.
Можно также объявлять указатели на структуры, например:
Доступ к отдельному элементу структуры осуществляется посредством
конструкции вида:
имя-структуры.элемент-структуры
Для доступа к данным структуры можно также использовать указатели. Поскольку
указатели на структуры используются довольно часто, для доступа к ее элементам вместо
приведенного выше выражения можно использовать следующую форму записи:
указатель-на-структуру -> элемент-структуры
Единственно возможные операции над структурами – копирование, присваивание
(для структур одного типа), взятие адреса и осуществление доступа к ее членам. Можно
также передавать структуры функциям в качестве аргументов и возвращать их от функций
в качестве результата. Структуры нельзя сравнивать.
Структуры одного типа можно объединять в массивы.
3.2. Функции
Функции могут использоваться для выполнения одинаковых или похожих
последовательностей операторов. Эти последовательности операторов можно записать в
том же исходном файле или отдельном исходном файле модуле
и неоднократно
обращаться к ней из главной функции и других функций.
Программы на языке C обычно состоят из большого числа маленьких функций, а
не из нескольких больших. Программа может размещаться в одном или нескольких
исходных файлах любым удобным образом; исходные файлы могут компилироваться
отдельно и загружаться вместе наряду со скомпилированными ранее функциями из
библиотек.
В программах на языке C существуют три компонента работы с функциями:
Файл: 308812725 Создан: 17.10.1998 Модифицирован: 25.01.2016
Автор: Шонин В.А.
-3Информатика
Лабораторная работа 1-14
 объявление функции;
 описание функции;
 вызов функции.
При объявлении и описании функции
для нее может быть задан список
параметров. При вызове функции в аргументах параметрам присваиваются конкретные
значения для данного вызова функции.
Объявление функции или прототип функции имеет следующий формат:
имя-типа описатель (список-объявлений);
где:
 имя-типа – тип возвращаемого функцией значения (либо один из базовых типов,
либо enum, struct, union или void). Функция не может возвращать массив или
функцию, но может возвращать указатель на эти объекты. Если в качестве типа
возвращаемого значения указывается ключевое слово void, то функция не возвращает
никакого значения. Если имя-типа опущено, предполагается, что функция возвращает
значение типа int;
 описатель – либо имя функции (если возвращаемое значение имеет один из
базовых типов или тип void); либо указатель на возвращаемый тип (в этом случае
возвращаемое функцией значение – указатель на данный тип или тип void), либо (если
возвращаемое значение типа enum, struct или union) имя описанного ранее типа и
имя функции или имя функции и список описаний элементов;
 список-объявлений – список объявлений параметров вызова функции. Элементы
списка отделяются друг от друга запятыми. Если список параметров не задан или список
параметров состоит из одного ключевого слова void, это означает, что функция
вызывается без параметров.
Концом списка-объявлений является символ ")", однако перед ней может быть
записана запятая и многоточие – ",...". Это означает, что число аргументов функции
является переменным, но не меньше, чем число параметров, заданных до многоточия.
Если список параметров содержит только многоточие, то число параметров функции
является переменным и может быть равным нулю.
Объявления в списке описывают параметры функции и представляют собой
обычные объявления переменных (базовых типов, переменных перечислимого типа,
указателей, массивов, структур, объединений и функций). Объявления переменных в
параметрах имеют следующие особенности:
 идентификатор переменной может быть опущен (так называемое абстрактное
описание типа). Для указателя в этом случае задается имя типа и символ "*". Если
идентификатор задан, он используется просто для пояснения данного параметра и
компилятором не используется (за исключением диагностических сообщений);
 если параметр является массивом, количество элементов в массиве может быть
опущено, т.е. задано в виде "[]" (для многомерных массивов таким образом можно
задавать только первый индекс). В этом случае компилятор не проверяет верхнюю
границу передаваемого в качестве аргумента массива;
 если параметр является функцией, список объявлений параметров функции
может быть опущен, т.е. задан в виде "()". В этом случае компилятор не проверяет
параметры передаваемой в качестве аргумента функции;
 в качестве параметра может быть указан обобщенный тип указателя. Этот тип
обозначается "void *". При таком объявлении в качестве аргумента вызова может быть
задан указатель на любой тип переменной.
Файл: 308812725 Создан: 17.10.1998 Модифицирован: 25.01.2016
Автор: Шонин В.А.
-4Информатика
Лабораторная работа 1-14
Если функция вызывается до своего объявления или определения, а также, если
объявление и определение функции не задано в данном исходном файле, предполагается,
что возвращаемое функцией значение имеет тип int, а контроль соответствия типов
вызываемых аргументов и параметров функции не выполняется. В случае, если тип
возвращаемого значение не int, или типы аргументов не соответствуют типу параметров,
программа будет выполняться неверно. Поэтому желательно объявлять все используемые
в данном исходном файле функции (за исключением функций стандартной библиотеки
С).
Определение функции специфицирует имя, параметры и тело функции. Оно
может также определить тип возвращаемого значения, Определение функции имеет
следующий формат:
имя-типа описатель (список-объявлений)
{
тело-функции
}
где имя-типа, описатель и список-объявлений имеют то же смысл и описываются так же,
как и в объявлении функции. Тело функции содержит операторы, которые определяют
действие функции и объявления переменных, используемых в этих операторах. При
вызове функции управление передается первому оператору тела функции и продолжается
до тех пор, пока не встретится оператор return или конец тела функции. Если в
операторе return не задано выражение или оператор return отсутствует,
возвращаемое значение не определено.
Определение функции в C не может содержать в свою очередь определения
функции (запрещены вложенные функции). Однако функции C могут рекурсивно
вызывать сами себя.
Вызов функции передает управление и аргументы (если они есть) заданной
функции. Оператор вызова функции имеет следующий вид:
имя-функции (арг-1, арг-2,...)
Имя-функции может быть не только идентификатором в объявлении функции, но и
любым выражением, имеющим тип указателя на функцию. При выполнении функции
сначала происходит присвоение значений аргументов параметрам. При этом каждый
аргумент вычисляется, и над ним выполняются необходимые преобразования. Все
аргументы передаются по своему значению, только массивы и структуры по своему
адресу. Вызванная функция работает с копией аргументов, поэтому никакое изменение
параметров во время выполнения функции не отразится на значениях аргументов, с
которых была сделана копия. Если необходимо работать непосредственно со значениями
аргументов, в параметрах и аргументах должны быть указаны не сами значения, а их
адреса. После выполнения функции управление возвращается в точку вызова функции.
3.3. Объявление типа
В языке C имеется оператор typedef, позволяющий давать новые имена типам
данных. Оператор имеет следующий формат:
typedef имя-типа новое-имя
где
имя-типа – имя базового типа или описание указателей, структур, массивов,
функций и объединений.
Файл: 308812725 Создан: 17.10.1998 Модифицирован: 25.01.2016
Автор: Шонин В.А.
-5Информатика
Лабораторная работа 1-14
новое-имя – синоним
последующих объявлениях.
для имени типа, который может использоваться в
3.4. Классы памяти переменных
Помимо типа, каждая переменная в C имеет класс памяти. Спецификация класса
памяти переменной определяет, какое время жизни она имеет (локальное или глобальное)
и влияет на область действия переменной.
В языке C определены следующие спецификации класса памяти: auto,
register, static и extern.
Класс памяти переменной определяется местом его описания и ключевым словом,
если оно используется. Класс памяти определяет три условия. Во-первых, от него зависит,
какие функции файла имеют доступ к переменной. Если фрагмент кода может
использовать определенную переменную, говорят, что переменная видима в данном
разделе. Доступность переменной различным частям программы задает ее область
видимости. Во-вторых, класс памяти определяет, в каком количестве мест одна и та же
переменная может объявляться. Это свойство называется связыванием переменной.
Наконец, класс памяти определяет длительность существования переменной в памяти –
продолжительностью жизни.
В языке C переменная может иметь одну из трех областей видимости: в пределах
файла, блока либо прототипа функции. Переменная, имеющая область видимости в
пределах файла, доступна в пределах от точки определения до конца файла, содержащего
определение.
Переменная, имеющая область видимости в пределах блока, доступна в пределах
от точки определения до конца блока, содержащего определение. Использовавшиеся до
сих пор локальные переменные, включая формальные аргументы функций, имеют область
видимости в пределах блока. Именно область видимости в пределах блока делает
переменные локальными и ограничивает функциями, в которых они описаны. Тело
функции считается блоком, который содержит ее формальные параметры.
Область видимости прототипа функции лежит в диапазоне от точки описания
переменной до конца объявления прототипа. Это означает, что при обработке аргументов
прототипа функции компилятор принимает в расчет только типы. Имена, если они
используются, не имеют значения.
В языке C переменная может связываться следующим образом: внешним образом,
внутренним образом либо не связываться. Внешним образом связанная переменная может
использоваться в любом месте программы, включающей несколько файлов. Внутренним
образом связанная переменная может использоваться в любом месте единственного
файла, а не связанная переменная используется только в блоке, где она описана. Для переменных с внутренним или внешним связыванием допускается более одного объявления, а
переменные без связывания могут объявляться только один раз.
Понятия связывания и области видимости взаимосвязаны. Переменные с областью
видимости в пределах блока или прототипа функции не связаны. Именно поэтому
описания переменных без связывания и с областью видимости в пределах блока подобны.
Переменная языка C может иметь один из следующих видов продолжительности
жизни: глобальную продолжительность жизни и локальную продолжительность жизни.
Объект с глобальным временем жизни существует и имеет значение на протяжении
всего времени выполнения программы.
Файл: 308812725 Создан: 17.10.1998 Модифицирован: 25.01.2016
Автор: Шонин В.А.
-6Информатика
Лабораторная работа 1-14
Локальной переменной выделяется область памяти каждый раз, когда управление
передается блоку: в котором она определена. Когда управление возвращается из блока,
переменная теряет свое значение.
Объявление переменных, расположенные в исходном файле вне тел всех функций
(за границами описания функций), относятся к внешнему уровню, а объявления внутри
тел функций относятся к внутреннему уровню.
Объявления переменной на внешнем уровне используют спецификации класса
памяти static и external или вообще опускают их. Область действия переменной
внешнего уровня распространяется от точки, в которой она определена, до конца
исходного файла.
Если переменная на внешнем уровне (включая функцию) объявлена со
спецификацией static, то она определена только в данном исходном файле, т.е.
переменные с классом static в данном файле никак не связаны с переменными с теми
же именами в других исходных файлах. Значение переменной класса static может быть
проинициализировано как явно, так и неявно.
Объявление переменной с классом extern (или объявление без спецификации
класса памяти) делает ее доступной и в других исходных файлах. При этом переменная
может быть проинициализирована и ее характеристики (например, число элементов)
могут быть заданы только в одном из исходных файлов.
При объявлении переменной на внутреннем уровне можно использовать все
четыре спецификации класса памяти: auto, register, static и extern. Если
спецификация класса памяти у переменной опущена, то предполагается класс auto.
Область действия переменной класса auto с локальным временем жизни
распространяется на блок, в котором она объявлена и на все вложенные в него блоки.
Данный класс переменных автоматически не инициализируется и в случае отсутствия
операций инициализации или присваивания для данной переменной ее значение считается
неопределенным.
Спецификация класса памяти register требует, чтобы компилятор выделил
переменной память в регистре микропроцессора (если это возможно). Использование
регистровой памяти обычно ускоряет доступ к переменной и уменьшает размер
выполняемого кода программы. Переменные класса register имеют ту же самую
область действия, что и переменные класса auto, и если переменная не может быть
размещена на регистре, ей присваивается память класса auto (число доступных регистров
зависит от компилятора и используемого микропроцессора). В регистровой памяти может
быть размещена переменная размером не больше, чем размер типа int. К переменной,
размещенной в регистре, нельзя применять операцию адресации. При вызове функции из
блока, в котором определены регистровые переменные, содержимое регистров
сохраняется в памяти, а по возвращении в блок восстанавливается.
Переменная, объявленная со спецификацией static на внутреннем уровне, имеет
глобальное время жизни, но ее действие распространяется на блок, в котором она
объявлена и на все вложенные в него блоки. В отличие от переменных класса auto,
переменные класса static сохраняют свое значение при выходе из блока. Если
переменная класса static явно не инициализирована, ей присваивается нулевое
значение. Инициализация переменной класса static выполняется только один раз во
время компиляции.
Переменная, объявленная со спецификацией extern на внутреннем уровне,
является ссылкой на переменную с тем же именем, объявленную на внешнем уровне в
любом исходном файле программы. Цель внутреннего объявления extern сделать
Файл: 308812725 Создан: 17.10.1998 Модифицирован: 25.01.2016
Автор: Шонин В.А.
-7Информатика
Лабораторная работа 1-14
доступным переменную внешнего уровня именно внутри данного блока и всех вложенных
в него блоков.
4. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
Порядок выполнения работы:
1. Определить функцию, выполняющую действия по одному из вариантов,
приведенных в следующей таблице. В функциях использовать комплексные числа x + yi,
где x и y – соответственно действительная и мнимая части комплексного числа (типа
float), а i   1 . В функции main() вводятся действительные и мнимые части
исходных комплексных чисел, вызывается написанная функция и выводится результат на
экран дисплея.
№
варианта
1.
Умножение двух комплексных чисел x1  y1 i
формуле:
x
1
3.
5.
и x 2  y 2 i по
и
y
x  y ,   arctg
x
2
2
Перевод комплексного числа в показательную форму.
Показательная форма комплексного числа x  yi определяется
следующим образом:
i
 e ;  
и
y
x  y ,   arctg
x
2
2
Возврат 1, если два комплексных числа являются сопряженными и
0 - в противном случае. Комплексные числа
x1  y1 i и x 2  y 2 i называются сопряженными, если
Вычисление экспоненты от комплексного числа
формуле:
x  yi по
e x  yi  e x  cos y  i sin y
Вычисление главного значения натурального логарифма
комплексного числа x  yi по формуле:
7.
Действительная и
мнимая части
частного
Перевод комплексного числа в тригонометрическую форму.
Тригонометрическая форма комплексного числа x  yi
определяется следующим образом:
x1  x 2 и y1   y 2 .
6.
Действительная и
мнимая части
произведения
x1  y1 i x1 x 2  y1 y 2 x 2 y1  x1 y 2


i
x2  y2i
x 22  y 22
x 22  y 22
 cos   i sin  ;  
4.
и x 2  y 2 i по
 y1 i x 2  y 2 i   x1 x 2  y1 y 2    x1 y 2  y1 x 2  i
Деление двух комплексных чисел x1  y1 i
формуле:
2.
Выводимые
результаты
Действия, выполняемые в функции
ln x  yi  ln    i;  
x 2  y 2 ,   arctg
y
x
Файл: 308812725 Создан: 17.10.1998 Модифицирован: 25.01.2016
Сообщение о том,
являются ли числа
сопряженными или
нет
Действительная и
мнимая части
экспоненты
Действительная и
мнимая части
натурального
логарифма
Автор: Шонин В.А.
-8Информатика
Лабораторная работа 1-14
№
варианта
x  yi по формуле:
Вычисление степени комплексного числа
8.
9.
10.
11.
Выводимые
результаты
Действия, выполняемые в функции
 x  yi n   2  cos n  i sin n ;
  x 2  y 2 ,   arctg
Вычисление синуса комплексного числа
x  yi по формуле:
n
y
x
Действительная и
мнимая части синуса
sin x  yi  sin x  cosh y  i cos x  sinh y
Вычисление косинуса комплексного числа
x  yi по формуле:
Вычисление тангенса комплексного числа
x  yi по формуле:
Действительная и
мнимая части
косинуса
cos x  yi  cos x  cosh y  i sin x  sinh y
Действительная и
мнимая части
тангенса
sinh 2 y
sin 2 x
tg x  yi 
i
; a  cos 2 x  cosh 2 y
a
a
Вычисление котангенса комплексного числа x  yi по формуле:
sinh 2 y
sin 2 x
i
; a  2sin 2 x  cosh 2 y  cos 2 x  cosh 2 y 
a
a
12.
ctg x  yi 
13.
Вычисление гиперболического синуса комплексного числа
по формуле:
x  yi
sinh x  yi  sinh x  cos y  i cosh x  sin y
Вычисление гиперболического косинуса комплексного числа
x  yi по формуле:
14.
cosh x  yi  cosh x  cos y  i sinh x  sin y
16.
tanh x  yi 
Действительная и
мнимая части
гиперболического
синуса
Действительная и
мнимая части
гиперболического
тангенса
sin 2 y
sinh 2 x
i
; a  cosh 2 x  cos 2 y
a
a
Вычисление гиперболического котангенса комплексного числа
x  yi по формуле:
sin 2 y
sinh 2 x
ctgh x  yi 
i
; a  2sinh 2 x  cos 2 y  cosh 2 x  cos 2 y 
a
a
Вычисление арксинуса комплексного числа
Действительная и
мнимая части
котангенса
Действительная и
мнимая части
гиперболического
косинуса
Вычисление гиперболического тангенса комплексного числа
x  yi по формуле:
15.
Действительная и
мнимая части
степени
Действительная и
мнимая части
гиперболического
котангенса
x  yi по формуле:
arcsin x  yi  arctg
17.
d
 i ln c 2  d 2 ; c  a cos b  y; d  a sin b  x;
c
w
a  4 u 2  w 2 ; b  0.5  arctg ; u  1- x 2  y 2 ; w  2 xy
u
Действительная и
мнимая части
арксинуса
18.
Вычисление арккосинуса комплексного числа x  yi по формуле:
d
arccos x  yi  arctg  i ln c 2  d 2 ; c  a cos b  x; d  a sin b  y;
c
w
a  4 u 2  w 2 ; b  0.5  arctg ; u  x 2  y 2  1; w  2 xy
u
Действительная и
мнимая части
арккосинуса
Файл: 308812725 Создан: 17.10.1998 Модифицирован: 25.01.2016
Автор: Шонин В.А.
-9Информатика
Лабораторная работа 1-14
№
варианта
Вычисление арктангенса комплексного числа
19.
arctg x  yi  05  arctg
x  yi по формуле:
b
a b
2
2
 i 0.5  ln
2 ; a  1  x  y ; b  2x
2
a
x  1  y 
2
2
Вычисление арккотангенса комплексного числа
формуле:
20.
Выводимые
результаты
Действия, выполняемые в функции
Действительная и
мнимая части
арктангенса
x  yi по
b
a 2  b2
2
2
arcctg x  yi   0.5  arctg  i 0.5  ln
2 ; a  y  x  1; b  2 x
a
x 2  1  y 
Действительная и
мнимая части
арккотангенса
Вычисление ареа-синуса (обратного гиперболического синуса)
комплексного числа x  yi по формуле:
21.
arsinh x  yi  ln c 2  d 2  iarctg
a  4 u 2  w 2 ; b  0.5  arctg
22.
d
и
; c  a cos b  x; d  a sinДействительная
b  y;
мнимая части ареаc
синуса
w
; u  x 2  y 2  1; w  2 xy
u
Вычисление ареа-косинуса (обратного гиперболического косинуса)
комплексного числа x  yi по формуле:
d
arcosh x  yi  ln c 2  d 2  iarctg ; c  a cos b  x; d  a sin b  y;
c
w
a  4 u 2  w 2 ; b  0.5  arctg ; u  x 2  y 2  1; w  2 xy
u
Вычисление ареа-тангенса (обратного гиперболического тангенса)
комплексного числа x  yi по формуле:
23.
artanh x  yi  0.5  ln
a 2  b2
1  x  2  y 2
b
 i0.5  arctg ; a  1  x 2  y 2 ; b  2 y
a
Вычисление ареа-котангенса (обратного гиперболического
котангенса) комплексного числа x  yi по формуле:
24.
a 2  b2
b
arctanh x  yi   0.5  ln
 i 0.5  arctg ; a  x 2  y 2  1; b  2 y
a
 x  1 2  y 2
Вычисление числа, обратного комплексному числу
формуле:
25.
x  yi по
1
x
y
  i ; a  x2  y2
x  iy a
a
Вычисление корня n-ой степени из комплексного числа
формуле:
26.
n
x  yi 
2n


  cos
27.
 x  yi    x
2
2
Действительная и
мнимая части
Ареа-тангенса
Действительная и
мнимая части ареакотангенса
Действительная и
мнимая части
обратного
комплексного числа
x  yi по


y
 i sin  ;   x 2  y 2 ,   arctg
n
n
x
Вычисление квадрата комплексного числа
Действительная и
мнимая части ареакосинуса
x  yi по формуле:
 y 2   i 2 xy
Файл: 308812725 Создан: 17.10.1998 Модифицирован: 25.01.2016
Действительная и
мнимая части корня
комплексного числа
Действительная и
мнимая части
квадрата
комплексного числа
Автор: Шонин В.А.
- 10 Информатика
Лабораторная работа 1-14
№
варианта
28.
Выводимые
результаты
Действия, выполняемые в функции
Вычисление значения линейной функции z от комплексного числа
x  yi по формуле:
Действительная и
мнимая части
линейной функции
z   ax  b  iay (a и b вводятся в функции main)
Вычисление значения линейной функции z от комплексного числа
x  yi по формуле:
29.
Определить
комплексного числа
30.
f  x  yi  
функцию,
a 2  b2
 x  1  y
2
f  x  yi  
f
Действительная и
мнимая части
функции
b 1
; a  x 2  y 2  2; b  y  x
a
возвращающую
функцию,
x a
2
2
 iba;
f x  yi  
ba
функцию,
a
функцию
возвращающую
f x  yi  
Действительная и
мнимая части
функции
f
Действительная и
мнимая части
функции
функцию
f
Действительная и
мнимая части
функции
2
a
x
i
;
2
x y
x y
2
функцию,
возвращающую
x  yi по формуле:
x2  y 2
b3  a 2
x2  y 2
i
;a 
;b 
xa
ba
ln( x  y )
Определить
комплексного числа
функцию
f
xy
; b  x  y2 ;
xy
x  yi по формуле:
f x  yi  
Определить
комплексного числа
возвращающую
x  yi по формуле:
ln x  y
33.
35.
i
функцию,
2
Определить
комплексного числа
34.
2
функцию
x  yi по формуле:
2
x a
x b
x 1
f  x  yi   2
i
; a  x2  y2 ; b 
;
y b
y 1
y a
Определить
комплексного числа
32.
возвращающую
x  yi по формуле:
Определить
комплексного числа
31.
Действительная и
мнимая части
линейной функции
x2  y2  1
x2
2
f  x  yi  
 i  ; a  x 2   y  1 ;
a
a
функцию,
возвращающую
x  yi по формуле:
функцию
f
Действительная и
мнимая
x y;
функцию
x b
y b
i
;a  x 2  y 2 ;b  x 2  y 2 ;
xa
yb
f
Действительная и
мнимая части
функции
2. Введите программу с клавиатуры в среде BorlandC++.
3. Выполните отладку программы и запустите ее на выполнение. Протестируйте
программу для ошибочных и правильных значений исходных данных.
4. Покажите преподавателю программу и результаты ее работы (при ошибочных
и правильных значениях исходных данных) и скопируйте текст программы и результаты
работы программы в окно текстового редактора Блокнот с заголовками "Текст
программы имя-программы" и "Результат работы программы имя-программы".
5. Скопируйте полученный в окне текстового редактора Блокнот документ на
свою дискету или флэш-карту.
Файл: 308812725 Создан: 17.10.1998 Модифицирован: 25.01.2016
Автор: Шонин В.А.
- 11 Информатика
Лабораторная работа 1-14
5. СОДЕРЖАНИЕ ОТЧЕТА
В отчете должно быть представлено содержимое созданного вами документа.
6. ВОПРОСЫ ДЛЯ САМОКОНТРОЛЯ
1. В чем отличие структуры от массива от простой переменной?
2. Как определяется структура и как записывается обращение к элементу
структуры в языке C?
3. Как можно проинициализировать элементы структуры?
4. Как с помощью структур можно описывать списки?
5. Когда используются функции и как они определяются и вызываются в языке
C?
6. Каковы особенности объявления переменных в параметрах функции в C?
7. Как описываются прототипы в языке C?
8. Как задается переменное количество параметров в прототипе и определении
функции в C?
9. Для каких целей используется оператор typedef в языке C?
10. Какие спецификации классов памяти определены в C, и какие характеристики
переменных они определяют?
11. Каковы особенности описания классов переменных на внешнем уровне?
12. Какие спецификации классов переменных определены на внутреннем уровне и
как они действуют?
Файл: 308812725 Создан: 17.10.1998 Модифицирован: 25.01.2016
Автор: Шонин В.А.
Download