Разделы презентаций


Функции

Содержание

ПланЛекция 8ПланПара заданий для самопроверкиФункцииПодпрограмма как алгоритмическая структураФункции в языке СиПередача параметровВозврат значенийПримеры функцийФункции: что еще?Игнорирование возвращаемого значенияТип функции по умолчаниюНеопределенное значение функцииТип и аргументы функции main()Функции с переменным числом параметровФункции

Слайды и текст этой презентации

Слайд 1Функции
Алтайский государственный университет Математический факультет Кафедра информатики
Барнаул 2013

ФункцииАлтайский государственный университет Математический факультет Кафедра информатики Барнаул 2013

Слайд 2План
Лекция 8
План
Пара заданий для самопроверки
Функции
Подпрограмма как алгоритмическая структура
Функции в языке

Си
Передача параметров
Возврат значений
Примеры функций
Функции: что еще?
Игнорирование возвращаемого значения
Тип функции по

умолчанию
Неопределенное значение функции
Тип и аргументы функции main()
Функции с переменным числом параметров
Функции и структура программы
Программа из одного файла
Программа из многих файлов
Области видимости переменных

ПланЛекция 8ПланПара заданий для самопроверкиФункцииПодпрограмма как алгоритмическая структураФункции в языке СиПередача параметровВозврат значенийПримеры функцийФункции: что еще?Игнорирование возвращаемого

Слайд 3Пара заданий для самопроверки
Задание «Поразрядные операции»
Задание «Оператор выбора»

Пара заданий  для самопроверкиЗадание «Поразрядные операции»Задание «Оператор выбора»

Слайд 4Пара заданий для самопроверки
Задание «Поразрядные операции»
Что выведет программа?

void main()
{

unsigned char p=0xFF, q=0360, r;
r = p &

~q;
printf("%d", r);
}

p=11111111
q=11110000

~q=00001111 p=11111111
p&~q=00001111

Вывод: 15

