Лабораторная работа № 1-14

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