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

Презентация на тему: » Функции и функциональное программирование. Функция – фрагмент кода, который можно вызывать из любого места программы. Например, с помощью функции len()» — Транскрипт:

1 Функции и функциональное программирование

2 Функция – фрагмент кода, который можно вызывать из любого места программы. Например, с помощью функции len() можно получать количество элементов последовательности. Функции позволяют уменьшить избыточность программного кода и повысить его структурированность.

3 Создание функции и ее вызов Функция описывается с помощью ключевого слова def: def ([Параметры]): [» » » Строка документирования » » «] [return ] Имя функции должно быть уникальным идентификатором, состоящим из латинских букв, цифр и знаков подчеркивания, причем имя функции не может начинаться с цифры В качестве имени нельзя использовать ключевые слова; кроме того, следует избегать совпадений с названиями встроенных идентификаторов Регистр символов в названии имеет значение!

Python с нуля. Урок 3 | Функции

4 Если тело функции не содержит выражений, то внутри необходимо разместить оператор pass. Этот оператор удобно использовать на этапе отладки программы, когда мы определили функцию, а тело будем дописывать позже: def f_pass(): #данная программа pass ничего не делает return(необязательная) позволяет вернуть значение из функции. После использования этой инструкции выполнение функции будет остановлено: def f_test(): print «Текст до инструкции return » return «Возвращаемое значение » print «Это выражение никогда не будет выполнено » print f_test() # Вызываем функцию Инструкции return может не быть вообще, тогда выполняются выражения внутри функции и возвращается значение None

5 Определение функций: def f_print_ok(): «»» Пример функции без параметров «»» print «»»Сообщение при удачно выполненной операции» def f_print(m): «»» Пример функции с параметром «»» print m def f_sum(x, y): «»» Пример функции с параметрами, возвращающей сумму двух переменных «»» return x + y Вызов функций: f_print_ok() # Вызываем функцию без параметров f_print(«Сообщение») # Функция выведет сообщение v1 = f_sum(5, 2) # Переменной v1 будет присвоено значение 7 a, b = 10, 50 v2 = f_sum(a, b) # Переменной v2 будет присвоено значение 60 Как видно из примера, имя переменной в вызове функции может не совпадать с именем переменной в определении функции. Количество же параметров в определении функции должно совпадать с количеством параметров при вызове! Оператор +, используемый в f_sum(), применяется не только для сложения, но и позволяет объединить последовательности.

6 Расположение определений функций С помощью оператора ветвления if можно изменить порядок выполнения программы. Таким образом, можно разместить внутри условия несколько определений функций с одинаковым названием, но разной реализацией. все выражения в программе выполняются последовательно сверху вниз, это означает, что прежде чем использовать идентификатор, его необходимо предварительно объявить, присвоив ему значение. Поэтому определение функции должно быть расположено перед вызовом функции. Правильно: def f_sum(x, y): return x + y v = f_sum(10, 20) # Вызываем после определения, все нормально Неправильно: v = f_sum(10, 20) # Идентификатор еще не def f_sum(x, y): определен, это ошибка return x + y

Основы Программирования — #4 — Функции

7 Необязательные параметры Чтобы сделать некоторые параметры необязательными, нужно в определении функции присвоить этому параметру начальное значение. def f_sum(x, y=2): # y — необязательный параметр return x + y v1 = f_sum(5) # Переменной v1 будет присвоено значение 7 v2 = f_sum(10, 50) # Переменной v2 будет присвоено значение 60 таким образом, если второй параметр не задан, то его значение будет 2 необязательные параметры, должны следовать после обязательных, иначе выведется отчет об ошибке

8 Сопоставление по ключам Можно передавать значение в функцию, используя сопоставление по ключам – для этого при вызове функции параметрам присваиваются значения Последовательность указания параметров произвольная def f_sum(x, y): return x + y print f_sum(y=20, x=10) #Сопоставление по ключам Сопоставление по ключам очень удобно использовать, если в функции несколько необязательных параметров, тогда не нужно перечислять все значения, а достаточно присвоить значение нужному параметру: def f_sum(a=2, b=3, c=4): # Все параметры необязательны return a + b + c print f_sum(2, 3, 20) # Позиционное присваивание print f_sum(c=20) # Сопоставление по ключам