Пара заданий для самопроверкиЗадание «Поразрядные операции»Что выведет программа?	void main(){  unsigned char p=0xFF, q=0360, r;  r

Слайд 5Пара заданий для самопроверки
Экзаменационная работа. Задание 1.
Для выражения укажите порядок

вычисления, промежуточные результаты вычисления подвыражений и их тип. Укажите также

значения и тип окончательного результата вычисления выражения, стоящего справа от оператора присваивания, и значение с его типом, сохраняемое в переменной, стоящей слева от оператора присваивания.

2, unsigned int

2, unsigned int

2, unsigned long int

3, unsigned long int

3, int

3

3

unsigned long int

int

Пара заданий для самопроверкиЭкзаменационная работа. Задание 1.Для выражения укажите порядок вычисления, промежуточные результаты вычисления подвыражений и их

Слайд 6Функции
Подпрограмма как алгоритмическая структура
Функции в языке Си
Передача параметров
Возврат значений
Примеры функций

ФункцииПодпрограмма как алгоритмическая структураФункции в языке СиПередача параметровВозврат значенийПримеры функций

Слайд 7Функции
Алгоритмические структуры
Базовые алгоритмические структуры
Следование
Повторение
Ветвление

ФункцииАлгоритмические структурыБазовые алгоритмические структурыСледованиеПовторениеВетвление

Слайд 8Функции
Алгоритмические структуры
Алгоритмические структуры вкладываются друг в друга

ФункцииАлгоритмические структурыАлгоритмические структуры вкладываются друг в друга

Слайд 9Функции
Подпрограммы
Часто при построении алгоритмов приходится использовать алгоритмы, составленные ранее
Алгоритмы, целиком

используемые в составе других алгоритмов, называются вспомогательными (или подчиненными)
В алгоритмических

языках вспомогательные алгоритмы оформляются в виде подпрограмм (процедур, функций)

ФункцииПодпрограммыЧасто при построении алгоритмов приходится использовать алгоритмы, составленные ранееАлгоритмы, целиком используемые в составе других алгоритмов, называются вспомогательными

Слайд 10Функции
Подпрограммы

ФункцииПодпрограммы

Слайд 11Функции
Подпрограммы

ФункцииПодпрограммы

Слайд 12Функции
Подпрограммы

1. Повторять 3 раза
2. Нажать на кнопку звонка
Позвонить

в звонок
Заголовок подпрограммы
Тело подпрограммы
Вызов подпрограммы

ФункцииПодпрограммы1. Повторять 3 раза2.   Нажать на кнопку звонкаПозвонить в звонокЗаголовок подпрограммыТело подпрограммыВызов  подпрограммы

Слайд 13Функции

3. Шаг 3
4. Шаг 4
5. Шаг 5

1. Функция 1
2. Функция

2
Подпрограммы
Вызов подпрограммы приводит к выполнению ее тела
Программа

1. Шаг 1
2. Шаг

2

Функция 1

Функция 2

Функции3. Шаг 34. Шаг 45. Шаг 51. Функция 12. Функция 2ПодпрограммыВызов подпрограммы приводит к выполнению ее телаПрограмма1.

Слайд 14Функции
Подпрограммы
Использование подпрограмм
сокращает описание алгоритма (выполнение одинаковых действий в разных

местах программы)
структурирует описание алгоритма (разбивка программы (или другой подпрограммы) на

подзадачи для лучшего восприятия)
позволяет реализовать на практике принципы структурного программирования при построении больших программ

ФункцииПодпрограммыИспользование подпрограмм сокращает описание алгоритма (выполнение одинаковых действий в разных местах программы)структурирует описание алгоритма (разбивка программы (или

Слайд 15Функции
Подпрограммы в Си
В Си подпрограммы реализуются в виде функций
Выполнение программы

начинается с вызова функции main(), которая вызывает другие функции
#include


void main() {
int i, j, n, m;
printf(“n=”); scanf(“%d”,&n);
printf(“m=”); scanf(“%d”,&m);
for(i=1; i<=n; i++) {
for(j=1; j<=m; j++)
printf(“*”);
printf(“\n”);
}
}

Заголовок функции main()

Тело функции main()

Вызов функции scanf()

Вызов функции printf()

ФункцииПодпрограммы в СиВ Си подпрограммы реализуются в виде функцийВыполнение программы начинается с вызова функции main(), которая вызывает

Слайд 16Функции
Функции в Си
Как описать собственную (нестандартную) функцию?
#include

void starbar() {


}

void main() {

starbar();

}
Описание

функции должно располагаться ранее вызова этой функции

Вызов функции

#include

void starbar();

void main() {

starbar();

}

void starbar() {

}

Объявление функции – до использования

Вызов функции

Описание функции -- где угодно (может быть и в другом файле)

Вариант 1

Вариант 2

ФункцииФункции в СиКак описать собственную (нестандартную) функцию?#include void starbar() {  …}void main() {  …

Слайд 17Функции
Функции в Си
Как описать собственную (нестандартную) функцию?
#include

void starbar() {

int count;
for (count=1; count

printf(“\n”);
}

void main() {

starbar();

}

Функция, выводящая на экран строку из звездочек

ФункцииФункции в СиКак описать собственную (нестандартную) функцию?#include void starbar() { int count; for (count=1; count

Слайд 18Функции
Функции в Си
Как описать собственную (нестандартную) функцию?
#include

void starbar() {

int count;
for (count=1; count

printf(“\n”);
}

void main() {
starbar();
printf(“Привет!”);
starbar();
}

Вызов функции

Вызов функции

ФункцииФункции в СиКак описать собственную (нестандартную) функцию?#include void starbar() { int count; for (count=1; count

Слайд 19Функции
Функции в Си
После выполнения программы:
***********************************************************************
Привет!
***********************************************************************

ФункцииФункции в СиПосле выполнения программы:***********************************************************************Привет!***********************************************************************

Слайд 20Функции
Функции в Си
Как описать функцию с параметрами?
#include

void starbar() {


}

void spaces(int n) {
int count;
for (count=1; count

<=n; count++)
printf(“ ”);
printf(“\n”);
}

void main() {
starbar();
spaces(27); printf(“Привет!”);
starbar();
}

Функция с параметром

Вызов функции с параметром

Формальный параметр

Фактический параметр – константа

ФункцииФункции в СиКак описать функцию с параметрами?#include void starbar() {  …}void spaces(int n) { int count;

Слайд 21Функции
Функции в Си
После выполнения программы:
***********************************************************************

Привет!
***********************************************************************
ФункцииФункции в СиПосле выполнения программы:***********************************************************************

Слайд 22Функции
Функции в Си
Как описать функцию с параметрами?
#include

void starbar() {


}

void spaces(int n) {
int count;
for (count=1; count

<=n; count++)
printf(“ ”);
printf(“\n”);
}

void main() {
int space_num=27;
starbar();
spaces(space_num); printf(“Привет!”);
starbar();
}

Вызов функции с параметром

Фактический параметр – переменная

Формальный параметр

ФункцииФункции в СиКак описать функцию с параметрами?#include void starbar() {  …}void spaces(int n) { int count;

Слайд 23Функции
Функции в Си
Как описать функцию с параметрами?
#include

void starbar() {


}

void spaces(int n) {
int count;
for (count=1; count

<=n; count++)
printf(“ ”);
printf(“\n”);
}

void main() {
starbar();
spaces((60-7)/2); printf(“Привет!”);
starbar();
}

Вызов функции с параметром

Фактический параметр – выражение

Формальный параметр

ФункцииФункции в СиКак описать функцию с параметрами?#include void starbar() {  …}void spaces(int n) { int count;

Слайд 24Функции
Функции в Си
Как описать функцию с несколькими параметрами?
#include

void starbar(int

n, int m) {
int i, j;
for (i=1; i

<=n; i++) {
for (j=1; j <=m; j++)
printf(“*”);
printf(“\n”);
}
}

void main() {
starbar(4,15);
}

Вызов функции с параметрами

Фактические параметры

Формальные параметры: перечисляются с указанием типа через запятую

ФункцииФункции в СиКак описать функцию с несколькими параметрами?#include void starbar(int n, int m) { int i, j;

Слайд 25Функции
Функции в Си
После выполнения программы:
***************
***************
***************
***************

ФункцииФункции в СиПосле выполнения программы:************************************************************

Слайд 26Функции
Параметры функций
в заголовке функции перечисляются формальные параметры, они обозначаются именами,

поскольку могут меняться

при вызове функции в скобках указывают фактические параметры

(константы или выражения) в том же порядке

void tr( int x, int y, int c )

tr ( 200, 100, COLOR(255,0,0));

x

y

c

Функции в Си

ФункцииПараметры функцийв заголовке функции перечисляются формальные параметры, они обозначаются именами, поскольку могут менятьсяпри вызове функции в скобках

Слайд 27Функции
Параметры функций
для каждого формального параметра в заголовке функции указывают его

тип
внутри функции параметры используются так же, как и прочие переменные
в

функции можно объявлять дополнительные локальные переменные, остальные функции не имеют к ним доступа

void A ( int x, float y, char z ) { ... }

void A ( int x, float y, char z ) {
int a2, bbc = 345;
... }

локальные переменные

int a2, bbc = 345;

Функции в Си

ФункцииПараметры функцийдля каждого формального параметра в заголовке функции указывают его типвнутри функции параметры используются так же, как

Слайд 28Функции
Функции в Си
Функция как «черный ящик»
#include

void starbar() {
int

count;

}

void spaces(int n) {
int count;

}

void main() {

starbar();
spaces(27); printf(“Привет!”);
starbar();
}

Вход

y = f(x1,x2)

Выход

Вход

Выход – последовательность пробелов

Механизм скрыт от головной и прочих функций

Функция: внутренний механизм скрыт

ФункцииФункции в СиФункция как «черный ящик»#include void starbar() { int count; …}void spaces(int n) { int count;

Слайд 29Функции
Функции в Си
Возвращаемое значение функции
#include

void starbar(int n, int m)

{
int i, j;
for (i=1; i

for (j=1; j <=m; j++)
printf(“*”);
printf(“\n”);
}
}

void main() {
starbar(4,15);
}

void указывает на отсутствие возвращаемого значения

ФункцииФункции в СиВозвращаемое значение функции#include void starbar(int n, int m) { int i, j; for (i=1; i

Слайд 30Функции
Функции в Си
Возвращаемое значение функции
#include

double max(double a, double b)

{
if (a > b)
return

a;
else
return b;
}

void main() {
double x=10.5, y=20;
printf(“max(%lf, %lf) = %lf\n”,
x, y, max(x,y));
}

При наличии возвращаемого значения нужно указать его тип

Выходная величина возвращается оператором return

После выполнения return функция прекращает свою работу

ФункцииФункции в СиВозвращаемое значение функции#include double max(double a, double b) {  if (a > b)

Слайд 31Функции
Функции в Си
Возвращаемое значение функции
#include

void WritePositive(int a) {

if (a < 0)
return;

printf(“%d”, a);
}

void main() {
int n= 10, p=100;
WritePositive(n);
WritePositive(p);
}

Функция без возвращаемого значения

Оператор return используется без аргумента

Выполнение return прекращает работу функции

ФункцииФункции в СиВозвращаемое значение функции#include void WritePositive(int a) {  if (a < 0)

Слайд 32Функции
Функции в Си
После выполнения программы:
100

ФункцииФункции в СиПосле выполнения программы:100

Слайд 33Функции
Функции: резюме
Шаблон описания функции
() {



}
В определении можно опускать

имена параметров (только типы)
До вызова функции – ее описание или определение
Если нет возвращаемого значения, <тип-результата> = void
Возврат результата и прекращение функции:
return <результат>; или
return;
Параметры передаются по значению
фактические параметры могут быть константами и выражениями
формальные параметры – локальные переменные

Шаблон определения функции

<тип-результата> <имя-функции> (<список параметров, если есть>);

ФункцииФункции: резюмеШаблон описания функции () {      } В определении можно опускать имена

Слайд 34Функции
Как поменять местами?
2
3
1
Задача: поменять местами содержимое двух чашек.
Задача: поменять местами

содержимое двух ячеек памяти.
4
6
?
4
6
4
x
y
c
c = x;
x = y;
y = c;
x

= y;
y = x;

3

2

1

ФункцииКак поменять местами?231Задача: поменять местами содержимое двух чашек.Задача: поменять местами содержимое двух ячеек памяти.46?464xycc = x;x =

Слайд 35Функции
Параметры, передаваемые по указателю
Задача: составить процедуру, которая меняет местами значения

двух переменных.
Особенности: надо, чтобы изменения, сделанные в процедуре, стали известны

вызывающей программе.





main()
{
int x = 1, y = 2;
Swap ( x, y );
printf ( "x = %d, y = %d", x, y );
}

void Swap ( int a, int b )
{
int c;
c = a; a = b; b = c;
}

эта процедура работает с копиями параметров

x = 1, y = 2

ФункцииПараметры, передаваемые по указателюЗадача: составить процедуру, которая меняет местами значения двух переменных. Особенности: надо, чтобы изменения, сделанные

Слайд 36Функции
Параметры, передаваемые по указателю
Применение: таким образом функция может возвращать несколько

значений
Вызов:
Swap ( 2, 3 ); // числа
Swap (

x+z, y+2 ); // выражения
Swap ( &x, &y ); // адреса переменных

void Swap ( int * a, int * b )
{
int c;
c = *a; *a = *b; *b = c;
}

*

передаются не значения, а адреса переменных

*

ФункцииПараметры, передаваемые по указателюПрименение:  таким образом функция может возвращать несколько значенийВызов:Swap ( 2, 3 );

Слайд 37Функции
Функции: пример 1
Задача: составить функцию, которая вычисляет наибольшее из двух

значений, и привести пример ее использования
Функция:
формальные параметры
int Max ( int

a, int b )
{
if ( a > b ) return a ;
else return b ;
}

return - вернуть результат функции

тип результата

ФункцииФункции: пример 1Задача: составить функцию, которая вычисляет наибольшее из двух значений, и привести пример ее использованияФункция:формальные параметрыint

Слайд 38Функции
Функции: пример 2
Задача: составить функцию, которая определяет, верно ли, что

заданное число – простое.
Особенности:
ответ – логическое значение: «да» (1) или

«нет» (0)
результат функции можно использовать как логическую величину в условиях (if, while)
Алгоритм: считаем число делителей в интервале от 2 до N-1, если оно не равно нулю – число составное.

count = 0;
for (i = 2; i < N; i ++)
if ( N % i == 0) count ++;
if ( count == 0 )
// число N простое}
else // число N составное

ФункцииФункции: пример 2Задача: составить функцию, которая определяет, верно ли, что заданное число – простое.Особенности:ответ – логическое значение:

Слайд 39Функции
Функция: пример 2
int Prime ( int N )
{
int

count = 0, i;
for (i = 2; i*i

N; i++)
if (N % i == 0) count ++;
return (count == 0);
}

if (count == 0) return 1;
else return 0;

ФункцииФункция: пример 2int Prime ( int N ) { int count = 0, i; for (i =

Слайд 40Функции
Функции: пример 2
#include




main()
{
int N;
printf ( "Введите целое

число\n" );
scanf ( "%d", &N );
if ( Prime(

N ) )
printf ("%d - простое число", N);
else printf ("%d - составное число", N);
}

int Prime ( int N )
{
...
}

функция

Prime( N )

ФункцииФункции: пример 2#include main(){ int N; printf (

Слайд 41Функции
Упражнения
1. Описать функцию, которая определяет сумму всех чисел от 1

до N и привести пример ее использования.
Пример:
Введите число:

100
сумма чисел от 1 до 100 = 5050

2. Составить функцию, которая определяет, сколько зерен попросил положить на N-ую клетку изобретатель шахмат (на 1-ую – 1 зерно, на 2-ую – 2 зерна, на 3-ю – 4 зерна, …)
Пример:
Введите номер клетки:
28
На 28-ой клетке 134217728 зерен.
ФункцииУпражнения1. Описать функцию, которая определяет сумму всех чисел от 1 до N и привести пример ее использования.

Слайд 42Функции
Упражнения
3. Составить функцию, которая определяет наибольший общий делитель двух натуральных

и привести пример ее использования.
Пример:
Введите два числа:

14 21
НОД(14,21)=7

4. Составить функцию, которая вычисляет функцию синус как сумму ряда (с точностью 0.001)

Пример:
Введите угол в градусах:
45
sin(45) = 0.707
ФункцииУпражнения3. Составить функцию, которая определяет наибольший общий делитель двух натуральных и привести пример ее использования.  Пример:

Слайд 43Функции
Упражнения
5. Составить функцию, которая определяет, верно ли, что сумма его

цифр – четное число.
Пример:
Введите число:
136

Сумма цифр четная.

6. Составить функцию, которая определяет, верно ли, что в заданном числе все цифры образуют возрастающую последовательность.
Пример:
Введите число:
258
Верно.

Введите число:
528
Неверно.

Введите число:
245
Сумма цифр нечетная.

ФункцииУпражнения5. Составить функцию, которая определяет, верно ли, что сумма его цифр – четное число.  Пример:	 Введите

Слайд 44Вопросы и ответы
Вопросы?
Функции
Подпрограмма как алгоритмическая структура
Функции в языке Си
Передача параметров
Возврат

значений
Примеры функций

Вопросы и ответыВопросы?ФункцииПодпрограмма как алгоритмическая структураФункции в языке СиПередача параметровВозврат значенийПримеры функций

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика