Основы информатики Лекция. Функции Заикин Олег Сергеевич http://sat.isa.ru/pdsat/files/teaching/ zaikin.icc@gmail.com.

Презентация:



Advertisements
Похожие презентации
Практическое занятие 6. Функции. Большинство языков программирования используют понятия функции и процедуры. C++ формально не поддерживает понятие процедуры,
Advertisements

Лекция 6 Функции. Объявления и определения Объявление функции – указание имени функции, а также входных и выходных параметров Определение функции – указание.
Лекция 6 Функции. Объявления и определения Объявление функции – указание имени функции, а также входных и выходных параметров Определение функции – указание.
Основы информатики Лекция. Массивы. Указатели. Заикин Олег Сергеевич
Основы информатики Классы Заикин Олег Сергеевич zaikin.all24.org
Функции Лекция 8. Назначение функций Функции - самостоятельные программные единицы, спроектированные для решения конкретной задачи. Функции по структуре.
Функции Функция – именованная последовательность описаний и операторов, выполняющая некоторое действие. Может иметь параметры и возвращать значение. Функция.
Инструкции C++ Условная инструкция Формат: if (условие) оператор; else оператор; Пример: if (i!=0) { if (j) j++; if(k) k++; else if(p) k--; } else i--;
Вводный курс в С++ Занятие 1 Олег Власенко Заместитель директора ООО СимбирСофт Старший.
Преобразования типов В языке C/C++ имеется несколько операций преобразования типов. Они используются в случае, если переменная одного типа должна рассматриваться.
Лекция 3 ПЕРВЫЕ ПРОГРАММЫ, ВВОД/ВЫВОД В ЯЗЫКЕ С++
Лекция 1 Классификация С++. Парадигмы программирования Императивная Функциональная Декларативная (логическая) Инструкция 1 Инструкция 2 Инструкция 3 Инструкция.
ПРОЦЕДУРЫ И ФУНКЦИИ CPascal Подпрограмма – группа операторов реализующая законченный алгоритм и оформленная как самостоятельная синтаксическая единица.
Основы информатики Массивы. Указатели. Заикин Олег Сергеевич
Лекция 2 С => C++ => C# Большие и маленькие буквы различаются (main, Main, MAIN, mAin – разные имена) После каждого оператора ставится точка с запятой.
Обработка исключительных ситуаций Исключительная ситуация (исключение) – это ошибка, возникающая во время выполнения программы. Например, ошибка работы.
Лабораторная работа 4. Подпрограммы. Задание на лабораторную работу Написать программу, реализующую хранение информации, указанной в вариантах индивидуальных.
Краткое введение в язык программирования С Аксёнов Сергей Владимирович к.т.н., доцент каф.ОСУ ТПУ Томский политехнический университет.
Д.з Язык С++ - занятие 31. Задача 1: 1/1 + 1/3 + 1/5 … #include using namespace std; int main() { int n; cin >> n; double sum = 0;// Сумма for.
Лекция 4 Программирование на Паскале. Элементы языка Турбо Паскаль 7.0. Типы данных. Управляющие конструкции.
Транксрипт:

Основы информатики Лекция. Функции Заикин Олег Сергеевич

Функция это проименованная часть программы, которая может вызываться из других частей программы столько раз, сколько необходимо. Функция, в отличие от процедуры, обязательно возвращает значение. Функция - «строительный блок» C++ программы. Функция – подпрограмма, которая содержит одну или несколько инструкций C++ и выполняет одну или несколько задач.Функции

