proba

пятница, 5 августа 2011 г.

Программирование на языке Haskell, урок № 2

В лабораторной работе № 1 задание № 2 такое:

 Функция isParallel, возвращающая True(истину), если два отрезка, концы которых задаются в аргументах функции, параллельны (или лежат на одной прямой). Например, значение выражения isParallel (1,1) (2,2) (2,0) (4,2) должно быть равно True, поскольку отрезки (1,1) – (2,2) и (2,0) – (4,2) параллельны.
1) Решение состоит из двух этапов - первое решение самой задачи сначала на бумаге, а потом набираем её в виде программы в блокноте и сохраняем её в формате .hs 
На бумаге думаю вы решите сами, т.к. математические формулы общедоступны; если непонятно что-то, то спросите в комментариях. 
isParallel :: Integer -> Integer -> Integer -> Integer -> Integer -> Integer -> Integer -> Integer -> Bool

isParallel x1 y1 x2 y2 x3 y3 x4 y4 = if (((x1-x2)*(y3-y4)-(y1-y2)*(x3-x4)) == 0) then True else False
 Вверху вы видите код, который вам нужно набрать в блокноте.

2) Следующий этап запуск,  вписываем как на картинке выражение ":load laba1.hs", оно означает загрузить для исполнения файл laba1.hs.
Далее выскакивает после исполенения команды слово "Main>", это означает, что мы вошли в файл и можем проверить правильно ли мы его составили.

Теперь мы, как показано на картинке внизу, введём название функции и коэффициенты через пробел, и нажмём Enter. Если в результате стоит значение True, значит на параллельных линиях, если - False, то не на параллельных. 
Итак лабораторная работа № 1 рассмотрена, в следующей статье посмотрим другие примеры функций, и поучимся ещё решать. Спасибо за прочтение, хорошего дня. 



1 комментарий:

  1. А вот задачи 7 варианта. №7 и №5
    kv :: Integer -> Integer
    kv x = x*x

    twopow :: Integer -> Integer
    twopow 0 = 1
    twopow x = if even x then kv (twopow (div x 2))
    else (kv (twopow (div x 2)))*2
    t1 = twopow 6
    t2 = twopow 5

    removeEmpty :: [String] -> [String]
    removeEmpty [] = []
    removeEmpty (x:xs) = if x == "" then removeEmpty xs
    else x:removeEmpty xs

    ОтветитьУдалить