9 Передача значений из кортежа и списка если значения параметров, которые планируется передать в функцию, содержатся в кортеже, то перед объектом следует указать символ *: def f_sum(a, b, c): return a + b + c t1, arr = (1, 2, 3), [1, 2, 3] print f_sum(*t1) # Распаковываем кортеж print f_sum(*arr) # Распаковываем список t2 = (2, 3) print f_sum(1, *t2) # Можно комбинировать значения

10 Передачи значений из словаря если значения параметров содержатся в словаре, то распаковывать словарь можно, указав перед ним две звездочки **: def f_sum(a, b, c): return a + b + c d1, print f_sum(**d1) # Распаковываем словарь t, d2 = (1, 2), print f_sum(*t, **d2) # Можно комбинировать значения Распаковать кортежи, списки и словари позволяет также функция apply()(устаревшая функция) apply( [, [, ]])

11 Переменное число параметров в функции если перед параметром в определении функции указать *,то функции можно будет передать произвольное количество параметров. Все переданные параметры сохраняются в кортеже; Суммирование произвольного количества чисел: def f_sum(*t): «»»Функция принимает произвольное кол-во параметров»»» res = 0 for i in t # Перебираем кортеж с переданными параметрами res += i return res print f_sum(10, 20) # Выведет: 30 print f_sum(10, 20, 30, 40, 50, 60) # Выведет 210

12 Анонимные функции – у них нет имени! то есть лямбда-функции, описывается с помощью ключевого слова lambda: lambda [ [, …, ]]: в качестве значения лямбда- функция возвращает ссылку на объект-функцию, которую можно сохранить в переменной или передать в качестве параметра в другую функцию вызывать как обычную, с помощью круглых скобок, внутри которых передаваемые параметры также могут быть необязательные параметры f1 = lambda: # Функция без параметров f2 = lambda x, y: x + y # Функция с 2 параметрами f3 = lambda x, y, z: x + y + z # с 3 print f1() # Выведет: 30 print f2(5, 10) # Выведет : 15 print f3(5, 10, 30) # Выведет: 45

13 Функции-генераторы функция-генератор – функция, которая может возвращать одно значение из нескольких значений на каждой итерации приостановить выполнение и превратить функцию в генератор позволяет ключевое слово yield Функция, которая возводит элементы последовательности в указанную степень: def f_test(x, y): for i in xrange(1, x + 1): yield i ** y for n in f_test(10, 2): print n, # Выведет: print # Вставляем пустую строку for n in f_test(10, 3): print n, # Выведет:

14 Декораторы функций декораторы позволяют изменить поведение обычных функций, например, выполнить какие то действия перед выполнением функции: def f_deco(f): # Функция-декоратор print «f_test(f)» return f # Возвращаем ссылку на def f_test(x) : return «x = %s» % x print f_test(10) перед определением функции f_test указывается название функции f_deco с Таким образом f_deco становится декоратором функции f_test; в качестве параметра функция- декоратор принимает ссылку на функцию, поведение которой нужно изменить, и должна возвращать ссылку на ту же функцию или какую – любо другую Выведет: Вызвана функция f_test() х = 10

15 Рекурсия, вычисление факториала Рекурсия – возможность функции вызывать саму себя. Её удобно использовать для перебора объекта, имеющего заранее неизвестную структуру, или выполнения неопределенного количества операций # -*- coding: ср1251 -*- def factorial(n): if == 0 or n == 1: return 1 else: return n * factorial(n — 1) while True: x = raw_input(«Введите число: «) if x.isdigit(): # Если строка содержит только цифры x = int(x) # Преобразуем строку в число break # Выходим из цикла else: print «Вы ввели не число» print «Факториал числа %s = %s» % (x, factorial(x))

16 Глобальные и локальные переменные Глобальные переменные – переменные, объявленные в программе вне функции def f_test(glob2): print » Значение глобальной переменной glob1 = %s» % glob1 glob2 += 10 print » Значение локальной переменной glob2 = %s» % glob 2 glob1, glob2 = 10, 5 f_test(77) # Вызываем функцию print » Значение глобальной переменной glob2 = %s» % glob2 Переменной glob2 внутри функции присваивается значение параметра, поэтому создается новое имя glob2, которое является локальным, все изменения внутри функции не затронут значение одноименной глобальной переменной. Локальные переменные – те, которым внутри функции присваивается значение. Если имя локальной совпадает с глобальной, то все операции внутри функции осуществляются с локальной переменной, а значение глобальной не изменяется. Локальные переменные видны только внутри тела функции. Результат выполнения: Значение глобальной переменной glob1 = 10 Значение глобальной переменной glob2 = 87 Значение глобальной переменной glob2 = 5

