Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...
Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...
Топ:
Определение места расположения распределительного центра: Фирма реализует продукцию на рынках сбыта и имеет постоянных поставщиков в разных регионах. Увеличение объема продаж...
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного хозяйства...
Марксистская теория происхождения государства: По мнению Маркса и Энгельса, в основе развития общества, происходящих в нем изменений лежит...
Интересное:
Лечение прогрессирующих форм рака: Одним из наиболее важных достижений экспериментальной химиотерапии опухолей, начатой в 60-х и реализованной в 70-х годах, является...
Как мы говорим и как мы слушаем: общение можно сравнить с огромным зонтиком, под которым скрыто все...
Средства для ингаляционного наркоза: Наркоз наступает в результате вдыхания (ингаляции) средств, которое осуществляют или с помощью маски...
Дисциплины:
2020-05-08 | 156 |
5.00
из
|
Заказать работу |
|
|
Цель:
- закрепление навыков по написанию простейших программ в языке Си;
- приобретение навыков по написанию программ, использующих функции;
- приобретение навыков по написанию программ, использующих рекурсию;
Характер занятий: репродуктивный.
Форма организации: индивидуальная.
Обеспечение занятия: тетрадь с лекциями, СИ, компьютер.
Требования к знаниям студентов
Перед выполнением практической работы студент должен
знать:
- правила построения программы, использующей функции;
- способы передачи параметров в функции;
- правила построения программы, использующей рекурсию;
после выполнения практической работы студент должен
уметь:
- создавать программы с использованием функции;
- создавать программы, позволяющие использовать рекурсию.
Теоретический материал
Наилучшим способом разработки и поддержки больших программ является конструирование программы из небольших частей, или модулей, с каждым из которых обращаться проще, чем с первоначальной программой. Модули в С называются функциями. Программы на С обычно пишутся путем соединения новых функций, созданных программистом, с функциями, которые поставляются в составе стандартной библиотеки С.
Обращение к функции осуществляется посредством вызова функции с указанием ее имени и аргументов.
Все переменные, объявленные в определениях функций, являются локальными переменными — они известны только той функции, в которой определены. Большинство функций имеют список параметров. Параметры позволяют функциям обмениваться информацией. Параметры функции — это также локальные переменные.
Функции математической библиотеки
Функции математической библиотеки позволяют программисту выполнять некоторые общие математические вычисления.
|
Некоторые функции математической библиотеки С приведены на рис. 1. Переменные х и v имеют тип double.
Функция | Назначение | Пример |
sqrt(x) | квадратный корень из х | sqrt(900.0) равен 30.0 sqrt(9.0) равен 3.0 |
eхр(х) | экспоненциальная функция ех | eхр(1.0) равна 2.718282 ехр(2.0) равна 7.389056 |
log(x) | натуральный логарифм х (основание е) | log(2.718282) равен 1.0 log(7.389056) равен 2.0 |
log10(x) | логарифм х (основание 10) | log10(1.0) равен 0.0 log10 (10.0) равен 1.0 log10 (100.0) равен 2.0 |
fabs(x) | абсолютное значение х | если х > 0, то fabs(x) равно х если х=0, то fabs(x) равно 0.0 если х < 0, то fabs(x) равно -х |
ceil(x) | округляет х до ближайшего целого, не меньшего х | ceil(9.2) равно 10.0 ceil(-9.8) равно -9.0 |
floor(x) | округляет х до ближайшего целого, не превосходящего х | floor(9.2) равно 9.0 floor(-9.8) равно -10.0 |
pow(x, y) | х возводится в степень у (ху) | pow(2, 7) равно 128.0 pow(9,.5) равно 3.0 |
fmod(x, y) | остаток х/у как число с плавающей точкой | fmod(13.657, 2.333) равен 1.992 |
sin(x) | тригонометрический синус х (х в радианах) | sin(0.0) равен 0.0 |
cos(x) | тригонометрический косинус х (х в радианах) | cos(0.0) равен 1.0 |
tan(x) | тригонометрический тангенс х (х в радианах) | tan(0.0) равен 0.0 |
Рис. 1. Функции общего назначения математической библиотеки
Определения функций
Рассмотрим программу, которая использует функцию square для вычисления квадрата целых чисел от 1 до 10 (рис. 2).
Строка программы
int square (int);
является прототипом функции. Ключевое слово int в скобках информирует компилятор о том, что square предполагает получить от вызывающей функции целое значение. Слово int слева от имени функции square информирует компилятор о том, что square возвращает вызывающей функции результат целого типа. Компилятор использует прототип функции для проверки того, что вызовы square имеют корректный тип возвращаемых данных, корректное число аргументов, корректный тип аргументов и что аргументы следуют в правильном порядке.
Определение функции square показывает, что square предполагает передачу в параметре у целого значения. Оператор return в square передает результат вычислений функции, которая вызвала square.
|
/* Функция square, определенная программистом */
#include <stdio.h>
int sguare (int); /* прототип функции */
main()
{
int x;
for (x = 1; x <= 10; x++)
printf("%d ", square(x));
printf ("\n"); return 0; }
/* Определение функции */
int square(int y)
{
return y * y; }
Вывод на экран
1 4 9 16 25 36 49 64 81 100
Рис. 2. Использование функции, определенной программистом
Второй пример демонстрирует определенную программистом функцию maximum, возвращающую наибольшее из трех целых значений (рис. 3). С помощью функции scanf три целых числа вводятся. После этого числа передаются функции maximum, которая находит наибольшее целое число. Это значение возвращается в main оператором return в функции maximum и выводится на печать оператором printf.
/* Поиск максимального из трех целых значений */
#include <stdio.h>
int maximum(int, int, int); /* прототип функции */
main () {
int a, b, c;
printf("Enter three integers: ");
scanf("%d%d%d", &a, &b, &c);
printf("Maximum is: %d\n", maximum(a, b, c));
return 0; }
/* Определение функции maximum */
int maximum(int x, int y, int z) {
int max = x;
if (y > max) max = y;
if (z > max) max = z;
return max;
}
Вывод на экран
Enter three integers: 22 85 17 Maximum is: 85
Enter three integers: 85 22 17.• Maximum is: 85
Enter three integers: 22 17 85,, Maximum is: 85
Рис. 3. Определенная программистом функция maximum
Прототипы функций
Одной из наиболее важных особенностей ANSI С являются прототипы функций. Прототип функции сообщает компилятору тип данных, возвращаемых функцией, число параметров, получаемых функцией, тип и порядок следования параметров. Компилятор использует прототипы функций для проверки корректности обращений к функции. Прототипом функции maximum, приведенной на рис. 3, является
int maximum (int., int, int);
Этот прототип объявляет, что maximum получает три параметра типа int и возвращает результат типа int. Прототип функции имеет тот же вид, что и первая строка определения функции maximum, за исключением того, что в него не включены имена параметров (х, у и z).
Пропуск точки с запятой в конце прототипа функции вызывает синтаксическую ошибку.
Заголовочные файлы
Каждая стандартная библиотека имеет свой заголовочный файл, содержащий прототипы для всех функций данной библиотеки, а также определения различных типов данных и констант, необходимых этим функциям. На рис. 4 приведен алфавитный список заголовочных файлов стандартной библиотеки, которые могут быть включены в программу.
|
Заголовочный файл стандартной библиотеки | Содержимое заголовочного файла |
<assert.h> | Содержит диагностические макросы и информацию, которая помогает при отладке программы. |
<ctype.h> | Содержит прототипы для функций, которые проверяют определенные характеристики символов и прототипы для функций, которые могут использоваться для преобразования символов нижнего регистра в символы верхнего регистра и наоборот. |
<errno.h> | Определяет макросы, которые полезны для сообщений о типе ошибки. |
<float.h> | Содержит пределы значений для чисел с плавающей точкой в системе. |
<limits.h> | Содержит пределы значений для целых чисел в системе. |
<locale.h> | Содержит прототипы функций и другую информацию, которая позволяет изменять работу программы согласно правилам текущего локала, в котором она выполняется. Понятие локала дает компьютерной системе возможность обрабатывать соглашения, принятые в различных странах по всему миру для выражения таких данных, как дата, время, денежные единицы и способ записи больших чисел. |
<math.h> | Содержит прототипы для функций математической библиотеки. |
<setjmy.h> | Содержит прототипы для функций, которые позволяют обойти обычный вызов функции и последовательность возврата. |
<signal.h> | Содержит прототипы функций и макросы для обработки различных условий, которые могут возникать во время выполнения программы. |
<stdarg.h> | Определяет макросы для обработки списка параметров функции, для которой неизвестно число параметров и их тип. |
<stdaef.h> | Содержит общие определения типов, используемых С для выполнения некоторых вычислений. |
<stdio.h> | Содержит прототипы для функций ввода/вывода стандартной библиотеки и информацию, используемую ими. |
<stdlib.h> | Содержит прототипы функций для преобразования чисел в текст и текста в числа, прототипы функций размещения памяти, генерации случайных чисел и других сервисных функций. |
<string.h> | Содержит прототипы для функций обработки строки. |
<time.h> | Содержит прототипы функций и типы для функций управления временем и датой. |
Рис. 4. Заголовочные файлы стандартной библиотеки
|
|
|
Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...
Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...
Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!