Työkansio eli näytteitä projekteistani

Mikko Johannes Koivunalho

Yleistä

Tämä työkansio sisältää otteita ja esimerkkejä ohjelmointitöistäni ja muista ATK-taidoistani. Se on jaoteltu projekteittain. Jokaisen projektin kohdalla otsikosta ilmenee myös, mitä ohjelmointikieltä on käytetty.

JAVASCRIPT: ScrollingStringGadget

ScrollingStringGadget on Javascript-kielinen olioluokka. Mukana on itse ScrollingStringGadget-luokka ja siihen kuuluvat rutiinit. ScrollingStringGadget-olio voidaan liittää HTML-sivulla olevaan tekstikenttään. Komentojen mukaan kentässä oleva teksti vierii oikeasta laidasta vasempaan.

Tämä luokka, kuten myös luokka PingpongStringGadget sekä muita luokkia ja rutiineja, olivat osa isompaa seittisivustoa, joka toteutettiin HTML-kielellä. PingpongStringGadget-luokan olio liitettiin tekstikenttään kuten ScrollingStringGadgetkin mutta vierimisen sijaan se liikutti tekstiä kentässä vasemman ja oikean reunan välillä kuin pingpongpallo kahden seinän välissä.

Esimerkit
ScrollingStringGadget.js
PingPongStringGadget.js

EIFFEL: Viitenumero

Viitenumero on Eiffel-kielinen ohjelma, joka laskee sille annetusta parametristä viitenumeron, jota Suomen pankkilaitos käyttää laskuviitteenä. Eiffel-kielessä ohjelman ylin kerros on sekin luokka, jonka suoritus alkaa luomishetkellä make-rutiinista.

Ohjelma sisältää runsaasti virheiden etsintää helpottavia debug-komentoja, jotka poistuvat, kun ohjelma käännetään ja kääntäjä suorittaa optimoinnin lopullista versiota varten.

Esimerkit
Viitenumero.e

C: Viite-Handler

Viite-Handler on tiedostojärjestelmä, jonka käyttäjä asentaa haluamansa nimiseksi laitenimeksi järjestelmäänsä, esim. "VIITENUMERO:". Käyttäjä avaa tiedoston, jonka nimi on numerojono, josta muodostetaan viitenumero. Avatun tiedoston sisältö on valmis viitenumero, käyttäjän halutessa myös viiden numeron jaksoissa. Esim. tiedoston "VIITENUMERO:123456" sisällä on merkkijono "12 34561". ViiteHandler ohjelmoitiin koneystävälliseksi ja prosessoritehoa säästäväksi ratkaisuksi laskea miljoonia viitenumeroita sen sijaan, että Viitenumero-ohjelma ajettaisiin aina uudelleen.

Joka kerta suoritettaessa Viitenumero-ohjelmaa täytyy käynnistää sitä varten prosessi, varata sille muistia ja paikka prosessitaulusta, avata stdio-tiedostokahvat jne. Sitä vastoin ViiteHandler on pysyvä taustalla ajava prosessi, joka toimii kuin serveri tai daemon. ViiteHandler on myös esimerkki siitä, miten tiedostojärjestelmää voidaan käyttää muilla, dynaamisemmilla tavoilla kuin vain fyysisenä massamuistina.

Jos viitenumero on asennettu järjestelmään sitä voi käyttää esim. komentotulkissa näin:

Shell: Type VIITENUMERO:123456
12 34561
Shell: Type VIITENUMERO:123456/NOSPLIT
1234561

Viite-Handler.c-tiedostossa oleva ohjelma käynnistää Handler-ohjelman, joka ottaa vastaan käyttöjärjestelmän viestejä tiedostojen avaamisesta, lukemisesta, kirjoittamisesta, sulkemisesta, jne. Lähdekoodi on järjestelmäriippuvaista. Se on ohjelmoitu AmigaOS-käyttöjärjestelmälle.