Читайте также:
Симс 2 прекращена работа программы

18 Функциональное программирование – раздел дискретной математики, в которой процесс вычисления трактуется как вычисление значений функций в математическом понимании ФункциональноеИмперативное вычисление результатов функций от исходных данных и результатов других функций выходные данные зависят только от входных предполагает явное хранение состояния программы Опираются на аргументы, состояние внешних переменных, могут иметь побочные эффекты Функции высших порядков – которые в качестве аргументов могут принимать функции, и возвращать другие функции. Позволяют использовать карринг — преобразование функции от пары аргументов в функцию, берущую свои аргументы по одном

19 Чистые функции не имеют побочных эффектов ввода- вывода и памяти: удаление без вреда результата, если он не используется принцип прозрачности ссылок удовлетворяет принципам thread-safe свобода компилятору комбинировать и реорганизовывать вычисление Рекурсивные функции — вызывают сами себя, позволяя операции выполняться снова и снова Главная особенность: реализация модели вычислений без состояния(+,-)

20 Стили программирования Императивные программы имеют склонность акцентировать последовательности шагов для выполнения какого-то действия, а функциональные программы к расположению и композиции функций, часто не обозначая точной последовательности шагов: # imperative style target = [] # create empty list for item in source_list: # iterate over each thing in source trans1 = G(item) # transform the item with the G() function trans2 = F(trans1) # second transform with the F() function target.append(trans2) # add transformed item to target # functional style # FP-oriented languages often have standard compose() compose2 = lambda A, B: lambda x: A(B(x)) target = map(compose2(F, G), source_list) Императивная версия Функциональная версия

21 предпосылки для полноценного функционального программирования в Python: функции высших порядков обработка списков рекурсия определяется с помощью оператора def или лямбда- выражением: def func(x, y): return x**2 + y**2 эквивалентны func = lambda x, y: x**2 + y**2 формальные и фактические аргументы, при вызове фактические: func(2, y=7) позиционные аргументы именованные повторы в именах аргументов недопустимы!

22 Списочные выражения — наиболее выразительное из функциональных средств Питона. вычисление списка квадратов натуральных чисел,

23 Встроенные функции высших порядков map() позволяет обрабатывать одну или несколько последовательностей с помощью заданной функции: >>> list1 = [7, 2, 3, 10, 12] >>> list2 = [-1, 1, -5, 4, 6] >>> map(lambda x, y: x*y, list1, list2) [-7, 2, -15, 40, 72] аналогичного (только при одинаковой длине списков) результата можно добиться с помощью списочных выражений: >>> [x*y for x, y in zip(list1, list2)] [-7, 2, -15, 40, 72]

