Viikonpäivä koneesta

BASIC-käyttäjä

Millähän ilveellä saa vanhasta DOS käyttiksellä varustetusta läppäristä viikonpäivän ohjelmaan sisään? Kun heittää dos-tilassa DATE-komennon niin se tuo näytölle ensiksi tuon viikonpäivän (maanantai, tistai, keskiviikko jne) englanninkielisenä lyhenteenä mutta en ole keksinyt vielä miten se on kaivettavissa koneen sisuksista. Ohjelmoin BASICilla erästä sovellusta ja tarvitsen siihen viikonpäivää. Korostan vielä että tuo BASIC-ohjelma ei osaa kaivaa viikonpäivää DATE$-komennolla tuon läppärin sisuksista.

30

302

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • jgkjgkjg

      Mikä dos-versio? Mikä Basic?

      • BASIC-käyttäjä

        DOS 7.1 ja POWERBASIC 3.5


    • Onvaihtoehtoja

      FreeDos
      tai Dos2000

      asentuvat nykykoneellekkin.

      Päiväys juttu autoexec.bat:iin kirjoitetaan.

      Tai Qemu ja DosBox, tai dosbox nykyjärjestelmän päälle.
      tai sitten se ikivanha dos, jolloin biosta joudut nykykoneissa mylkkaan hurjasti.
      Kone kannataa valita sen mukaan, vanhan dossin rajoiteet on kamalat.

      • kryuuk

        Miten sinulla on noin heikko ulosanti?


      • kielen_tuhoaja
        kryuuk kirjoitti:

        Miten sinulla on noin heikko ulosanti?

        Ehkäpä vaan kirjuuttaa ns. älypuhelimesta, tuosta kielen rappeuttajasta.


    • räpärällää
    • BASIC-käyttäjä

      Kiitoksia "räpärällää". Tuo Zellerin matematiikka on yksinkertainen ja ilmeisen varma. Eikä tarvitse kuin yhden rivin saadakseni aikaiseksi viikonpäivän. Tuo modulaarinen aritmetiikka oli vähän liikaa mulle ; en edes jaksanut lukea sitä kaikkea. Itse harkitsin alkuun tuota samaa, jota ehdotit eli SHELLillä DOSsiin ja DATE-käskyllä vasterotla muistiin ja niin edelleen mutta kun kerran pystyn BASICin sisällä' laskemaan viikonpäivän niin se on mielestäni paljon parempi ratkaisu. Kiitoksia vielä kerran.

      • räpärällää

        Kiitos kiitos. Taitaa olla Zellerin funktiosta kertoessaan Wikipedia nolosti väärässä, kun väittää tuota funktiota algoritmiksi. Algoritmi lienee sana, jolla tarkoitetaan (toistettavaa) prosessia mieluummin kuin yksinkertaista funktiota - josta arvo, vastaus tulee matemaattisen laskelman tarkkuudella samantien yhdellä kertaa.
        https://fi.wikipedia.org/wiki/Algoritmi

        Vaihtoehtoinen tapa viikonpäivien laskentaan olisi käyttää vuodenpäivänumeroita. Esim. tehdään funktio, joka selvittää onko vuosi karkausvuosi. Sitten toinen funktio, joka tuon äskeisen avulla laskee päiväykselle vuodenpäivänumeron. Funktio, joka laskee toisinpäin, jne. Mutta Zellerin kaava taisi olla riittävää yllä mainittuun tarkoitukseen.


      • OnSeAlgoritmi
        räpärällää kirjoitti:

        Kiitos kiitos. Taitaa olla Zellerin funktiosta kertoessaan Wikipedia nolosti väärässä, kun väittää tuota funktiota algoritmiksi. Algoritmi lienee sana, jolla tarkoitetaan (toistettavaa) prosessia mieluummin kuin yksinkertaista funktiota - josta arvo, vastaus tulee matemaattisen laskelman tarkkuudella samantien yhdellä kertaa.
        https://fi.wikipedia.org/wiki/Algoritmi

        Vaihtoehtoinen tapa viikonpäivien laskentaan olisi käyttää vuodenpäivänumeroita. Esim. tehdään funktio, joka selvittää onko vuosi karkausvuosi. Sitten toinen funktio, joka tuon äskeisen avulla laskee päiväykselle vuodenpäivänumeron. Funktio, joka laskee toisinpäin, jne. Mutta Zellerin kaava taisi olla riittävää yllä mainittuun tarkoitukseen.

        Wikipediassa sanotaan algoritmista:
        "Algoritmi on yksityiskohtainen kuvaus tai ohje siitä, miten tehtävä tai prosessi suoritetaan; jota seuraamalla voidaan ratkaista tietty ongelma"

        Onhan tuossa Zellerin tapauksessa ilman muuta käsillä tietty ongelma eli se että kun on päiväys, niin mikä viikonpäivä silloin on.

        Ja ilman muutahan Zellerin menetelmä on yksityiskohtainen kuvaus siitä miten kyseinen ongelma ratkeaa. Algoritmi se on silloin.


      • räpärällää
        OnSeAlgoritmi kirjoitti:

        Wikipediassa sanotaan algoritmista:
        "Algoritmi on yksityiskohtainen kuvaus tai ohje siitä, miten tehtävä tai prosessi suoritetaan; jota seuraamalla voidaan ratkaista tietty ongelma"

        Onhan tuossa Zellerin tapauksessa ilman muuta käsillä tietty ongelma eli se että kun on päiväys, niin mikä viikonpäivä silloin on.

        Ja ilman muutahan Zellerin menetelmä on yksityiskohtainen kuvaus siitä miten kyseinen ongelma ratkeaa. Algoritmi se on silloin.

        Trigonometriassa saattaa olla "ongelmana" esim. että selvitetään tangentin arvo asteluvulle 67. Vastauksen selvittämiseen ei minun mielestäni tarvita algoritmi, vaan funktio, mutta ehkä on sitten kyse näkökulmasta, mitä miksikin nimitetään milloinkin.

        Tuossa Wikipedia-määritelmässä puhuttiin nimenomaan prosessista, jota itsekin mainitsin edellä. Prosessiin saattaa sisältyä toimintoja, että hae tämä asia tuolta, tai tuolta, kunnes löytyy sopiva yhdistelmä, tai jotain toimintoja tehdään, jotka eivät ole matemaattiseksi lausekkeeksi muotoiltavissa/muotoiltu. Mutta funktiosta arvo tulee helposti, matemaattisen lausekkeen tavalla, kuten esim. 2 3 =5. Siinä mielessä Zellerin sääntö tai kaava voidaan kyllä ohjelmoida funktioksi, tai nimittää sitä funktioksi.

        Eihän esim. trigonometrian funktioista yleensä käytetä nimitystä, että algoritmi? Toki voidaan jotain funktioita yrittää vääntää algoritmin muotoon esim. Taylorin polynomilla.


    • Trollessonni

      Valmiita dos ohjelmia on päiväyksen sanaliseen ilmoitukseen, jos 2k ongelmaa ole niissä.
      Hoh hoh. ettei olis vastannut itselleen????

    • Laazz00

      Jos haluat nopeutta käytä free pascalia. Se on nykyaikaisin kääntäjä (ohjelmointikieli) dosille.
      Päivämäärän saat selville funktiolla DayOfTheWeek . Se kertoo sen ISO 8601 mukaisesti.
      Jos käyttämäsi kieli pystyy lukemaan komentoriviltä niin voit hyödyntää free pascalia siinäkin. Lisäksi sillä on laajin suomenkielinen ohjesivusto netissä.

    • BASIC-koodari

      Okei nyt kun Homma tuli hoidettua BASICilla ja DOS 7.1 kanssa niin jos haluan tuon saman homman tehdä niin että se pyörii Vanhassa Xp-läppärissä niin mitähän ohjelmointikieltä kannattaisi käyttää?
      BASIC on pois suljettu ellei sitä sitten aja EXE-muotoon. (täytyykin kokeilla!) Vaatimuksena on että em. ohjelma ei vaadi liikaa asennettavaa koneeseen tai on implementoitavissa koneeseen tosi helposti.
      Ehdotettuja ohjelmointikieliä: FreeDos, Dos2000, free pascal
      Xp:n jälkeen seuraavaksi täytyy varmastikin mennä LINUX-palstalle kyselemään PYTHON-ohjeita

      • jjjjjjjjj

        Ohjelmointikieliä jutussasi on Basic, free pascal ja python, muut ovat jonkinlaisia käyttöjärjestelmiä.


      • räpärällää
        jjjjjjjjj kirjoitti:

        Ohjelmointikieliä jutussasi on Basic, free pascal ja python, muut ovat jonkinlaisia käyttöjärjestelmiä.

        Esim. DOSsissa on ollut mahdollista harrastaa pienimuotoista, rajallista ohjelmointia BAT-tiedostoihin. Käytellä siinä samoja komentoja, tiedostoihin ohjaamisia, ja samoja parametrejä kuin komentoriviltäkin. Periaatteessa olisi mahdollista tehdä vaikka kortistointiohjelma DOSsilla niin, että data on tekstiriveinä tekstitiedostossa. Kukin tietoalkio tietyssä positiossa rivillä, tietyssä sarakkeessa. Sitten mahdollista lajitella SORT-komennolla käyttäen sarakenumeroa parametrina. Tehdä hakuja FIND-lausekkeilla, jne. Datan selailuun ja muunteluun voisi sitten käyttää vaikka tekstinkäsittelyohjelmia, jotka TXT-tiedostomuotoa ymmärtävät. Tai periaatteessa voidaan kirjoittaa suoraan näyttöruudulta rivejä tiedostoihin COPY CON... -tyyppisellä lausekkeella...


      • gftukfyukgfuk

        Niin?


      • räpärällää

        "jos haluan tuon saman homman tehdä niin että se pyörii Vanhassa Xp-läppärissä niin mitähän ohjelmointikieltä kannattaisi käyttää?"

        Voihan DOS-koneissa käyttää vaikka assembleria pienten rutiinien vääntämiseen.

        Pascal muistuttaa C:tä. Erilaiset välimerkit. Yhdessä kielessä käytetään yhdenlaisia sulkumerkkejä, toisessa toisenlaisia. Joku saattaisi mieluummin käyttää Pascalia kuin C-kieltä.

        Kääntäjä, COM- tai EXE-muotoon kääntäminen, saattaa olla parempi kuin tulkkikielen kautta käytellä ohjelmia.


      • Anonyymi

        Nonni .....Nyt se sama ohjelma pyörii Raspberry Pi 1:llä Pythonilla ja homma on varmistettu RTC:llä verkkohäiriöiden varalta.
        Meni aika kauan ennenkuin tajusin että pythonin grafiikka ja ruudunkäsittely ovat erillisiä ohjelmia tai moduleta ja joista yksi on Tkinter. Se tuntuu riittävältä ja on ihan tarpeeksi vaikea opeteltava.
        Myös Raspianin kehittyneisyys yllätti positiivisesti. Sehän on täysverinen Linux tosin pirullisen hidas kun on tottunut kunnon koneen vauhtiin.
        BASIC-koodari


      • Anonyymi

        Tuo Zellerin algoritmi muuten toimii ihan hyvin mutta sen soveltaminen noiden tammi- ja helmikuun osalta tekee sen vain hieman työlääksi.

        h=(q (((m 1)*26)/10) K (K/4) (J/4)-2*J) mod7

        missä :
        • q = kuukauden päivä, esimerkiksi 6.12.1917
        • m = kuukauden järjestysluku, esimerkiksi 6.12.1917. Huom: tammi- ja helmikuu ovat järjestysluvultaan 13 ja 14 edellisenä vuonna eli vuosiluvusta on vähennettävä yksi.
        • K = vuosiluvun kaksi viimeistä numeroa, ( Vuosi MOD 100), esimerkiksi 6.12.1917
        • J = vuosiluvun kaksi ensimmäistä numeroa, ( Vuosi/100), esimerkiksi 6.12.1917
        • h = viikonpäivä (0 = lauantai, 1 = sunnuntai, 2 = maanantai, ...)

        BASIC-koodari


    • Eihän tuo ole kuin ihan simppeli koodinpätkä. Laske päivän numero ja ota modulo 7 ja sitten säädä tulos oikeaksi.

      n=int(365.25*(vuosi-1))
      for i=1 to k-1: n=n kuunpituus(v):next i
      n=n=n p-1
      if v mod 4=0 and k>2 then n=n 1
      vp=(n xx) mod 7 1

      Sitten testaamalla katsot arvon xx:lle.

      Aikanaan tuli taskubasicilla tehtyä tuo yhdellä kaavalla. Tuo -1 kolmannella rivillä on turha, kun xx hoitaa homman.

      • Cobol-ja-basic

        Itse olen nähnyt jonkun muun kaavan. Silloin elettiin 80-luvun alkuvuosia ja olin ekassa ATK-alan työpaikassani. Nyt on jo viimeinenkin taaksejäänyttä elämää, herrojen tahdosta. En ole ihan vielä eläkkeellä, ja joudun vielä muodon vuoksi hakemaan töitä. Ensimmäiseenkään haastatteluun ei enää pääse yli 60-vuotiaana, mutta kun Sipilän idioottia pitää TE-keskusten totella.

        Ei tuo nyt näytä ollenkaan toimivalta, mikä on xx? En nyt puhu muuttujien alustuksista enkä tyyppimäärittelyistä.


      • Cobol-ja-basic kirjoitti:

        Itse olen nähnyt jonkun muun kaavan. Silloin elettiin 80-luvun alkuvuosia ja olin ekassa ATK-alan työpaikassani. Nyt on jo viimeinenkin taaksejäänyttä elämää, herrojen tahdosta. En ole ihan vielä eläkkeellä, ja joudun vielä muodon vuoksi hakemaan töitä. Ensimmäiseenkään haastatteluun ei enää pääse yli 60-vuotiaana, mutta kun Sipilän idioottia pitää TE-keskusten totella.

        Ei tuo nyt näytä ollenkaan toimivalta, mikä on xx? En nyt puhu muuttujien alustuksista enkä tyyppimäärittelyistä.

        xx on luku, joka selviää testaamalla.


      • Basic-vai-Basica
        okaro kirjoitti:

        xx on luku, joka selviää testaamalla.

        Miten tuota xx lukua pitää testata ?

        Tarkistin tuon koodisi, ja tulos oli:
        Rivi 1.) Asettaa n -muuttujan arvoksi -366
        Rivi 2.) Ei tee yhtään mitään.
        Rivi 3.) Asettaan n -muuuttujan arvoksi 0
        Rivi 4.) Asettaan n -muuuttujan arvoksi 0 (Sama tulos kuin rivillä 3) 
        Rivi 5.) Asettaa vp -muuttujan arvoksi 1

        Mitä tuon koodin pitäisi tehdä ?


      • Basic-vai-Basica kirjoitti:

        Miten tuota xx lukua pitää testata ?

        Tarkistin tuon koodisi, ja tulos oli:
        Rivi 1.) Asettaa n -muuttujan arvoksi -366
        Rivi 2.) Ei tee yhtään mitään.
        Rivi 3.) Asettaan n -muuuttujan arvoksi 0
        Rivi 4.) Asettaan n -muuuttujan arvoksi 0 (Sama tulos kuin rivillä 3) 
        Rivi 5.) Asettaa vp -muuttujan arvoksi 1

        Mitä tuon koodin pitäisi tehdä ?

        Emme elä vuotta 0. Ensimmäinen rivi antaa arvon 737074. Toisen jälkeen arvo on 737164. Kolmannella on selvästi typo, mutta se lisää arvon 1 eli 737165. Neljäs ei muuta.

        xx:ää testataan vaikka luvuilla 0..6 kunnes tulos on oikein. Modulo antaa arvon 2, joten oikeav arvo vaikuttaa olevan 6.


      • Basic-vai-Basica
        okaro kirjoitti:

        Emme elä vuotta 0. Ensimmäinen rivi antaa arvon 737074. Toisen jälkeen arvo on 737164. Kolmannella on selvästi typo, mutta se lisää arvon 1 eli 737165. Neljäs ei muuta.

        xx:ää testataan vaikka luvuilla 0..6 kunnes tulos on oikein. Modulo antaa arvon 2, joten oikeav arvo vaikuttaa olevan 6.

        Eli mitä se koodisi pitäisi tehdä, onko se joku periaatteessa ehkä näin juttu ? etkä niin ollen ole tarkoittanutkaan sen palauttavan jotain arvoa.


    • räpärällää

      Tuossa niitä konsteja oli jo ylempänä:
      https://keskustelu.suomi24.fi/t/15596128/viikonpaiva-koneesta#comment-96984526

      Jos halutaan ohjelmoimalla ohjelmoida, sitten karkausvuoden laskemiseksi on muistaakseni sääntönä
      - yleensä neljällä jaolliset vuodet ovat karkausvuosia, paitsi
      - sadalla jaolliset eivät ole, paitsi
      - neljälläsadalla jaolliset ovat, mutta
      - vielä on poikkeuksena tietty vuosiluku... 4840.

      https://fi.wikipedia.org/wiki/Gregoriaaninen_kalenteri
      https://issuu.com/janttisuku/docs/laurentius_58

      Voitaisiin valmistaa funktio karkausvuoden selvittämiseksi.
      Toisella funktiolla voitaisiin muuntaa päiväys vuodenpäivänumeroksi. Esim. tänä vuonna huhtikuun 1. päivä on vuoden 91. päivä. Siitä pystynee laskemaan viikon numeron ja viikonpäivän, kun tiedetään, että vuosi alkoi maanantailla, ja 1. viikko on se viikko, jolle osuu vuoden ensimmäinen torstai.
      Toki päiväyksen tarkistamiseen voisi olla funktio myös. Tarkistamaan, ettei käyttäjä syötä koneelle päiväksi esim. 37. päivä 13. mätäkuuta.

      Mitä yksinkertaisemmaksi rusinaksi saa kutistettua funktion, sen parempi. Mielestäni tuo Zeller on sitä jo tehnyt oivallisesti.

      • räpärällää

        Täsmennystä tai korjausta:

        Vuosi 2018 alkoi maanantaipäivällä
        Vuosi 2019 tiistailla
        Vuosi 2020 alkaisi keskiviikolla, karkausvuosi, joten
        Vuosi 2021 alkaisi perjantailla...

        Menikö laskelma oikein tällä kertaa?
        Nyt jos muistetaan, että maanantaina oli vuodenpäivä 91 (eli 1.huhtikuuta), niin siitä on helppo laskea, 91 on jaollinen seitsemällä. Voidaan päätellä sitten, että vuosi alkoi tiistailla.

        Tähtitieteen almanakoissa on käytetty juliaanista päivänumeroa.
        https://www.ursa.fi/kirjat/lisamateriaalia/tahdet-vuosikirja/lisamateriaali-2016/juliaaninen-paivamaara.html

        Tuossa olisi ohjelmoijille taas yksi vaihtoehtoinen tapa käsitellä päiväyksiä. Sivulta löytyy valmis kaava.


    • Anonyymi

      Joskus oli paivays.sys
      Joka toi kellonajan ja suomenkielisen päivän oikeeseen alalaitaan.
      vastavia eng yms. oli myös.
      Oli myös kaynistin.sys joka teki alalaitaan käynistin palkin ja siinäkin oli päivämäärä ja kello.
      sai sittenn valita jos omisti hiiren, käynistää mm. doom suoraan kuvakkeesta palkissa.
      Dosillahan tehtiin paljon juttuja, joihin koodatiin itse ohjelma joskus 1980 luvulla

    • Anonyymi

      Eri ohjelmointikielistä saattaa löytyä erilaisia valmiita funktioita. - Mistä tekstinkäsittelyohjelma tai taulukkolaskenta nuuskii päiväyksen tiedot? Onko käyttöjärjestelmässä jokin tietty muistipaikka varattu, esittämään tuota tietoa?

      • Anonyymi

        Kyse on kuluneista sekunneista 1 January 1970 00:00:00 lähtien. Esim nyt kello on 1558019992.


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Aivosyöpää sairastava Olga Temonen TV:ssä - Viimeinen Perjantai-keskusteluohjelma ulos

      Näyttelijä-yrittäjä Olga Temonen sairastaa neljännen asteen glioomaa eli aivosyöpää, jota ei ole mahdollista leikata. Hä
      Maailman menoa
      91
      2900
    2. Pelotelkaa niin paljon kuin sielu sietää.

      Mutta ei mene perille asti. Miksi Venäjä hyökkäisi Suomeen? No, tottahan se tietenkin on jos Suomi joka ei ole edes soda
      Maailman menoa
      299
      1686
    3. Mikä saa ihmisen tekemään tällaista?

      Onko se huomatuksi tulemisen tarve tosiaan niin iso tarve, että nuoruuttaan ja tietämättömyyttään pilataan loppuelämä?
      Sinkut
      246
      1557
    4. Minkä merkkisellä

      Autolla kaivattusi ajaa? Mies jota kaipaan ajaa Mersulla.
      Ikävä
      87
      1391
    5. IL - VARUSMIEHIÄ lähetetään jatkossa NATO-tehtäviin ulkomaille!

      Suomen puolustuksen uudet linjaukset: Varusmiehiä suunnitellaan Nato-tehtäviin Puolustusministeri Antti Häkkänen esittel
      Maailman menoa
      402
      1374
    6. Nyt kun Pride on ohi 3.0

      Edelliset kaksi ketjua tuli täyteen. Pidetään siis edelleen tämä asia esillä. Raamattu opettaa johdonmukaisesti, että
      Luterilaisuus
      398
      1292
    7. Kiitos nainen

      Kuitenkin. Olet sitten ajanmerkkinä. Tuskin enää sinua näen ja huomasitko, että olit siinä viimeisen kerran samassa paik
      Tunteet
      2
      1079
    8. Esko Eerikäinen tatuoi kasvoihinsa rakkaan nimen - Kärkäs kommentti "Ritvasta" lävähti somessa

      Ohhoh! Esko Eerikäinen on ottanut uuden tatuoinnin. Kyseessä ei ole mikä tahansa kuva minne tahansa, vaan Eerikäisen tat
      Suomalaiset julkkikset
      38
      1037
    9. Hyväksytkö sinä sen että päättäjämme ei rakenna rauhaa Venäjän kanssa?

      Vielä kun sota ehkäpä voitaisiin välttää rauhanponnisteluilla niin millä verukkeella voidaan sanoa että on hyvä asia kun
      Maailman menoa
      329
      874
    10. Miksi Purra-graffiti ei nyt olekkaan naisvihaa?

      "Pohtikaapa reaktiota, jos vastaava graffiti olisi tehty Sanna Marinista", kysyy Tere Sammallahti. Helsingin Suvilahden
      Maailman menoa
      257
      855
    Aihe