Difference between revisions of "Cum scriu functia main ca sa pot compila si obtine un executabil ?"
Line 1: | Line 1: | ||
==. Problema == |
==. Problema == |
||
− | Am scris functia care transforma gradele Celsius in grade |
+ | Am scris functia care transforma gradele Celsius in grade Fahrenheit si Kelvin: |
<haskell> |
<haskell> |
||
Line 13: | Line 13: | ||
Cum scriem functia main ca sa putem: |
Cum scriem functia main ca sa putem: |
||
- citi date |
- citi date |
||
− | - |
+ | - apela functia noastra de transformare |
- scrie rezultatul, |
- scrie rezultatul, |
||
iar codul sa-l transformam in executabil '''?''' |
iar codul sa-l transformam in executabil '''?''' |
||
Line 65: | Line 65: | ||
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]] |
Revision as of 22:50, 18 January 2011
. 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>"
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