24 filter() фильтрует значения последовательности, в результирующем списке только те значения, для которых значение функции для элемента истинно: >>> spisok = [10, 4, 2, -1, 6] >>> filter(lambda x: x >> spisok = [10, 4, 2, -1, 6] >>> [x for x in spisok if x

25 reduce() – организация цепочечных вычислений в списке произведение элементов : >>> spisok = [2, 3, 4, 5, 6] >>> reduce(lambda res, x: res*x, spisok, 1) 720 Вычисления происходят в следующем порядке: ((((1*2)*3)*4)*5)*6 Цепочка вызовов связывается с помощью промежуточного результата (res) Если список пустой, просто используется третий параметр (в случае произведения нуля множителей это 1): >>> reduce(lambda res, x: res*x, [], 1) 1 промежуточный результат необязательно число, это может быть любой другой тип данных, в том числе и список.

26 apply() применения другой функции к позиционным и именованным аргументам, заданным списком и словарем: >>> def f(x, y, z, a=None, b=None). print x, y, z, a, b. >>> apply(f, [1, 2, 3], )

27 Замыкания – функции, определяемые внутри других функций def multiplier(n): «multiplier(n) возвращает функцию, умножающую на n» def mul(k): return n*k return mul # того же эффекта можно добиться выражением # multiplier = lambda n: lambda k: n*k mul2 = multiplier(2) # mul2 — функция, умножающая на 2, например, mul2(5) == 10 >> it.next() # следующее значение (0, ‘H’) >>> print list(it) # оставшиеся значения в виде спис» title PYTHON»)) # итератор для перечисленных отсортированных букв слова >>> it.next() # следующее значение (0, ‘H’) >>> print list(it) # оставшиеся значения в виде спис» > 28 Итераторы Применение перечисляющего сортирующего итераторов: >>> it = enumerate(sorted(«PYTHON»)) # итератор для перечисленных отсортированных букв слова >>> it.next() # следующее значение (0, ‘H’) >>> print list(it) # оставшиеся значения в виде списка [(1, ‘N’), (2, ‘O’), (3, ‘P’), (4, ‘T’), (5, ‘Y’)] Использование модуля itertools: >>> from itertools import chain >>> print list(chain(iter(«ABC»), iter(«DEF»))) [‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’] >> it.next() # следующее значение (0, ‘H’) >>> print list(it) # оставшиеся значения в виде спис»> >> it.next() # следующее значение (0, ‘H’) >>> print list(it) # оставшиеся значения в виде списка [(1, ‘N’), (2, ‘O’), (3, ‘P’), (4, ‘T’), (5, ‘Y’)] Использование модуля itertools: >>> from itertools import chain >>> print list(chain(iter(«ABC»), iter(«DEF»))) [‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’]»> >> it.next() # следующее значение (0, ‘H’) >>> print list(it) # оставшиеся значения в виде спис» title PYTHON»)) # итератор для перечисленных отсортированных букв слова >>> it.next() # следующее значение (0, ‘H’) >>> print list(it) # оставшиеся значения в виде спис»>

29 Ленивые выражения простейшие логические операции or и and не вычисляют второй операнд, если результат определяется первым операндом лямбда-выражения определенные пользователем классы с ленивой логикой вычислений >>> def f(). print «f». return «f». >>> def g(). print «g». return g». >>> f() if True else g() f ‘f» >>> f() if False else g() g ‘g’ >> def g(). print «g». return g». >>> f() if True else g() f ‘f» >>> f() if False else g() g ‘g'»>

Источник: www.myshared.ru

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

Чтобы обеспечить данный ввод/вывод, к программе подключается заголовочный файл .

В C++ ввод/вывод выполняется с использованием операторов. Оператор вывода — это >. Для вывода информации вначале указывается поток, затем – оператор вывода и выводимые данные. Например,

В данном примере выведено дробное число. В общем случае данные можно получить из переменной или выражения:

int a=47;

Для считывания значения с клавиатуры, используется оператор ввода >>. Например, в этом фрагменте целая величина вводится в num:

int num;

cin >> num;

Операция ввода осуществляется только в переменные.

До сих пор нами в программах для вывода информации использовалась одна (заранее установленная в С++) форма (один формат). Однако С++ позволяет выводить информацию во множестве вариантов форм. Организация вывода информации в заранее установленной форме и изменение параметров ввода информации называется форматированием ввода/вывода.

Форматирование данных с помощью манипуляторов

Одним из способов форматирования информации в С++ является использование манипуляторов ввода/вывода.

Манипулятор – это ключевое слово языка С++, которое применяется в выражениях ввода/вывода для управления информацией ввода/вывода. Манипуляторы различают с параметрами и без параметров. Например:

dec – установка флага dec (вывод информации в десятичной форме) – манипулятор без параметра

setw(15) – задание ширины поля вывода в 15 позиции – манипулятор с параметром.

Для того, чтобы в программе можно было использовать манипуляторы с параметрами, необходимо в нее включить заголовок . При использовании манипуляторов без параметров это делать необязательно.

Манипуляторы задаются внутри цепочки операций ввода/вывода. Например:

Первый манипулятор oct сообщает потоку, что необходимо выводить целые числа в восьмеричной системе счисления и выводит 100 в восьмеричной системе счисления. Затем манипулятор hex сообщает, что следующий вывод необходимо сделать в шестнадцатеричной СС, и выводит 100 в шестнадцатеричной СС. Во второй строке манипулятор sеtw(10) устанавливает ширину поля вывода, равную десяти, и выводит в него 100 в шестнадцатеричной СС.

Читайте также:
Программы похожие на драйвер пак солюшен
endl Вывод символа новой строки и очистка потока вывод
left Установка флага left вывод
right Установка флага right вывод
setprecision (int p) Задание числа цифр точности, равной р вывод
setw(int w) Задание ширины поля вывода в w позиций вывод
skipws Отбрасываются начальные невидимые символы (пробелы, табуляции и символы новой строки) ввод
uppercase Вывод символов в верхнем регистре вывод
ws Пропуск начальных пробелов ввод
setfill (int ch) Задание символа заполнения вывод

Пример с использованием манипуляторов.

using namespace std;

Int main()

return 0;

После выполнения программы на экран выводится следующее:

Файловый ввод/вывод

Под файлом понимается именованная область памяти (обычно на диске: HDD, CD, Flash), которая рассматривается в компьютере как единое целое. Для компилятора файл – это сложный тип данных.

В файл можно записывать данные – вывод в файл; из файла можно считывать данные – ввод из файла.

Файловый ввод/вывод в С++ организуется с помощью потоков. Имеется три типа потока:

ifstream – поток ввода;

ofstream – поток вывода;

fstream – поток ввода и вывода.

Для реализации файлового ввода/вывода в программу необходимо включить директиву: #include < fstream >.

При работе с файлами следует соблюдать следующий порядок.

1) Вначале необходимо создать поток. Для этого объявляется его имя с соответствующим типом потока. Например:

ifstream in; — создан поток ввода из файла с именем in,

fstream iо – создан поток для ввода и вывода iо.

2) После создания потока, необходимо установить связь файла с потоком. Это производится с помощью функции open().

