Программирование - это просто
Advertisement
Главная arrow Уроки программирования arrow Язык F# для чайников. arrow Язык F# для чайников. Урок 2. Основы функционального программирования.
19.04.2024 г.
Главное меню
Главная
Интернет магазин
Программные продукты
Биржевые роботы
Искусственный интеллект
Математика и информатика
1С:Предприятие
Уроки C#
Уроки Delphi
Уроки программирования
Web-программирование
Дизайн и графика
Компьютер для блондинок
Исходники
Статьи
Платный раздел
Рассказы про компьютеры
Хитрости и секреты
Системный подход
Размышления
Наука для чайников
Друзья сайта
Excel-это не сложно
Все о финансах
.
Язык F# для чайников. Урок 2. Основы функционального программирования. Печать E-mail
Автор megabax   
04.02.2013 г.
New Page 1

Язык F# для чайников. Урок 2. Основы функционального программирования.

На прошлом уроке мы написали свою первую программу "Hello, world!". Теперь давайте попробуем что-нибудь сосчитать, ну хотя бы дважды два:

let a=2*2;

System.Console.WriteLine(a);

System.Console.Read();

 

Запустив эту программу, мы увидим результат:

Язык F# для чайников. Урок 2. Основы функционального программирования.

 

А теперь более подробно про оператор let. Это не просто присваивание, с помощью этого оператора мы можем задать формулы. Вот так, например, будет выглядеть решение квадратного уравнения 2x2+3x-4=0 на F#:

 

let a,b,c=2.0, 3.0, -4.0;

let D=b*b-4.0*a*c;

let x1,x2=((-b+sqrt(D))/(2.0*a)),((-b-sqrt(D)/(2.0*a)));

System.Console.WriteLine(x1);

System.Console.WriteLine(x2);

System.Console.Read();

 

И вот результат работы этой программы:

Язык F# для чайников. Урок 2. Основы функционального программирования.

 

Если вы изучали другие языки программирования, то наверняка знаете, что во многих программах используются функции. Это очень удобно в тех случаях, когда на надо много раз использовать один и тот же кусок кода, но с разными исходными данными. Функции есть и в F#. Вот как будет выглядеть наша программа решения квадратного уравнения с использованием функции:

//задаем функцию

let square_eq_solve(a,b,c)=

    let D=b*b-4.0*a*c in

        ((-b+sqrt(D))/(2.0*a)),((-b-sqrt(D)/(2.0*a)));

 

//вычисляем с использованием функции

let x1,x2=square_eq_solve(2.0, 3.0, -4.0);

System.Console.WriteLine(x1);

System.Console.WriteLine(x2);

System.Console.Read();

 

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

//задаем функцию

let square_eq_solve(a,b,c)=

    let D=b*b-4.0*a*c in

        ((-b+sqrt(D))/(2.0*a)),((-b-sqrt(D)/(2.0*a)));

 

//первое уравнение

System.Console.WriteLine(square_eq_solve(2.0, 5.0, -4.0));

 

//второе уравнение

System.Console.WriteLine(square_eq_solve(2.0, 11.0, -4.0));

 

//третье уравнение

System.Console.WriteLine(square_eq_solve(2.0, 3.0, 4.0));

 

System.Console.Read();

 

А вот результат работы данной программы:

Язык F# для чайников. Урок 2. Основы функционального программирования.

 

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

 

//задаем функцию

let square_eq_solve(a,b,c)=

    let D=b*b-4.0*a*c in

        [((-b+sqrt(D))/(2.0*a)),((-b-sqrt(D)/(2.0*a)))];

 

//первое уравнение

System.Console.WriteLine(square_eq_solve(2.0, 5.0, -4.0));

 

//второе уравнение

System.Console.WriteLine(square_eq_solve(2.0, 11.0, -4.0));

 

//третье уравнение

System.Console.WriteLine(square_eq_solve(2.0, 3.0, 4.0));

 

System.Console.Read();

 

Тогда программа выдаст нам вот это:

 

Язык F# для чайников. Урок 2. Основы функционального программирования.

 

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

Последнее обновление ( 04.02.2013 г. )
 
« След.   Пред. »
 
© 2024 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги