Функциональное программирование в углубленном курсе изучения информатики в школе
Свойства функционального языка программирования как раздела дискретной математики. Особенности функционального программирования, и языка F#, в частности, при их изучении в углубленном курсе информатики в школе. Способы использования F# в Visual Studio.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | статья |
Язык | русский |
Дата добавления | 24.07.2018 |
Размер файла | 790,3 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Функциональное программирование в углубленном курсе изучения информатики в школе
При изучении информатики в углубленном курсе, возникает необходимость ознакомления школьников с разнообразными технологиями программирования: процедурное, объектно-ориентированное и функциональное.
Функциональным программированием называют как раздел дискретной математики, так и парадигму программирования, в которой процесс вычисления мы можем трактовать, как вычисление значений функции в математическом понимании последней. Математическая функция выражает связь между исходными данными и итогом некоторого процесса. Процесс вычисления аналогичен, ведь он имеет «вход» и «выход», поэтому функция вполне подходящее средство описания вычислений. Данный принцип и стал основным в парадигме функционального программирования: программа может представлять собой набор определенных функций, функции определяются через другие функции или рекурсивно через самих себя, в процессе работы функция получает параметры, обработав их, возвращает результат, при необходимости функция вычисляет значения других функций. На функциональном языке программист не должен описывать порядок вычислений, он описывает только желаемый результат как систему функций.
Выделим свойства функционального языка программирования:
1. Краткость и простота.
2. Строгая типизация.
3. Модульность - разделение программ на несколько сравнительно независимых частей с четко определенными связями между ними.
4. Функция как значение - функции могут передаваться другим функциям в качестве аргумента.
5. Вызов по необходимости - каждый аргумент функции вычисляется только в том случае, если его значение необходимо для вычисления результата функции.
Фирма Microsoft обратила внимание на функциональную парадигму и выпустила язык F# (F sharp) интегрировав его в Visual Studio (рис. 1.). F# - это язык программирования, обеспечивающий поддержку функционального, объектно-ориентированного и императивного (процедурного) программирования.
Рисунок 1.
Существует два способа использования F# в Visual Studio:
1. Создав отдельный проект. При компиляции будет создана соответствующая сборка.
2. В режиме интерактивного сеанса F# (F# Interactive) - класса инструментов, который принимает код, компилирует его, выполняет и выводит результат. Это позволяет легко и быстро экспериментировать с программным кодом, не создавая новые проекты или полноценные приложения ради того, чтобы увидеть результаты работы фрагмента из нескольких строк (рис.2). Для выполнения кода, необходимо набрать «;;» и нажать «Enter».
Рисунок 2.
Ключевое слово «let» связывает имя со значением, данную операцию называют «операция связывания» (рис.3). При этом, по умолчанию все значения являются константами. F# отличает символы верхнего и нижнего регистров, поэтому два значения, имена которых отличаются только регистром символов, считаются разными. После выполнения в окне F# Interactive все имена созданные в нем, будут выводится в виде:
val <имя> : <тип результата> = <фактическое значение>.
Рисунок 3.
Если для выражения не было задано имя, ему автоматически будет присвоено имя it (рис.4).
Рисунок 4.
Для создания переменных используется параметр mutable - пометка их изменяемости (рис. 5). Ввод значений в переменную осуществляется оператором <- (рис. 5).
Рисунок 5.
Функции определяются следующим синтаксисом:
let <название функции> <список параметров> <: тип возвращаемого значения> = <тело функции>.
Функция для вычисления площади круга приведена рисунке 6.
Рисунок 6.
Особый интерес вызывает возможность создания рекурсивных функций - функций вызывающих самих себя.
Если функция рекурсивна, то ее синтаксис следующий:
let rec <название функции> <список параметров> <: тип возвращаемого значения> = <тело функции>.
Рассмотрим несколько примеров:
Пример 1. Найти все простые делители числа.
let rec del (n:float) (delit: float) : unit =
if n%delit=0. then printfn "%f" delit
del (n/delit) delit
else if n>1. then del n (delit+1.)
else printfn "all"
Пример 2. Создание чисел Фибоначчи.
let rec fib n = if n<3 then 1 else fib (n-1) + fib (n-2);;
Пример 3. Печать всех целых чисел от A до B.
let rec aa a b =
if b>a then printfn "%A" a
aa (a+1) b;;
Пример 4. Если число является степенью числа два то написать «Yes» иначе «No». Вывести степень исследуемого числа.
При вводе необходимо вводить проверяемое число и число и 0.
let rec st (n:float) (stepen: float) : unit =
if n=1. then printfn "Yes %f" stepen
else if (n%2.<>0.) then printfn "No"
else st (n/2.) (stepen+1);;
Функция, вычисляющая факториал рекурсивно, путем сравнения с образцами приведена на рисунке 7. Для вывода на экран результата используется оператор вывода данных на консоль printfn.
Рисунок 7.
Язык F# позволяет легко реализовать композиции функций (функции состоящие из других функций). На рис. 8 приведен пример конвейеризации - объединения вызовов функций в цепочке последовательных операций - F2(F1(x)).
Рисунок 8.
Кроме класса функций, которые именует пользователь для их последующего вызова в теле программы, существуют специализированные неименованные функции - «лямбда-выражение». Они используются когда нет необходимости в создании большого количества функций и необходимо вычисление с переменной.
Синтаксис fun <параметры> -> <тело функции>.
На рис 9. приведены примеры использования лямбда-выражений.
Рисунок 9.
Модуль List из стандартной библиотеки содержит множество методов упрощающих обработку списков. Списки можно задавать аналогично заданию функций.
Синтаксис: let <имя> = [список].
List.map - операция проекции, которая создает новый список на основе заданной функции. На рис. 10 приведен пример создания списка квадратов чисел на основе списка чисел.
Рисунок 10.
Таким образом, изучение функционального программирования позволит школьнику определить для себя назначение математических функций, понять смысл функциональных зависимостей, композиций функций, увидеть их практическое применение при создании программ.
Список литературы
программирование математика информатика
1. Александрова Н. Организация самостоятельной деятельности студентов с применением ДО / С. Галаев, Н. Александрова, А. Букушева // Высшее образование в России. 2007. № 10. С. 141-143.
2. Александрова Н.А. Концепция собственного образовательного стандарта прикладного бакалавриата по направлению подготовки 050100.62 «Педагогическое образование» (профиль «Информатика») / Н.А.Александрова, Е.В.Кудрина, М.В.Храмова, А.Г. Фёдорова // В сборнике: Компьютерные науки и информационные технологии Материалы Международной научной конференции. Ответственные за выпуск: Т.В. Семенова, А.Г. Федорова. 2014. С. 19-23.
3. Александрова Н.А. Об использовании технологических средств и информационно-коммуникационных технологий в инклюзивном обучении студентов / Н.А. Александрова, Е.А. Гаврилова // В сборнике: Информационные технологии в образовании Материалы VI Всероссийской научно-практической конференции. Саратовский государственный университет имени Н.Г. Чернышевского. 2014. С. 61-63.
4. Векслер В.А. Принципы регулирования рынка образовательных услуг // Л.Б. Рейдель, В.А. Векслер Правовая политика и правовая жизнь. 2013. № 2. С. 36-41.
5. Векслер В.А. Содержание и организация обучения взрослых основам информационных технологий в системе дополнительного образования: региональный аспект // диссертация на соискание ученой степени кандидата педагогических наук / Амур. гуманитар.-пед. гос. ун-т. Комсомольск-на-Амуре, 2009
Размещено на Allbest.ru
...Подобные документы
Исторические аспекты развития линии "Алгоритмизация и программирование" в старшей школе. Изучение языка программирования Python с применением дистанционных курсов Coursera. Методическая система обучения программированию с использованием Coursera.
дипломная работа [808,8 K], добавлен 13.12.2017Теоретические основы преподавания раздела информатики "Моделирование и формализация" в школе. Разработка системы задач по моделированию в различных средах (графический и текстовый редакторы, электронные таблицы, система программирования Visual Basic).
курсовая работа [127,2 K], добавлен 26.09.2012Разработка теории и методики преподавания раздела "Алгоритмизация и программирование" в школьном курсе информатики. Методические проблемы изучения алгоритмов работы с величинами. Требования к знаниям учащихся по линии алгоритмизации и программирования.
курсовая работа [70,2 K], добавлен 09.07.2012Системы программирования и их графические возможности. Разработка мультимедиа курса, способствующего эффективному усвоению учащимися базовой школы темы "Графические возможности языка программирования" (на примере языков программирования Basic и Pascal).
дипломная работа [588,3 K], добавлен 29.12.2010Характеристика основных разделов программирования, изучаемых в курсе программирования на языке С++. Описание внутренних переменных, входных и выходных данных. Особенности использования компилятора Microsoft Visual Studio 2008. Руководство пользователя.
курсовая работа [18,8 K], добавлен 14.12.2010Понятие математического программирования. Класс как тип структуры, позволяющий включать в описание типа не только элементы данных, но и функции. Рассмотрение основных особенности языка программирования C++. Характеристика среды MS Visual Studio 2008.
контрольная работа [318,0 K], добавлен 13.01.2013Разработка на языке программирования C# в среде Microsoft Visual Studio 2010 на базе Microsoft NET Framework 4 (4.5) программного средства, реализующего компилятор модельного языка программирования. Лексический, синтаксический и семантический анализатор.
курсовая работа [1,3 M], добавлен 24.06.2013Язык программирования Visual Basic: краткая история возникновения, значение и общая характеристика. Изучение основных свойств Visual Basic, синтаксис языка. Обзор ключевых операторов Visual Basic, пользовательские процедуры и функции данного языка.
контрольная работа [36,4 K], добавлен 23.07.2014Изучение классов и методов языка программирования C#. Реализация программирования математических задач. Поиск корня на монотонном интервале квадратичного полинома. Ручной подсчёт отладочного варианта. Заполнение массива, хранящего информацию о студентах.
курсовая работа [752,1 K], добавлен 27.02.2015Основные понятия и структура обработчика на языке Pascal. Элективные курсы по информатике в системе профильного обучения. Элективный курс "Программирование в среде Delphi". Методические материалы по изучению программирования на языке Object Pascal.
методичка [55,4 K], добавлен 08.12.2010Цели и задачи дисциплины "Технология программирования". Программные средства ПК. Состав системы программирования и элементы языка. Введение в систему программирования и операторы языка Си. Организация работы с файлами. Особенности программирования на С++.
методичка [126,3 K], добавлен 07.12.2011Ознакомление с педпосылками интеграции изучения средств информатики. Развитие логического и алгоритмического мышления при изучении информатики. Описание компьютерной технологии обучения. Использование здоровьесберегающих технологий для детского здоровья.
контрольная работа [29,1 K], добавлен 26.02.2015Исследование возможностей и областей использования языка программирования JavaScript. Сравнительный анализ языков программирования JavaScript и PHP. Разработка интерактивного Web-приложения на примере теста по теме "Программирование на языке Delphi".
практическая работа [26,0 K], добавлен 04.02.2015Понятие и специфические особенности языка программирования Си, история его создания. Интегрированная система Borland C. Процесс программирования с помощью данного языка. Графические примитивы в языках программирования. Преобразования на плоскости.
курс лекций [782,2 K], добавлен 04.10.2011Классификация электронных средств обучения, преимущества их использования, рекомендации по созданию. Требования к структуре и содержанию учебного материала. Особенности изучения языков программирования на уроках информатики. Среда программирования Delphi.
дипломная работа [770,2 K], добавлен 12.09.2015Общие сведения о работе программы в среде программирования Microsoft Visual Studio 2008, на языке программирования C++. Ее функциональное назначение. Инсталляция и выполнение программы. Разработанные меню и интерфейсы. Алгоритм программного обеспечения.
курсовая работа [585,5 K], добавлен 24.03.2009Место темы "Кодирование информации" в школьном курсе информатики. Рекомендации по изучению "Кодирования информации" в школьном курсе информатики. Дидактический материал для изучения темы "Кодирование информации" и внеклассное мероприятие по информатике.
курсовая работа [2,3 M], добавлен 17.06.2012История создания языка Java. Основные принципы объектно-ориентированного программирования. Структура, особенности синтаксиса и примеры прикладных возможностей использования языка Java, его преимущества. Перспективы работы программистом на языке Java.
курсовая работа [795,9 K], добавлен 14.12.2012Разработка игры "Угадай персонажа", ее суть и содержание. Запоминание новых персонажей и вопросов, коррекция базы данных. Использование языка программирования С++ и среды разработки Microsoft Visual Studio 2010. Алгоритмы и методы, структура программы.
курсовая работа [571,9 K], добавлен 14.07.2012Классификация сайтов по технологиям, влияющим на дизайн и функциональность. Исследование языков программирования для web-сайтов. Характеристика особенностей личных и коммерческих сайтов. Разработка и реализация сайта Института математики и информатики.
отчет по практике [5,1 M], добавлен 09.12.2014