Например, для того чтобы связать созданный поток in с файлом, допустим с именем test, необходимо записать:

in.open(“test”); — это означает, что файл test связан с потоком in (для ввода данных).

Может оказаться, что такого файла не существует или по каким-либо причинам нет к нему доступа, тогда функция open() завершиться с ошибкой; в этом случае поток in примет значение false (ложь). Поэтому, чтобы убедиться в открытии файла, необходимо

3) сделать проверку типа:

if(!in)

4) После того, как файл открыт, работа с ним производится с помощью операторов ввода/вывода: “>”, так же, как и со стандартными потоками cin и cout, только вместо этих потоков необходимо использовать созданные потоки. Для нашего примера ввод из файла будет обеспечиваться инструкцией:

in >>. ;

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

5) После работы с файлом его необходимо закрыть с помощью функции close(). Для нашего примера это запишется:

Имя файла в функции не указывается.

Рассмотрим пример программы работы с файлами, в которой создается файл для вывода и в него записывается информация, после чего он закрывается. Затем файл открывается для ввода и оттуда считывается информация в программу.

using namespace std;

Int main()

ofstream tofile; //создание потока вывода

tofile.open(“first”); //открытие файла

if(!tofile) //проверка открытия файла

Else

tofile.close();

//открываем файл для ввода

ifstream fromfile; //создание потока ввода

fromfile.open(“first”); //открытие файла

if(!fromfile) //проверка открытия

Else

char str[80];

int n;

fromfile>>str>>n;

fromfile.close();

return 0;

Новые приемы программирования в данном примере:

1) переменные объявляются не в начале функции main(), а перед местом их использования;

2) вывод символьного массива производится не поэлементно, а строкой путем указания только имени массива.

После завершения работы программы содержимое файла first будет следующим:

Hello!

Функции

До сих пор все рассмотренные программы содержали одну-единственную функцию с именем main. Это отчасти связано с тем, что программы эти были простые.

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

Вначале следует отметить, что все функции разделяются на две части. Первую часть составляет большой набор библиотечных функций языка С++. Например, основные математические функции определяются заголовком , и подключаются к программе с помощью директивы #include. Но в данном случае речь пойдет о второй части функций языка С++, — о функциях, которые разрабатываетсам программист и использует их в своих программах.

Функция – это логически самостоятельная именованная часть программы, в которую может передаваться любое количество значений аргументов, а функция может возвращать значение. Но только одно.