тип имя (спецификации параметров) { // тело функции } Пример int mul(int x, int y) { return x * y; // результат – произведение 2 чисел } тип: int имя: mul спецификации параметров: int x, int y тело функции: return x * y; Общий формат функции

Пользовательские функции - написанные программистом. Стандартные функции - из стандартной библиотеки. Например, sin() или sqrt(). Виды функций

Тип функции это тип возвращаемого функцией результата. Если функция не возвращает никакого результата, то для нее указывается тип void (аналог процедуры). Функции могут иметь любой тип. // у функции mul тип int int mul(int x, int y) { return x * y; // результат – произведение 2 чисел } Тип функций

Имя функции идентификатор, задаваемый программистом (исключение – функция main). Функциям можно дать любые имена: начинающиеся с буквы латинского алфавита либо с символа _ состоять из символов латинского алфавита, цифр, символов _ не совпадающие с зарезервированными. main, sqrt – недопустимые имена (зарезервированы) func, fun45c, sum_int_numbers – допустимые имена 84abc, $bv – недопустимые имена. Имя функции

Спецификации параметров это либо «пусто», либо список имен формальных параметров функции с указанием типа для каждого из них. В списке спецификации разделены запятой. Пример int mul(int x, int y) { return x * y; // результат – произведение 2 чисел } int x – первый параметр int y – второй параметр Спецификации параметров

Значения функций Функция завершается после выполнения return Может быть несколько return (например, в условном операторе). // функция для вычисления модуля целого числа int abs_int(int x) { if ( x >= 0 ) return x; else return (-x); } Как записать тело функции с одним return?

Значения функций // вычисление модуля целого числа int abs_int(int x) { return x >= 0 ? x : -x; } // блок с 1 return

Преимущества функций: 1.Можно использовать один и тот же исходный код для многих входных значений. Следствие – сокращение объема исходного кода. 2.Улучшение читаемости кода – программа разбивается на связанные блоки. 3.Уменьшение вероятности ошибиться – если есть ошибка, то она в функции и она однотипная для всех входных значений. Пример использования

// расстояние между 2 точками на плоскости double dist(double x1, y1, x2, y2){ return(sqrt(sqr(x1-x2)+sqr(y1-y2))); } // в программе нужно посчитать 3 расстояния main(){ cout

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

#include using namespace std; int square(int a); // прототип 1 void main() { cout

main() – первая функция, которая вызывается при выполнении программы. Программа начинается с выполнения функции main() независимо от того, где она расположена. Обычно main() размещают первой, чтобы ее было проще найти. Функция main() не требует прототипа. Функция main()

Параметры функции main() Параметры задаются после имени программы в командной строке. int argc – количество аргументов Имя программы тоже учитывается, поэтому если аргументов нет, argc равен 1. char **argv – указатель на массив символьных указателей Каждый указатель argv ссылается на строку, содержащую аргумент командной строки. argv[0] – имя программы.

Числовые аргументы main() Можно использовать функции atoi(), atol(), atof() для преобразования строк в числа. Пример. void main( int argc, char **argv ) { if (argc > 1) int a = atoi(argv[1]); // 1-ый параметр } mypog.exe

Локальная переменная известна только функции, в которой она определена. Int MyFunc() { int i; // локальная переменная } Глобальная переменная известна всей программе. int MyVar; // глобальная переменная int main() … Локальные и глобальные переменные

Распространенные ошибки Объявление новой функции внутри функции main() Функции нужно объявлять отдельно друг от друга. Для каждого варианта набора входных значений сделана отдельная функция Если действия над входными данными одни и те же, должна быть одна функция. Действия с локальной переменной как с глобальной Причина - использование локальной и глобальной переменных с одинаковым именем.

#include using namespace std; char c=\t; short int s=1; int i; Long long int l; int main() { char c; // имя как у глобальной float f; double d; long double D; cout

#include using namespace std; void myfunc( int a; float b ); // прототип функции Int main() { cout

Аргумент – конкретное значение, передаваемое функции при вызове. Параметр – переменная, которая принимает передаваемый функции аргумент. Функции можно передать несколько аргументов. void mul(int x, int y) { cout

Вариант 1. Функции передается значение аргумента. Значение аргумента копируется в параметр функции. В блоке, в котором произошел вызов функции, значение аргумента не меняется. Пример. int MyFunc( int x ) { x = 10; } … x = 5; MyFunc( x ); cout

Вариант 2. Функции передается адрес аргумента (при вызове по ссылке). В параметр копируется адрес аргумента. Поэтому изменения параметра окажут влияние и на аргумент. Пример. Int MyFunc( int &x ) { x = 10; } x = 5; MyFunc( x ); … // после вызова MyFunc() x равно 10 Передача аргументов функции

Вариант 1. Функции передается значение указателя. Значение указателя копируется в параметр функции. Пример. int MyFunc( int *arr ) { arr[0] = 10; arr[1] = 20; arr++; } … int *arr = new int[2]; MyFunc( arr ); … // после вызова MyFunc() arr как и прежде указывает на // начало массива Передача указателей в качестве аргументов функции

Вариант 2. Функции передается ссылка на указатель. В параметр копируется адрес указателя. Пример. int MyFunc( int *&arr ) { arr[0] = 10; arr[1] = 20; arr++; } … int *arr = new int[2]; MyFunc( arr ); … // после вызова MyFunc() arr указывает на последний // элемент массива Передача указателей в качестве аргументов функции

Вариант 1. int MyFunc( int *&arr ) { arr[0] = 10; } Вариант 2. int MyFunc( int *arr ) { arr[0] = 10; } В обоих вариантах значения массива после вызова функций поменяются. Почему? Передача указателей в качестве аргументов функции

Аргументы по умолчанию Можно придать параметру значение, на случай если функция вызывается без аргумента, который соответствует этому параметру. void myfunc(double num = 0.0); void main() { myfunc(10.3); // значение передается явно myfunc(); // значение по умолчанию }

Перегрузка функций Позволяет двум функциям с разными параметрами иметь одинаковые имена. По типу аргументов и их количеству компилятор определяет какую именно версию функции вызвать. В языке C есть 3 разные функции для определения модуля числа: abs(), labs() и fabs() – для int, long int и float. В С++ функция abs() одна, но перегружаемая.

Перегрузка функций Пример. void f(int a) { cout

Перегрузка функций Допускается задавать версиям функции произвольные действия. Но правильнее, чтобы они были «родственными».