K-Kieli Käyttäjän käsikirja


4. Esimerkkiohjelmia

Seuraavat esimerkkiohjelmat eivät välttämättä tee mitään järkevää. Ne vain antavat vinkkejä siitä, miten K-kielen eri piirteitä voidaan yhdistellä toistensa kanssa.

------------------------------------------------------------------------



        palauta $a; 
        palauta $a,$b; 
        palauta $a,"XXX",$b; 
        palauta $a,(1+2+$b),$b; 
        tulosta $a; 
        tulosta $a,$b; 
        tulosta $a,"XXX",$b; 
        tulosta $a,(1+2+$b),$b; 
        tulosta "XXXXXXX^J";   /* teksti + ctrl-j eli rivinvaihto */ 
        lopeta; 

------------------------------------------------------------------------

/* testi10.k */ /*$a=1;*/ $b=2; $c=1+2; $d=100+$b+$c+$a/($b+2); $newline="^J"; tulosta $a,$b,$c,$newline; tulosta $a,$newline; tulosta "1+2+3=",(1+2+3)," mk",$newline; palauta $a; palauta $b; palauta $henk; palauta $a,$b,$d,$henk; lopeta;

------------------------------------------------------------------------

/* testi11.k */ $a=1; jos $a=2 niin << tulosta "1111111"; tulosta "2222222"; >> tulosta "333333"; lopeta; ------------------------------------------------------------------------

/* testi13.k */ $a=1; jos $a=1 niin << tulosta "1111111 "; tulosta "2222222 "; $d=100; $e=200+1+$d; tulosta $d," ",$e," "; >> tulosta " 333333"; lopeta; ------------------------------------------------------------------------

/* testi20.k */ $paate="ANSI"; $eka,$toka,$kolmas = select name,type,lines from crt where name = '$paate' endsql; tulosta "***********************************************^J"; tulosta $eka,"^J"; tulosta $toka,"^J"; tulosta $kolmas,"^J"; tulosta "***********************************************^J"; lopeta; ------------------------------------------------------------------------

/* testi16.k */ $a=1; $b=1; $c=1; $d=1; jos $a=1 niin << $d=100; jos $c=1 niin << $d=90; >> muuten << $d=80; $b=10; >> >> muuten jos $c=1 niin jos $a=1 niin $d=40; tulosta $b,$d,$c,"^J"; lopeta;

------------------------------------------------------------------------

/* testi24.k */ $k=0; jokaiselle -- jokaiselle pyörii fetch +1 kertaa !!! $hnro,$lyhnim,$syntaik,$pvm=select henknro,lyhnim,syntaik, sysdate from henkilo where syntaik = sql_date('09.11.1991') endsql; $k=$k+1; tulosta "X",$hnro,$lyhnim,$syntaik,":",$pvm,"^J"; seuraava; tulosta "STOP lukumäärä <",$k,">^J"; tulosta "VIIM:",$hnro,$lyhnim,$syntaik,":",$pvm,"^J"; lopeta; ------------------------------------------------------------------------

-- testi37.k -- pvm erotus $b="19920531"; $c="19920601"; $a=pvm_ero("19920607","19920606"); $g=pvm_ero($b,$c); tulosta $a,":",$g,"^J"; $f=pvm_kasvatus($b,-10); tulosta $f,"^J"; lopeta;

------------------------------------------------------------------------

-- testi38.k -- - merkki $a=-4.2332; $b=-6; $c=4-1; $d=$a-$b; tulosta $c,":",$d,"^J"; tulosta (2+-2),"^J"; tulosta muoto($d,"%10.5f"),"^J"; lopeta; ------------------------------------------------------------------------

-- testi70.k -- CPU OY, Jukka Inkeri, 18.11.92 $tied ="1.tst"; -- käytettävän tiedoston nimi $tied2 ="2.tst"; -- käytettävän lookup-tiedoston nimi jokaiselle $rivi = tiedostosta($tied); jos osajono($rivi,1,3) = "EOF" niin << tulosta "Tiedosto loppui^J"; toisto_loppu; >> muuten << tulosta "RIVI:",$rivi,"^J"; >> seuraava; tulosta "LOPPU^J";