Ohjelma sisältää runsaasti virheiden etsintää helpottavia debug-komentoja, jotka poistuvat, kun ohjelma käännetään ja kääntäjä suorittaa optimoinnin lopullista versiota varten. DPutStr()-rutiini tulostaa parametrinsä suoraan käytetyn koneen sarjaporttiin. Handler, joka käynnistettäessä muuttuu osaksi itse käyttöjärjestelmää, ei voi käyttää tavallista stderror-tiedostokahvaa.

Viitenumero.c-tiedostossa on kolme C-kielistä rutiinia. Ne ovat kaikki kolme tiukassa sopimuspohjaisessa suhteessa jopa toisiinsa. Rutiinin alun kommentoinnissa määritellään tuloste ja toiminta, kun syöte pysyy sovituissa rajoissa.

Viitenumero.h-tiedosto on tavallinen otsikkotiedosto.

Rutiinit ovat ANSI-C -yhteensopivia.

Esimerkit
Viite-Handler.c
Viitenumero.c
Viitenumero.h

C++: Jäsenrekisteritietokanta

C++-luokka Society_Member on osa isompaa Turun kaupunginosaseura Kakskertaseura ry:lle toteutettua projektia, johon kuuluu jäsenrekisteriohjelma ja jäsenmaksujen keruuseen vaadittavat tulostus- ja rekisteröinti-ohjelmat.

Society_Member-luokan lisäksi projektiin kuului kaksi muuta apuluokkaa jäsenten käsittelyyn: Soc_Mem_ListA- ja Soc_Mem_DBfile-luokat, joista ensimmäinen on erityinen säiliöluokka Society_Member-luokan olioille ja jälkimmäinen puolestaan sisältää rutiinit koko jäsentietokannan kirjoittamisesta ja lukemisesta massamuistiin. Tietokanta tallentuu ASCII-tiedoston muodossa, jotta sitä voitaisiin kaikissa tilanteissa niin tarvittaessa lukea ja muuttaa.

Esimerkit
Society_Member.cxx
Society_Member.h

PERL: Mofile

Mofile on komentorivikäyttöliittymä vanhaan, nyt jo käytöstä poistuneeseen WWW-suomi-englanti-suomi -sanakirjaan. Ohjelma kirjoitettiin, jotta sanakirjaan pääsisi käsiksi yksinkertaisella komentotulkkikäskyllä tarvitsematta erikseen käynnistää WWW-selainta lyhyen sanahaun tekemiseksi.

Mofile on Perl-kielinen komentotiedosto eli skripti. Se toimii Unix-ympäristössä.

Esimerkit
Mofile.prl

EIFFEL: Yhteistilaus

Yhteistilaus on WWW-käyttöliittymällä toteutettu tietokanta ja siihen liittyvät ylläpito-ohjelmat. Yhteistilaus on ohjelmoitu Turun yliopiston luomupiiri ry:lle. Yhdistys järjestää kerran kuukaudessa luomuruuan yhteistilauksia varsinaissuomalaisilta viljelijöiltä sekä muilta luomuruokatuottajilta. WWW-käyttöliittymän kautta yhdistyksen jäsenet jättävät ruokatilauksensa viikkoa ennen tilausten yhteenlaskemista. Ohjelma tulostaa kuitit jokaiselle tilaajalle.

Yhteistilaus on laaja kokonaisuus, jonka toimivuus vaatii useita sitä varten erikseen tehtyjä luokkia, mm. CONVERSIONS, USER_INTERACTION, YHTEISTILAUS_ROUTINES, GET_CURRENT_DATE_ROUTINES, STRING_COMPILATION ja STRUCTURED_FILE.

STRUCTURED_FILE on yleiskäyttöinen tiedostoformaatti, joka on helppo liittää mihin hyvänsä ohjelmaan. STRUCTURED_FILE-tiedostoformaattia voi editoida tavallisella tekstieditorilla. Käyttäjälle näkymättömästi se pitää tallessa korkeintaan kaksi aikaisemmin kirjoitettua versiota samasta tiedostosta. Samaa tiedostoa on siis kolme kappaletta: file, file.bak ja file.bkk. STRUCTURED_FILE on yksinkertaisen ratkaisu, jota voi kuitenkin laajentaa tarpeen tullen, koska siinä on sisäänrakennettu versiohallinta. Se on tiedostomuoto, jossa jokainen asetusmuuttuja on omalla rivillään, jota edeltää ja seuraa valinnainen määrä kommenttirivejä. Itse muuttuja voi olla useampirivinen, kunhan viimeistä riviä seuraava rivi on erityinen lopetusrivi, jolla on vain MULTI-LINE_END-teksti (mikä teksti voidaan helposti muuttaa toiseksi).