Есть функции, в которые не передаются аргументы, и есть функции, которые не возвращают значений.

Объявление функции

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

· тип возвращаемого функцией значения;

· в круглых скобках – типы и имена параметров (переменных).

Как и всякое объявление, конструкция заканчивается точкой с запятой. Рассмотрим несколько примеров объявления функций.

intbuf (inta);

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

float fun1 (float b, char ch); — объявлена функция fun1, которая возвращает значение типа float, и у которой в качестве параметров указаны две переменные – b типа float и ch типа char.

Если функция не возвращает никакого значения, то при объявлении на его месте указывается слово void. Например, функция beta, имеющая в качестве параметра массив из десяти дробных чисел и не возвращающая значения, объявляется как

void beta (double m[10]);

Другим частным случаем является отсутствие параметров у функции. Тогда при объявлении в круглых скобках ставится слово void или вообще ничего не ставится. Следующие два объявления совершенно равнозначны:

char sasha (void);

char sasha ();

Объявляя функцию, мы тем самым не только указываем её тип, но и то, как с ней работать. Поэтому формат объявления функции ещё называется заданием её прототипа.

Объявляются все функции программы, кроме функции main().

Определение функции

Определение функции – это описание операций, которые выполняются в ее рамках. Если объявление функции должно предшествовать её использованию, то определение функции может быть сделано в любом месте программы (за исключением случая «функция в функции»).

Определение функции начинается заголовком, в котором указывается её прототип (тип возвращаемого значения, имя функции, список параметров), затем в фигурных скобках описываются действия, которые выполняются функцией (что называется телом функции). Если функция возвращает значение, то последним оператором в теле функции должен стоять оператор return.

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

Int summa(int x, inty)

int z;

z=x+y;

return z;

Прототип функции в данном примере показывает, что функция summa имеет два целочисленных параметра x и y и возвращает результат типа int. Для сохранения суммы чисел внутри функции объявляется переменная z, которой затем присваивается сумма x и y. Так как функции предписано возвращать значение, то последним оператором тела функции является оператор return, который показывает, что возвращаемой является величина z. Тип величины указанной в операторе return и тип возвращаемого значения функции должны совпадать, иначе выдается сообщение об ошибке.

Читайте также:
Какие способы поиска удаленных файлов предлагает программа unerase wizard

Изменим несколько условие примера и потребуем от функции не возвращения суммы, а вывод её на экран. Теперь у функции не будет возвращаемого значения, и её прототип изменится, а также изменится и тело функции.

Void summa(int x, int y)

int z;

z=x+y;

Теперь перед именем функции стоит не int, а void и в теле функции отсутствует оператор return.

И последний пример, который показывает, что в операторе return в качестве возвращаемого значения может стоять выражение языка С++. Опять определим функцию, которая выполняет сложение двух чисел и возвращает сумму.

Int summa(int x, int y)

return x+y;

Как видно из примера тело функции уменьшилось до одного оператора за счет того, что выражение суммы двух чисел записано непосредственно в операторе return.

Если функция должна возвращать значение, но оператор return в теле функции отсутствует, то она выдает “мусор”.

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

Всё что описано выше касается проектировочной части программы. Это – всё проекты и намерения. Всем этим надо воспользоваться, ввести в действие. Чтобы воспользоваться функцией, её необходимо вызвать или ещё говорят – обратиться к функции.

Для вызова функции надо указать 1) ее имя и 2) в скобках – список аргументов в соответствии с прототипом. Ну и конечно закончить вызов точкой с запятой.

Например, для вызова вышеописанной функции summa следует записать: summa(a,b);

Здесь a и b должны иметь значения типа int.

function1(a, alpha, dd); — вызывается функция function1, которой передаются три аргумента.

Если функция возвращает значение, и оно дальше будет использоваться в программе, то его необходимо присвоить какой-либо переменной. Например:

w = delta (x, y);

В данном примере вызывается функция delta, которой передаются два аргумента. После выполнения функция возвращает значение, которое присвоится переменной w.

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

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

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

По условию требуется вычислить z = x². Возведение числа в квадрат оформить в виде отдельной функции.

using namespace std;

int square (int a); // объявлениефункции square()

Int main ()

int z;

int x = 3;

z = square (x);

return 0;

Int square (int a)

