Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Архив1 / doc200 / отчет (5)

.doc
Скачиваний:
54
Добавлен:
01.08.2013
Размер:
17.47 Кб
Скачать

Министерство образования Республики Беларусь

ПОЛОЦКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

Кафедра технологий программирования

Отчёт

по лабораторной работе № 4 по курсу «Функциональное программирование»

«Создание исполняемых программ»

Выполнила: Туркова В.А

10-ИТ-1

Полоцк. 2012

Цель

научиться создавать исполняемы программы на языке Haskell

Задания

1. Напишите следующие программы:

1) Программа, считывающая два числа и возвращающая их сумму.

2) Программа, распечатывающая переданные в нее аргументы командной строки.

3) Программа, которая принимает в командной строке имя файла и распечатывает его на экране.

4) Программа, принимающая в командной строке число n и имя файла и выводящая на экран первые n строк файла (используйте функцию lines, разбивающую строку на список строк в символах конца строки, т.е., напри-

мер lines"line1\nline2" вернет ["line1", "line2"]. Также полезна функция unlines, осуществляющая обратную операцию.)

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

Решение

1.hs

module Main(main)

where

import IO

main :: IO ()

main = do

a <- readLn

b <- readLn

s <- summ a b

putStr s

summ :: Int->Int->IO String

summ a b = return (show(a)++"+"++show(b)++"="++show(a+b)++"\n")

2.hs

module Main(main)

where

import IO

import System

main :: IO ()

main = do

args <- getArgs

print args

3.hs

module Main(main)

where

import IO

import System

main :: IO ()

main = do

[fname] <-getArgs

hFile <- openFile fname ReadMode

s <- hGetContents hFile

putStr s

hClose hFile

4.hs

module Main(main)

where

import IO

import System

main :: IO ()

main = do

[fname,n] <- getArgs

hFile <- openFile fname ReadMode

s <- hGetContents hFile

func (lines s) (read n::Int)

hClose hFile

func :: [String]->Int->IO ()

func (x:xs) n = do

if (n ==0) then return () else do

putStr x

putStr "\n"

func xs (n-1)

return ()

func [] n = do

return ()

1.1.hs

module Main(main)

where

import IO

import System

main :: IO ()

main = do

x <- readLn

y <- readLn

s <- sort2 x y

putStr s

sort2 :: Int->Int->IO String

sort2 x y = do

if (x<y) then return (show(x)++" "++show(y)++"\n") else return (show(y)++" "++show(x)++"\n")

1.2.hs

module Main(main)

where

import IO

import System

main :: IO ()

main = do

x1 <- readLn

y1 <- readLn

x2 <- readLn

y2 <- readLn

x3 <- readLn

y3 <- readLn

x4 <- readLn

y4 <- readLn

s <- isParallel x1 y1 x2 y2 x3 y3 x4 y4

putStr s

isParallel :: Double->Double->Double->Double->Double->Double->Double->Double->IO String

isParallel x1 y1 x2 y2 x3 y3 x4 y4 = do

k1 <- getK x1 y1 x2 y2

k2 <- getK x3 y3 x4 y4

if (k1==k2) then return ("paralleni\n") else return ("ne paralleni\n")

getK :: Double->Double->Double->Double->IO Double

getK x1 y1 x2 y2 = return((y2-y1)/(x2-x1))

Пример работы

Вывод

В ходе выполнения данной лабораторной работы были получены навыки по созданию исполняемых программ на языке Haskell

Соседние файлы в папке doc200