-- luetaan uudelleen samasta tiedostosta rivi ja suljetaan tiedosto $rivi = tiedostosta($tied); tulosta "RIVIIIII:",$rivi,"^J"; $ok= sulje_tiedosto($tied); -- luetaan uudelleen sama tiedosto -- etsitään toisesta tiedostosta vastaava koodi tulosta "_____________________________________________________^J"; jokaiselle $rivi = tiedostosta($tied); jos osajono($rivi,1,3) = "EOF" niin << tulosta "Tiedosto loppui^J"; toisto_loppu; >> muuten << tulosta "HENK:",$rivi; $lookup=$rivi; -- etsitään lookup-arvo jokaiselle $rivi = tiedostosta($tied2); jos osajono($rivi,1,pituus($lookup)) = $lookup niin << tulosta " Nimi:"; -- tiedostossa data muodossa lookup,nimi tulosta osajono($rivi,pituus($lookup)+2, pituus($rivi)-pituus($lookup)-1); $ok=sulje_tiedosto($tied2); toisto_loppu; >> seuraava; tulosta ">^J"; >> seuraava; tulosta "LOPPU^J"; lopeta; ------------------------------------------------------------------------ -- testi71.k -- CPU OY, Jukka Inkeri, 18.11.92 $tied ="2.tst"; -- käytettävän tiedoston nimi jokaiselle $rivi = tiedostosta($tied); jos osajono($rivi,1,3) = "EOF" niin << tulosta "Tiedosto loppui^J"; toisto_loppu; >> muuten << tulosta "RIVI:",$rivi,"^J"; $k1 = kentta($rivi,1,","); $k2 = kentta($rivi,2,","); tulosta "<",$k1,":",$k2,">^J"; >> seuraava; tulosta "LOPPU^J"; lopeta; ------------------------------------------------------------------------ -- testi80.k -- CPU Oy, Jukka Inkeri, listojen testaus $ok=lista_luo("OMA",3); -- luetaan lista OMA tiedostosta 2.tst 2 saraketta, erottimena pilkku $ok=lista_lue("OMA","2.tst",2,","); $ok=lista_selaa("OMA",ens); jokaiselle jos $ok = 0 niin toisto_loppu; muuten << --ok $k1=lista_kentta_lue("OMA",1); $k2=lista_kentta_lue("OMA",2); $xx=lista_kentta_aseta("OMA",3,$k1); $k3=lista_kentta_lue("OMA",3); tulosta "<",$k1,":",$k2,":",$k3,">^J"; $ok=lista_selaa("OMA",seur); >> seuraava; -- etsitään, jos löydetään $ok=lista_selaa("OMA",ens); -- onkohan listassa OMA kentässä 1 arvoa 1111 $ok=lista_etsi("OMA","1111",1); jos $ok<>0 niin tulosta "Löytyi"; muuten tulosta "Ei ole"; $ok=lista_etsi("OMA","11111",1); jos $ok<>0 niin tulosta " Löytyi"; muuten tulosta " Ei ole"; -- lisätään pari riviä loppuun $ok=lista_selaa("OMA",viim); $ok=lista_rivi_uusi("OMA"); $ok=lista_kentta_aseta("OMA",1,"100"); $ok=lista_kentta_aseta("OMA",2,"sata"); $ok=lista_rivi_uusi("OMA"); $ok=lista_kentta_aseta("OMA",1,"200"); $ok=lista_kentta_aseta("OMA",2,"kaksisata"); -- löytyyköhän ne sieltä -- $ok=lista_selaa("OMA",ens); jokaiselle jos $ok = 0 niin toisto_loppu; muuten << --ok $k1=lista_kentta_lue("OMA",1); $k2=lista_kentta_lue("OMA",2); $xx=lista_kentta_aseta("OMA",3,$k1); $k3=lista_kentta_lue("OMA",3); tulosta "<",$k1,":",$k2,":",$k3,">^J"; $ok=lista_selaa("OMA",seur); >> seuraava; -- ja tuhotaan kaikki pois JIPPII !!! -- $ok=lista_rivi_pois("OMA",nykyinen); $ok=lista_rivi_pois("OMA",kaikki); -- löytyyköhän mitään $ok=lista_selaa("OMA",ens); jokaiselle jos $ok = 0 niin toisto_loppu; muuten << --ok $k1=lista_kentta_lue("OMA",1); $k2=lista_kentta_lue("OMA",2); $k3=lista_kentta_lue("OMA",3); tulosta "<",$k1,":",$k2,":",$k3,">^J"; $ok=lista_selaa("OMA",seur); >> seuraava; lopeta; ------------------------------------------------------------------------ -- testi90.k -- CPU Oy, Jukka Inkeri -- listojen käsittely, syötteiden luku lomakkeella, tallennus takaisin -- tiedostoon --alustetaan muuttujia $ok=aliohjelma("nappis.k"); -- luodaan lista $ok=lista_luo("OMA",3); -- luetaan lista OMA tiedostosta 2.tst 2 saraketta, erottimena pilkku $ok=lista_lue("OMA","2.tst",2,","); -- käydään lista läpi $ok=lista_selaa("OMA",ens); jokaiselle jos $ok = 0 niin toisto_loppu; muuten -- ok << -- luodaan ylläpitolomake $ok=systeemikomento("cp henk.scr henktmp.scr"); $k1=lista_kentta_lue("OMA",1); $k2=lista_kentta_lue("OMA",2); $ok=tiedostoon("henktmp.scr",">#,1,, ^J"); $ok=tiedostoon("henktmp.scr"," >D," :: $k1 :: "^J"); $ok=tiedostoon("henktmp.scr",">#,2,, ^J"); $ok=tiedostoon("henktmp.scr"," >D," :: $k2 :: "^J"); $ok=tiedostoon("henktmp.scr","ND"); -- luetaan lomakkeella $ok=systeemikomento("luevast henktmp.scr vastaus.tmp"); jos $ok = 0 niin << -- ei ole lopettanut PERU:lla -- katsotaan vastaukset $rivi=tiedostosta("vastaus.tmp"); $k1=$rivi; $rivi=tiedostosta("vastaus.tmp"); $k2=$rivi; $ok=sulje_tiedosto("vastaus.tmp"); -- päivitetään listaan arvot $ok=lista_kentta_aseta("OMA",1,$k1); $ok=lista_kentta_aseta("OMA",2,$k2); $ok=lista_selaa("OMA",seur); >> muuten jos $ok=$f_seur niin $ok=lista_selaa("OMA",seur); muuten jos $ok=$f_edell niin $ok=lista_selaa("OMA",edell); >> seuraava; -- tallennetaan lista tiedostoon takaisin -- ensin poistetaan se vanha tiedosto (tehdään backup) $ok=systeemikomento("cp 2.tst 2.tmp ; rm -f 2.tst"); -- $ok=lista_selaa("OMA",ens); jokaiselle jos $ok = 0 niin toisto_loppu; muuten -- ok << $k1=lista_kentta_lue("OMA",1); $k2=lista_kentta_lue("OMA",2); $ok=tiedostoon("2.tst",$k1 :: "," :: $k2 :: ",^J"); $ok=lista_selaa("OMA",seur); tulosta $k1," ",$k2,"^J"; >> seuraava; lopeta; ------------------------------------------------------------------------ -- testi18.k -- Esimerkki K-ohjelma, jossa näytetään kuinka voidaan massa -ajoissa -- käyttäjälle antaa erilaisia tehosteita/merkintöjä siitä, että -- jotakin tapahtuu (ainakin pitäisi) -- Karjalan ATK-AWot Oy, Jukka Inkeri -- pelkkiä pisteitä pari riviä ... -- $i=1; $r=1; jokaiselle tulosta "."; $i=$i+1; jos $i>60 niin << tulosta "^J"; $j=$j+1; $i=1; >> jos $j>2 niin toisto_loppu; seuraava; tulosta "^J"; -- -- tulostetaan pisteet ja "imetään" ne sitten pois -- $i=1; $r=1; jokaiselle $i=$i+1; jos $i>60 niin tulosta "^H ^H"; muuten tulosta "."; jos $i>120 niin toisto_loppu; seuraava; tulosta "^J"; -- -- tulostetaan vain lukua .... -- tulosta "Lkm:"; $i=1; $r=1; jokaiselle $i=$i+8; tulosta $i; $pit=pituus($i); jokaiselle jos $pit>0 niin << tulosta "^H"; $pit=$pit-1; >> muuten toisto_loppu; seuraava; jos $i>1100 niin toisto_loppu; seuraava; tulosta "^J"; -- -- tulostetaan "tiimalasi" -- tulosta "Odota:"; $i=0; $r=1; tulosta "/"; jokaiselle jos $i=0 niin tulosta "^H-"; jos $i=1 niin tulosta "^H*"; jos $i=2 niin tulosta "^HI"; jos $i=3 niin tulosta "^H/"; $i=$i+1; $r=$r+1; jos $i>3 niin $i=0; jos $r>50 niin toisto_loppu; seuraava; tulosta "^J"; lopeta;


Valitse:[Ens.sivu] [Sivun alkuun] [Sisällysluettelo] [Hakemisto] [Seuraava sivu]

© 1992-1996 Karjalan Tietovalta Oy, Karjalan ATK-Awot Oy, Computer Program Unit Oy