Paranna Morpion-pelin kansainvälisiä ennätyksiä!
Ohjeet | Nettipeli | Tuloslista
Suunnittele tiedosto, josta tulee suuri ZIP-paketti!
Vastauksia: 37
Paras: 1158
Ostakaa mieluummin vaikka käyttis joka tukee Unicodea terminaalissa... (Muut kielet) lisää...
Oppaat: Pascal-ohjelmointi
Kirjoittaja: Metabolix
Edellinen opas – Seuraava opas
Tulostettava versio: tämä opas | koko opassarja
Osa 2 - Vakiot, muuttujat ja tietueet
Vakiot – Erilaisia muuttujia – Muuttujien käyttöä – Joukot – Taulukot – Yleinen esimerkki opitusta – Tietueet
| Pascal on hyvin tarkka kieli muuttujien tyypin suhteen. Kun käyttää Pascalia, ei voi laittaa merkkijonomuuttujan arvoksi lukua 10, koska 10 on luku eikä merkkijono. Tämä ominaisuus tekee Pascalista erittäin mukavan kielen ohjelmoida: sen sijaan, että kääntäjä kirjoittaisi huolella piilotettuun lokitiedostoon pienen varoituksen, se ilmoittaa kiertelemättä, että näin ei voi tehdä.
Muuttujien, vakioiden ja tietueiden nimissä saa käyttää seuraavia merkkejä: 'a' .. 'z', 'A' .. 'Z', '_', '0' .. '9'. Nimi ei saa alkaa numerolla. Kirjainten koolla ei ole käytännön merkitystä; 'etana' on sama kuin 'EtAnA'. Vakiot Vakioista on hyvä aloittaa, koska ne ovat yksinkertaisia. Vakio voi olla mikä tahansa tavallinen muuttujatyyppi tai lueteltu tyyppi, mutta se ei voi olla tietue. Vakion tyyppiä ei tarvitse ilmoittaa, vaan kääntäjä päättelee sen annetusta arvosta. Miksei tätä arvoa voi sitten kirjoittaa joka kerta uudestaan? Kyllähän sen toki voi... Huonoja puolia on kaksi:
const avulla ja itse ohjelmakoodin ulkopuolella eli ennen sanaa begin. Se voi olla vaikkapa tällainen:
Muuttujia on useita erilaisia. Tavallisimpia ovat kokonaisluvut, liukuluvut (desimaaliluvut) ja merkkijonot sekä Boolean, jonka arvo on True tai False (tosi tai epätosi).
Kokonaislukutyypit suurimmasta pienimpään ovat:
Normaalit liukulukutyypit ovat:
Merkkijonotyypit ovat:
Lisäksi Pascalissa voi määrittää lueteltuja tyyppejä. Nämä laitetaan tietueiden tapaan kohtaan type, minkä jälkeen ne ovat käytettävissä samoin kuin muutkin muuttujatyypit. Määritys voi olla esimerkiksi tällainen:
Kaikkein ensimmäiseksi muuttujat pitää määritellä. Pascalissa tämä tapahtuu sanan var avulla ja itse ohjelmakoodin ulkopuolella eli ennen sanaa begin:
begin jälkeen.
Muuttujalle annetaan arvo merkinnällä :=
Lausekkeissa käytetään merkkejä +, -, * ja /. div palauttaa jakolaskun kokonaisosan ja mod jakojäännöksen. Jälkimmäiset toimivat vain kokonaisluvuilla.
trunc-funktiolla (truncate). Trunc ei pyöristä lukua, mutta pyöristetyn arvon saa lisäämällä lukuun ensin arvon 0.5. Luvun itseisarvon taas saa funktiolla abs.
and, or, xor, not, shr ja shl. Niitä käytetään aivan samoin kuin tavallisia laskutoimituksia. Tarkemmat tiedot löydät Pascal-hakemistosta.
Joukot Joukot ovat juuri sitä mitä nimi sanoo: joukko tietyn tyyppisiä muuttujia. Joukon voi muodostaa mistä tahansa enintään 256 erilaista vaihtoehtoa sisältävästä muuttujatyypistä. Tämä ehto rajaakin hyvin vahvasti joukkojen käyttöä. Joukkovakiot merkitään hakasulkuihin ja joukkoja yhdistellään plus- ja miinusmerkeillä. Tietyn arvon olemassaolo selviää in-operaatiolla. Yleensä suurimman hyödyn joukoista saa juuri lueteltujen tyyppien kanssa.
Taulukko voi nimestään huolimatta olla juuri niin moniulotteinen kuin tarve vaatii. Taulukko määritetään samalla lailla kuin muutkin muuttujat. Määrittelyssä käytetään sanaa array, jonka voi kukin kirjoittaa halunsa mukaan isolla tai pienellä.
Yleinen esimerkki opitusta
for .. to .. do -lauseesta kerrotaan lisää seuraavassa osassa.
Tietueet Tietueet ovat muuttujia, jotka koostuvat muista muuttujista. Esimerkiksi tietue "TAuto" voisi sisältää osat "KuljettuMatka" ja "Huippunopeus" jotka olisivat vaikkapa kokonaislukuja. Muuttujassa "X", jonka tyyppi on "TAuto", pääsisimme näihin käsiksi kirjoittamalla "X.KuljettuMatka" tai "X.Huippunopeus". Nimen edessä on T, jotta tunnistamme myöhemminkin koodissa nimen tietuetyypiksi. Merkintä ei ole pakollinen, mutta se selkeyttää koodia. Ohjelman muistinkäytön pienentämiseksi kannattaa tietueesta jättää kaikki tarpeeton pois. Turha uhrata auton moottorille tilaa, jos sitä ei tarvitse. Epäolennaisia ei turhaan tarvitse muistaa. Tietueet määritellään yleensä ohjelman alkuun, jotta ne ovat käytössä koko ojelman ajan. Määrittely voi tapahtua esimerkiksi näin:
|
Edellinen opas – Seuraava opas
| Koipio-ohjelma [21.09.2004 18:06:41] | Lainaa | Muokkaa |
| Ahhaaa! Oppaan osat 2 ja 3 ovat menneet sekaisin! | ||
| hunajavohveli [21.09.2004 20:38:01] | Lainaa | Muokkaa |
| Dynaaminen: array of array of Integer;
Turbo Pascal ei hyväksy tuota. "Error "[" or "(." expected". Onko siinä jotain eroa muihin kääntäjiin verrattuna? Vai riippuuko jotenkin tuosta SysUtilsista? Sitä ei näytä löytyvän. | ||
| Metabolix [21.09.2004 23:32:09] | Lainaa | Muokkaa |
| Hienoa, että tämäkin puute oppaissa tuli ilmi. Oppaat on nyt korjattu noilta osin.
Kyseessä on siis vain Delphin ominaisuus. Mikäli näitä ilmenee lisää, niistä voi ilmoittaa vaikka sähköpostilla, mutta niihin, jotka huomasin, lisäsin asiasta maininnan. | ||
| BlueByte [16.10.2004 13:54:56] | Lainaa | Muokkaa |
| melko oudosti noi taulukot esittelet | ||
| BlueByte [16.10.2004 13:55:37] | Lainaa | Muokkaa |
| muuten noi dynaamiset taulukot ei toiminut dev-pascalissa (kääntäjä freepascal) kun yritin kääntää :( | ||
| muumitalo [19.01.2005 09:44:42] | Lainaa | Muokkaa |
| tuleepas ihan vanhat ajat mieleen :) | ||
| NanoSoft [31.03.2006 00:22:11] | Lainaa | Muokkaa |
| voiko pascalissa muuttuja sisältää muita muuttujia ja mikä niiden "yhdistämismerkki" on? (php:ssä ., vb:ssä & jne.) | ||
| Metabolix [01.04.2006 08:44:54] | Lainaa | Muokkaa |
| Kuten esimerkeistä näkyy (kannattaa lukea opas ennen kommentointia ^^), tekstinpätkiä yhdistellään plus-merkillä.
Luvut ja teksti ovat kaksi eri asiaa, ja niiden keskiset muunnokset eivät ole yhtä suoraviivaisia (näinhän se tapaa useimmissa kielissä olla). Tyypillisesti SysUtils-moduuli sisältää funktiot IntToStr ja StrToInt kokonaislukujen muunnoksiin sekä vastaavat funktiot StrToFloat ja FloatToStr liukulukutyypeille. Mitä mahdat tarkoittaa muuttujilla, jotka sisältävät muita muuttujia? Mitään PHP-tyylistä järjestelmää ei ole ($muuttuja = "toinen" => $$muuttuja = $toinen), koska muuttujien nimet tapaavat hävitä käännösvaiheessa. Osoittimista kerrotaan myöhemmin oppaissa, kunhan pääset sinne asti :) | ||
| Juhko [13.02.2009 21:04:04] | Lainaa | Muokkaa |
| Jätkä, kuin vanha sä olit ku kirjotit nää? o_O
Nimittäin aikas hyviä oppaita. | ||
| Metabolix [14.02.2009 12:13:54] | Lainaa | Muokkaa |
| Juhko kirjoitti: Jätkä, kuin vanha sä olit ku kirjotit nää? o_O Sen voit laskea profiilistani. Kyllähän näistä perusasiat selviävät, mutta totta puhuen olen myöhemmin oppinut paljon uusiakin asioita. Vanhoja oppaita vain on hirveän hankala täydentää luontevasti. | ||
ylläpito Antti Laaksonen, ulkoasu Otto Seiskari