int b;

b = a*a;

return b; // оператор возврата управления

Во второй строчке данной программы указывается прототип используемой функции. Это – функция, содержащая один целочисленный параметр и возвращающая значение типа int. Описание функции square производится в конце программы. В главной функции производится вызов функции square выражением z = square (x); в качестве аргумента функции передаётся x = 3. Управление передается вызываемой функции, которая вычисляет квадрат аргумента и возвращает его значение в место вызова в функции main (), которое будет присвоено переменной z и затем выведено на экран.

Обращение к функции следует рассматривать как выражение. Оно может использоваться всюду, где допускаются выражения. Для демонстрации этого изменим несколько предыдущий пример: вычислить z = x² + y², возведение числа в квадрат оформить в виде отдельной функции.

Программа примет следующий вид.

using namespace std;

int square (int a); // объявлениефункции square()

Int main ()

int z;

int x = 3;

int y = 4;

z = square (x)+ square (y);

return 0;

Int square (int a)

int b;

b = a*a;

return b; // оператор возврата управления

Изменения в данном примере касаются записи вызова функции внутри выражения z = square (x)+ square (y). Функция square будет вызвана дважды, а возвращаемые её значения суммируются.

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

using namespace std;

Void show(char x)

Int main()

chara = ‘s’;

show(a);

return 0;

В данном коротком примере функция show сразу определяется в начале программы и это заменяет её объявление. Функция ничего не возвращает, а только выводит на экран получаемый символ.

Источник: poisk-ru.ru

JavaScript. Работа с функциями и массивами

Текущая лекция, как и предыдущая ориентирована в первую очередь на тех, чей уровень владения языками программирования (не принципиально какими) является начальным. В случае, если такие слова, как «циклы», «массивы» и «функции» вам знакомы, можете смело переходить к следующей лекции.

Работа с циклами

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

Циклы – это выражения, позволяющие повторить определенный участок кода несколько раз.

Традиционно, различают три вида циклов:

  • цикл — счетчик;
  • цикл с предусловием ;
  • цикл с постусловием .

Цикл — счетчик используется в тех случаях, когда точно можно определить какое количество раз необходимо выполнить заданный участок кода. Оформляется данный цикл следующим образом:

for (переменная итерации = начальное значение; условие; шаг цикла)

К примеру, цикл оформленный следующим образом выполнится 10 раз:

for ( i =0; i

Переменной итерации ( i ) было присвоено начальное значение 0 . Если условие: i итерация цикла . После выполнения каждой итерации происходит i++ (то есть увеличение переменной i на 1 ). Снова проверяется условие, и если оно истинно, то выполняется ещё одна итерация . И так до тех пор, пока условие i < 10 не станет ложным.

Цикл с предусловием выполняется до тех пор пока верно условие. Оформляется цикл следующим образом:

while(условие)

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

Следующие пример описывает цикл while , выполняющийся 10 раз:

var i =0; while (i

Цикл с постусловием похож на цикл while , однако, здесь есть всего одно, но очень принципиальное отличие. Если цикл while сначала проверяет условие, а потом уже выполняет или нет итерацию. То цикл do-while сначала именно выполняет итерацию, и только потом проверяет условие. И если оно ложно, то выходит из цикла . Другими словами, независимо от условия данный цикл гарантированно выполнится хотя бы 1 раз. Пример оформления данного цикла :

do < тело цикла >while (условие)

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

Работа с функциями

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

Телом функции называется код, размещенный в ее пределах.

Функция объявляется в коде следующим образом:

Function имя функции (список параметров)

Имя функции должно быть уникальным в пределах веб — страницы. Список параметров – это перечень переменных, или входных данных для функции.

В случае, если функция возвращает какое — либо значение , используется оператор return .

Например, следующая функция вернет значение указанного, в качестве параметра, факториала:

function fctrl (a) < result = 1; for(i=2; ireturn result; >

В программном коде функция вызывается следующим образом:

s = fctrl (5);

Или, если функция не возвращает никаких значений:

Somefunction(a,b,c);

Также javascript позволяет использовать функциональный тип данных . Иными словами можно присвоить переменной функцию , именно саму функцию, а не возвращаемое ею значение :

var a = fctrl; c = a(5);

Источник: intuit.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru