Difference between revisions of "Cum scriu functia main ca sa pot compila si obtine un executabil ?"

From HaskellWiki
Jump to navigation Jump to search
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
  +
[[Category:Ro]
 
==. Problema ==
 
==. Problema ==
   
Am scris functia care transforma gradele Celsius in grade Farenheit si Kelvin.
+
Am scris functia care transforma gradele Celsius in grade Fahrenheit si Kelvin:
 
<haskell>
 
<haskell>
   
Line 13: Line 14:
 
Cum scriem functia main ca sa putem:
 
Cum scriem functia main ca sa putem:
 
- citi date
 
- citi date
- aplela functia noastra de transformare
+
- apela functia noastra de transformare
 
- scrie rezultatul,
 
- scrie rezultatul,
 
iar codul sa-l transformam in executabil '''?'''
 
iar codul sa-l transformam in executabil '''?'''
Line 51: Line 52:
 
Ce trebuie sa cunoasteti:
 
Ce trebuie sa cunoasteti:
   
1. actiunea de IO pentru scris texte este ''putstr "<string>"''
+
1. actiunea de IO pentru scris texte este ''putStr "<string>"'' . Exista si un ''putStrLn "<string>"'' , care trece apoi pe randul urmator. Similar cu WriteLn din Pascal.
   
 
2. actiunea de IO pentru citit un string din tastatura este ''getLine''. Se foloseste ca in exemplu.
 
2. actiunea de IO pentru citit un string din tastatura este ''getLine''. Se foloseste ca in exemplu.
Line 65: Line 66:
   
 
Alte comenzi penmtru compilat pot include librarii: vedeti OpenGl in Haskell.
 
Alte comenzi penmtru compilat pot include librarii: vedeti OpenGl in Haskell.
  +
  +
==. Compilare si rulare ==
  +
  +
Asa arata setul de comenzi dat la terminal:
  +
  +
<haskell>
  +
student3@student3-desktop:~/Desktop$ ghc --make Temperatura.hs
  +
  +
[1 of 1] Compiling Main ( Temperatura.hs, Temperatura.o )
  +
  +
Linking Temperatura ...
  +
  +
student3@student3-desktop:~/Desktop$ ./Temperatura
  +
  +
Dati nr de grade Celsius :
  +
56
  +
  +
"132.79999 Fahrenheit, 329.15 Kelvin"
  +
  +
student3@student3-desktop:~/Desktop$
  +
</haskell>
  +
----
  +
Intrebare pusa de '''damiamcs''', ian 2011
  +
----
   
 
[[Category:Ro]]
 
[[Category:Ro]]

Latest revision as of 13:44, 10 February 2011

[[Category:Ro]

. Problema

Am scris functia care transforma gradele Celsius in grade Fahrenheit si Kelvin:

temp   :: Float -> String

temp x =  (show (x * 1.8 + 32) ++ " Fahrenheit, " ++ show (x + 273.15) ++ " Kelvin")

Cum scriem functia main ca sa putem:

- citi date
- apela functia noastra de transformare
- scrie rezultatul,

iar codul sa-l transformam in executabil ?


. Raspuns

module Main where



main :: IO ()

main = do { putStrLn "Dati nr de grade Celsius :";

	    strbuf <- getLine;

	    print $ temp (read strbuf::Float ) ;

	    return ();

	   }

	   

temp   :: Float -> String

temp x =  (show (x * 1.8 + 32) ++ " Fahrenheit, " ++ show (x + 273.15) ++ " Kelvin")


Ce trebuie sa cunoasteti:

1. actiunea de IO pentru scris texte este putStr "<string>" . Exista si un putStrLn "<string>" , care trece apoi pe randul urmator. Similar cu WriteLn din Pascal.

2. actiunea de IO pentru citit un string din tastatura este getLine. Se foloseste ca in exemplu.

3. Functia read se aplica textului din buffer -- un string -- dar trebuie sa stie in ce tip de data il va transforma. Se foloseste deci ca: read <stringul de intrare> :: <tipul rezultatului asteptat>

4. Conversiile din alt tip in string se fac cu functia show, daca bineinteles tipul este din clasa Show. Iar tipurile simple si compuse din tipuri predefinite -- liste, n-uple -- sunt din clasa Show. Dar asa ceva stiati! :)

5. actiunea de IO pentru scrierea la iesire este print si este polimorfica , fiind produsul dintre putStr si show.

6. Pentru a compila fara probleme numiti modului Main , fisierul Main.hs si compilati cu: ghc --make Main.hs

Alte comenzi penmtru compilat pot include librarii: vedeti OpenGl in Haskell.

. Compilare si rulare

Asa arata setul de comenzi dat la terminal:

student3@student3-desktop:~/Desktop$ ghc  --make Temperatura.hs

[1 of 1] Compiling Main             ( Temperatura.hs, Temperatura.o )

Linking Temperatura ...

student3@student3-desktop:~/Desktop$ ./Temperatura

Dati nr de grade Celsius :
56

"132.79999 Fahrenheit, 329.15 Kelvin"

student3@student3-desktop:~/Desktop$

Intrebare pusa de damiamcs, ian 2011