Ohjelma sisältää runsaasti virheiden etsintää helpottavia debug-komentoja, jotka poistuvat, kun ohjelma käännetään ja kääntäjä suorittaa optimoinnin lopullista versiota varten.

Luomupiirin kotisivut: http://org.utu.fi/tyyala/luomupiiri ja Luomupiirin Yhteistilaus-tietokanta: http://org.utu.fi/tyyala/luomupiiri/tilaus/cgi-bin/aloitus.html

Esimerkit
string_compilation.e
string_compilation_example.txt
STRUCTURED_FILE_example.txt

ISP:n käyttöönottopaketti

Internet-palveluntarjoajan aloituspaketti Amiga-tietokoneelle: Icenet Oy:lle koottu ja rakennettu paketti Amigan Internet-ohjelmia käyttäjää varten, joka on juuri hankkinut itselleen Icenetin Internet-yhteyden. Kahden levyn pakettiin kuului asennusohjelma, joka kopioi ohjelmat käyttäjän kovalevylle ja samalla konfiguroi ne toimimaan Icenetin yhteydessä.

Toteutuskieli: AmigaOS:n Installer-ohjelman skriptikieli, syntaksiltaan Lisp-kielen kaltainen.

OpenVMS:n DCL: Viimkone

Viimkone on komentotiedosto, jolle annetaan syötteeksi käyttäjätunnus ja luettelo keskustietokoneista, joissa mainitun käyttäjätunnuksen oletetaan vierailleen. Viimkone kysyy kaikilta koneilta finger-portin kautta, milloin käyttäjätunnus on viimeksi niissä käynyt ja tulostaa viimeisimmän ajankohdan.

Viimkone on ohjelmoitu OpenVMS-käyttöjärjestelmän DCL (Digital Command Language) -komentokielellä.

Viimkone on Turun yliopiston tietojenkäsittelyopin oppiaineessa suoritettu harjoitustyö. Viimkone on myös käännetty Unixin Sh-kuorelle.

Esimerkit
Viimkone.dcl
Viimkone.sh

COBOL: Jäsenrekisteritietokanta

Jäsenrekisteritietokanta pienelle yhdistykselle (jäseniä 100-10000). Toteutettu käyttäen sekä IBM:n VisualAge COBOL:a (Windows XP) että HP/Compaq/DEC COBOL:a (OpenVMS). WRITELOG.CBL aliohjelmaa kutsutaan jokaisen tietokantaan tehtävän muutoksen yhteydessä. Näin jokaisesta muutoksesta (uusi jäsen, jäsenen poisto tai jäsenen tietojen muuttuminen) jää tallenne, josta käy myös ilmi muuttuneen tietokentän aikaisempi arvo. Ohjelmalla on merkkigrafiikkaa käyttävä käyttöliittymä (SCREEN SECTION).

Kuvaruutukaappaus Kuvaruutukaappaus
Esimerkit
WRITELOG.CBL
MEMBERDB.CBL
FILEMEMB.CBL
FDMEMB.CBL

HTML ja HSC: Tämä dokumentti

Tämä dokumentti on kirjoitettu HTML-kielellä käyttäen HSC (HTML Sucks Completely) -esiprosessointijärjestelmää.
[Best viewed with Any Browser] [Built With HSC - HTML Sucks Completely] Made With Cascading Style Sheets Built With Amiga

Copyright © Mikko Johannes Koivunalho 1997---2007
email: mikko . koivunalho NOSPAM kolumbus . fi
homepage: http://www.kolumbus.fi/mikko.koivunalho

This page last updated or changed 12.09.2007.